관리 메뉴

드럼치는 프로그래머

[AJAX] ajax에서 @ResponseBody이게 중요한이유... 본문

★─Programing/☆─WebProgram

[AJAX] ajax에서 @ResponseBody이게 중요한이유...

드럼치는한동이 2016. 5. 24. 09:07

LoginController.java

@Controller
public class LoginController {
 
 @Autowired
 //membersVO membersVO;
 membersDAO membersDAO;
 
 private static final Logger log = LoggerFactory.getLogger(MembersController.class);
 
 @RequestMapping(value = "/login.do")
 @ResponseBody
 public String members(@RequestParam(value = "id", required = false) String id,

                                  @RequestParam(value = "pw", required = false) String pw){
    
  HashMap<String, String> hstParam = new HashMap<String, String>();
  hstParam.put("member_id", id);
  hstParam.put("member_password", pw);
    
  String loginIdentify = membersDAO.loginIdentify(hstParam);
  
  log.info("insert성공");

  return loginIdentify;
 }

 

 

 

login.jsp

 

function loginCheck(){
 
  var param = "id" + "=" + $("#id").val() + "&" +"pw" + "="+ $("#pw").val();
  
//   alert(param);
  $.ajax({
   url : "/login.do",
   type : "GET",
   data : param,
   cache : false,
   async : false,
   dataType : "text",
 
   success : function(response) {        
    if(response=='1')
    {
     alert("로그인 해줄게요. 기다리세요.")
    }
    else
    {
     alert("아이디 또는 비번이 틀렸습니다. 다시 입력하세요.")
     return false;
    } 
    
    alert(check);
   },
   error : function(request, status, error) {
    if (request.status != '0') {
     alert("code : " + request.status + "\r\nmessage : "
       + request.reponseText + "\r\nerror : " + error);
    }
   }
 
  });
 } 

 

 

보면 jsp에서 loginCheck() 함수를 부르면 login.do의  url로 간다. ajax는 화면깜빡임이 없이 데이터를 가지고으는건데 ..

login.do를 찾아가면 보면 @ResponseBody가 없다면 그url은 그냥 String일뿐이라도 return값이 string.jsp로 그경로를 찾아가는거 같다. 그래서 @ResponseBody를 써줘야 ajax가 원하는 데이터를 가져와서 success시 쓰는것 같다.

 

http://localhost:8080/login.do?id=1&pw=1&_=1375950714759 404 (Not Found) 

 

이런 오류가 뜬다 .. 보면 로그인을 버튼을 눌러서 위에 함수 loginCheck()를

 

 클릭하고 data를 ajax로 가져와서 success에 뿌려야하는데 그 값을 못가져

 

와서 error로 가는 거 같다. 지금 로그인 창만들고있는데 회원가입부터 이거

 

때문에 고생했다.. 여튼 ajax를 써서 dataType를 json으로 가져오던가 text로

 

가져오던가 할때는 꼭 메소드에

 

@ResponseBody를 써주자 .



참고 : http://lsk925.tistory.com/33


[출처] http://lsk925.tistory.com/32

Comments