Spring MVC之返回JSON数据

我们在本示例中,使用Spring3.0 MVC, Spring 3.0 MVC已经支持JSON了。

这里我们使用基于注解的方式,也是springMVC 3.0所支持的RESTFul风格的。

1.首先加入两个jar依赖,这里以maven构建为例:

<dependency>

<groupId>org.codehaus.jackson</groupId>

<artifactId>jackson-core-asl</artifactId>

<version>1.8.4</version>

</dependency>

<dependency>

<groupId>org.codehaus.jackson</groupId>

<artifactId>jackson-mapper-asl</artifactId>

<version>1.8.4</version>

</dependency>

这是spring MVC处理json数据时,所必须的jar依赖。

2.在spring mvc的配置文件中加入配置 

这里我们使用的是spring mvc的注解,如例:

Xml代码  收藏代码

  1. <context:component-scan base-package="com.hundsun.twioo.business.action" />  

  2. <bean class="org.springframework.web.servlet.mvc.annotation.  

  3.     DefaultAnnotationHandlerMapping" />  

  4. <bean class="org.springframework.web.servlet.mvc.annotation.  

  5.     AnnotationMethodHandlerAdapter" >  

  6.     <property name="messageConverters">  

  7.         <util:list id="beanList">  

  8.             <ref bean="mappingJacksonHttpMessageConverter"/>  

  9.         </util:list>  

  10.     </property>  

  11. </bean>  

  12. <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.  

  13.     http.converter.json.MappingJacksonHttpMessageConverter">  

  14.     <property name="supportedMediaTypes">  

  15.         <list>  

  16.             <value>text/html;charset=UTF-8</value>  

  17.         </list>  

  18.     </property>  

  19. </bean>  

  20. <context:annotation-config/>  

注意:org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter的Bean配置中,我们加入了messageConverters属性,在该属性中我们有配置mappingJacksonHttpMessageConverter这个Bean,它就是用来处理json数据转换的。

在mappingJacksonHttpMessageConverter的Bean配置中,我们有一个supportedMediaTypes属性,在这个属性

中我们添加了text/html;charset=UTF-8这个值,它是为了处理返回的json数据的编码,默认是ISO-88859-1的,这里我们把它设置为UTF-8,如果有乱码的情况,我们只需要修改这里就可以了。

3.控制器Controller上的注解使用

如例:

Java代码  收藏代码

  1. @Controller   

  2. @RequestMapping("/logins")  

  3. public class LoginController {  

  4.   

  5.     @Autowired  

  6.     private LoginManagerService loginManagerService;  

  7.     @Autowired  

  8.     private PermitManagerService permitManagerService;  

  9.     private Logger log = Logger.getLogger(LoginController.class);  

  10.       

  11.       

  12.     /** 

  13.      * 用户登录系统 

  14.      * @return  

  15.      */  

  16.     @RequestMapping(value="/login")  

  17.     public ModelAndView login(HttpServletRequest request,HttpSession session){  

  18.           

  19.         User user = null;  

  20.         List<Module> moduleList = null;  

  21.         try {  

  22.             //TwiooID  

  23.             Integer twiooId = ServletRequestUtils.getIntParameter(request, "twiooId");   

  24.             //群ID  

  25.             Integer groupId = ServletRequestUtils.getIntParameter(request, "groupId");   

  26.             user = loginManagerService.login(twiooId, 3);  

  27.             if(null != user){  

  28.                 moduleList = permitManagerService.findPermit(user.getId());  

  29.             }  

  30.             session.setAttribute("user", user);  

  31.             session.setAttribute("permit", moduleList);  

  32.             session.setAttribute("twiooId", twiooId);  

  33.             session.setAttribute("groupId", groupId);  

  34.         } catch (Exception e) {  

  35.             e.printStackTrace();  

  36.             log.error("LoginController.login() execute error!!!");  

  37.         }  

  38.         System.out.println("login...................");  

  39.         return new ModelAndView("index");  

  40.     }  

  41.       

  42.       

  43.     /** 

  44.      * 用户退出系统 

  45.      * @return 

  46.      */  

  47.     @RequestMapping(value="/exit")  

  48.     public ModelAndView exit(HttpServletRequest request,HttpSession session){  

  49.           

  50.         session.removeAttribute("user");  

  51.         session.removeAttribute("permit");  

  52.         session.removeAttribute("twiooId");  

  53.         session.removeAttribute("twiooId");  

  54.         System.out.println("exit....................");  

  55.         return new ModelAndView("index");  

  56.     }  

  57.       

  58.       

  59.     /** 

  60.      * 测试返回JSON数据 

  61.      * @param session 

  62.      * @return 

  63.      */  

  64.     @RequestMapping(value="/test")  

  65.     @ResponseBody  

  66.     public Object test(HttpSession session){  

  67.           

  68.         System.out.println("test....................");  

  69.         return session.getAttribute("permit");  

  70.     }  

  71.       

  72.       

  73.   

  74.     public LoginManagerService getLoginManagerService() {  

  75.         return loginManagerService;  

  76.     }  

  77.     public void setLoginManagerService(LoginManagerService loginManagerService) {  

  78.         this.loginManagerService = loginManagerService;  

  79.     }  

  80.     public PermitManagerService getPermitManagerService() {  

  81.         return permitManagerService;  

  82.     }  

  83.     public void setPermitManagerService(PermitManagerService permitManagerService) {  

  84.         this.permitManagerService = permitManagerService;  

  85.     }  

  86. }  

注意:test()方法上,我们使用了一个@ResponseBody的注解,Spring3.0 MVC @ResponseBody的作用是把返回值直接写到HTTP response body里。 test()这个方法就是我们这里关注的地方,它就是返回json数据到客户端去的。还要注意,这个test()方法返回的是Object(这里可以是任意类型),而不ModelAndView。 


你可能感兴趣的:(spring,学习笔记)