ajax @ResponseBody없이 json 처리

2016. 3. 8. 22:51plming/Java - Spring

@ResponseBody Annotation을 사용하게 되면

Controller에서 return "json결과"; 하는 경우

json으로 "json결과" 라는 String 을 받게된다.

 

Y/N 식의 단발성 DATA라면 관계 없지만

여러개의 결과값을 받고자 한다면

Map식의 결과를 받는 것이 좋다.

 

이럴 때 사용할 수 있는 방법이다.

 

 

* xxHTML.jsp 의 경우

 

$.ajax( {
    type : "post",
    url : "/xxProc.do",
    data : $("#formid").serialize(),
    dataType : "json",
    success : function( data ) {
        if( "Y" == data.result ) {
            alert( data.message );
        }
    }
} );

 

* xxController.java 의 경우

 

@Controller
public class xxController {

   @RequestMapping( value = "/xxProc.do" )
   public ModelAndView xxProc( xxVO xxxVO, ModelMap model ) throws Exception {
      model.put( "result", "Y" );

      model.put( "message", "OK" );

   return new ModelAndView( "jsonV", model );

}

 

 

이렇게 처리하기 위해 기본 설정이 필요하다.

 

* web.xml

  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/config/dispatcher-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

 

* dispatcher-servlet.xml

<bean id="beanNameResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver" p:order="0" />

<bean id="jsonV" class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">

   <property name="contentType" value="application/json;charset=UTF-8"></property>

</bean>

 

* pom.xml

  <dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-databind</artifactId>
   <version>2.5.1</version>
  </dependency>

 

'plming > Java - Spring' 카테고리의 다른 글

Interceptor 설정할 때 주의할 점  (0) 2016.04.07
redirect시 POST방식 Attribute 전달하기  (0) 2016.03.15
전자정부프레임워크(egov) 파일업로드  (1) 2015.10.06
Excel Upload  (1) 2010.12.20
ORM (Object Relation Mapping)  (0) 2010.09.12