본문 바로가기

개발노트/JAVA&JSP

[404 not found] Spring + Ajax + @ResponseBody + json : Ajax의 결과가 404 not found 에러 일 때

오랜만에 신규 프로젝트를 자바(JSP)로 시작하게 되었다.


그런데 한동안 설정이나, 소스를 유심히 들여다보지 못했기 때문에 처음부터 스프링 설정과 Ajax 등 연동을 연습삼아 해봤는데 생각보다 한 방에 되지 않아서 기억나는대로 시행착오 사항 및 해결방법을 정리해봄.


사실 이런 간단한 html form 을 ajax를 이용하여 json으로 보내고, json으로 받아서 전송받은 json을 html로 출력하는 것이 이번 연습의 최종 목표였다.


가장 처음에는 spring의 컨트롤러 클래스, Service 클래스, DAO 클래스, 마이바티스 쿼리 xml, form이 있는 jsp 등 기본 뼈대만 아주 간략하게 만들어 놓고 json 대신 text로 구현해보았다.


여기까지는 문제가 없었다.


JSP에서 Controller로 json 데이터를 보내서 Controller에서 파싱하는 것은 jackson 라이브러리의 ObjectMapper 클래스를 이용하여 금방 해결하였으나 이상하게 Controller에서 HashMap<String, Obejct> 타입으로 리턴하는데 JSP의 ajax 실행결과가 error, 404, not found 였다. @ResponseBody 가 빠졌는지도 확인해봤지만 json으로 보내지지 않은 것 같았다.


구글링한 결과 대부분 꽤 다양한 종류의 MessageConverter를 spring의 controller로 사용하는 xml 파일에 기술해야한다는 것이었다.


그렇게 해도 되고,


아주 간편하게 스프링의 자주 사용하는 대부분의 어노테이션과 관련된 처리를 기술하는 법이 있었다.


	<!-- Enables the Spring MVC @Controller programming model -->
	<mvc:annotation-driven />

여기 안에는 MessageConverter 가 포함되어 있어서 위 한줄을 스프링 설정 파일에 기술해놓으면 ResponseBody에 HashMap 타입을 json으로 변환하여 전송이 가능해진다.



결과적으로 ajax 결과가 error, 404 not found 일 경우, spring 설정을 다시 한 번 보자...





참고 자료? 

http://toby.epril.com/?p=989

http://stackoverflow.com/questions/8162459/what-does-mvcannotation-driven-do

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html