2013년 8월 19일 월요일

ajax post - spring mvc

getJSON(http://api.jquery.com/jQuery.getJSON/)을 사용하는 것과 .ajax를 사용할 때 약간 다른 부분이 있어서 노트삼아 남겨놓는다.


1. Java Script 부분
 var inData = "data = data for sending"; 
$.ajax({
type:"POST",
url:"mypage",
//dataType : "json",
data: inData,
error: function(data) {
alert("FAIL");
},
success: function(data) {
handling data part
}
});
2. Controller 부분
@RequestMapping(value = "/mypage", method=RequestMethod.POST)
@ResponseBody
public List<Object> makeReport(HttpServletRequest req) {
logger.info("Displaying Page is AD");
string data = new String(req.getParameter("data"));
List<Object> data = (new SelectByDate().findFromByDate(data));
return data;
}

그냥 여러 군데를 참조하면서 배운것은 type을 통일시키고, url을 맵핑시키면 ajax요청은 문제없다는 것이다.
그리고 요청의 반환값은 여기서는 @ResponseBody를 이용해 Object의 리스트를 바로 넘겨줬지만 @ResponseBody없이 String 값을 넘겨줘도 된다.
여기서는 Object의 리스트를 넘겨주면 servlet 설정 파일에서 MappingJacksonHttpMessageConverter를 이용해서 JSON형식으로 변환시키도록 했다.
String 값을 바로 넘기면 JSON형식으로 String을 만들어서 넘기면 된다.
그냥 String을 넘기면 나는 주소값처럼 매핑시키려는 오류가 났는데 아직 원인과 해결 방법은 모르겠다.. ㅠ
post형식으로 요청시에 데이터를 넘길때는 '데이터이름=데이터값' 형식으로 저장한 후 HttpServletRequest를 통해 접근하는게 편하다. 여러가지 방법이 많이 있었다.
.ajax의 문법을 알아두면 나중에 요긴할 것 같다.

참조:
http://static.springsource.org/spring/docs/3.2.x/javadoc-api/org/springframework/web/bind/annotation/RequestBody.html
http://babtingdev.tistory.com/194
http://static.springsource.org/spring/docs/4.0.x/spring-framework-reference/html/jdbc.html#jdbc-JdbcTemplate
http://freesora.tistory.com/91
http://nanstrong.tistory.com/182
http://api.jquery.com/jQuery.post/
http://windvoice.tistory.com/51
http://blog.naver.com/jaeik714?Redirect=Log&logNo=140192129518

댓글 없음:

댓글 쓰기