jQuery $.ajax 을 이용한 JSON 형식 사용하기 ( Spring, Servlet )
jQuery Ajax를 이용하고, JSON을 이용하는 방법.
2가지 방법이 있습니다. jsonView를 이용하는 방법과 PrintWriter를 이용하는 방법
이렇게 2가지를 설명하겠습니다.
일단 첨부된 압축 파일을 다운 받아 lib 폴더에 추가 시킨다.
을 프로젝트 내에 lib 등록하는 곳에 등록 시킨다.
나는 이클립스를 안쓰고 IntelliJ를 쓰기 때문에 스샷은 생략하겠음.
lib를 추가시키면
이제 소스 차례.
일단 servlet-context.xml에서 아래와 같이 문구를 삽입한다.
—————————— html 소스 ————————————————–
jQuery 부분
$.ajax({ type : “post” , //post , get url : “/company/CompanySearch”, // url data : “selectCondition=”+selectCondition + “&selectText=”+searchText, //파라메터값 dataType : “json”, //data 형식 text, html, json //contentType : “application/x-www-form-urlencoded; charset=UTF-8”, success : function(data){ // 성공시 data값. for(var i=0; i<data.list.length; i++){ alert(data.list[i].searchText); // 성공한 data.이름[i].JsonKey }
}, error : function(request, status, error) {
//통신 에러 발생시 처리
alert(“code : “ + request.status + “\r\nmessage : “ + request.reponseText +” \r\n error : “ + error);
}
})
이렇게 선언해 준다.
printWriter 방법. 일단 여기서 가장 중요한건 Json.jar를 파일을 추가한뒤
JsonObejct와 JsonArray를 사용 할 수 있습니다.
여기에선 JsonObject를 사용하겠습니다.
일단 준비해야되는건 list객체에 Map형식으로 Data를 담아둬야 합니다.
ibatis에서 했기 때문에
쿼리 부분에서
이렇게 하면 맵형식으로 담아지게 됩니다.
—————————– DAO 부분 —————————————
List list = getSqlSession().selectList(“xxx”,jjj); // 요렇게하면 맵형식으로 들어가 집니다.
——————————-service 영역 ————————————
받은걸
List list = dao.메소드명(param); JSONObject obj = new JSONObject();
obj.put(“list”,list);
return obj;
하여 컨트롤러 쪽으로 보냅니다
JSONObject를 찍어보면 알수 있습니다. obj.toJSONString() 이런 함수가 있으니 찍어보세요.
——————————— Controller ——————————–
@RequestMapping(“/주소”) public String 메소드명(HttpServletRequest request, HttpServletResponse res)throws Exception{
JSONObject obj = service.메소드명(req);
받은 obj를
res.setCharacterEncoding(“UTF-8”);
PrintWriter pout = res.getWriter();
pout.println(obj);
pout.flush(); pout.close();
return “company/CompanyL.tl”;
/********* 12.09.27 추가 ***************/
서블릿에서 위와 같이 실행하면
java.lang.IllegalStateException: Cannot forward after response has been committed
이런 에러가 콘솔에 찍히는데 제대로 실행된다. 하지만 없에는 방법은 간단하다.
pout.flush(); pout.close(); 이후
return; 만 써주면 된다 ㅋㅋ
/****************************/ 찍고
저흰 경로를 보내야되서 경로로 보내면
obj안에 list란 키로 되어있는 searchText란 값을 찍어주게 됩니다.
요 방법이 있고 그 다음은 JSONView 차례 입니다.
jsonView 사용 법
위에 jsonObject를 이용하여 하는 방법과 좀 다르다.
jsonView는 JSONObject를 사용하지 않는다.
사용방법은 java스크립트는 위와 동일하며, 서비스단에서 리턴 형식을 list로 그냥 넘겨주면 된다. 아까는 JsonObject에 담 았었다.
DAO (list Map) -> Service (List) -> Controller (jsonView) 이렇게 된다.
@RequestMapping("/주소") public ModelAndView 메소드명(HttpServletRequest request, HttpServletResponse res)throws Exception{ List list = service.selCompanySearchValue(req); ModelAndView mav = new ModelAndView(“jsonView”,”list”,list);
return mav; 이러면 아까와 같은 자바스크립트로 제이슨형식으로 들어있는 데이터를 다시 한번 확인해 볼 수 있다.
//12.09.27
추가적으로 예제 소스도 같이 올림
정확하진 않지만
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
모드에서는 오류납니다.
overflow 부분 찾으셔서 auto로 되어있는 것을 scroll로 바꿔주시면 됩니다.
—————————————- 2013.02.01 —————————————-
spring 3.0 tiles를 사용하시는 분들에게 팁.
<bean id=”beanNameViewReslver” class=”org.springframework.web.servlet.view.BeanNameViewResolver”>
이렇게 해주셔야 정상 작동 합니다.

