SpringMVC 4.1 新特性(一)JSONP的支持

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

为了启用@ResponseBodyResponseEntity方法的JSONP支持,需声明一个@ControllerAdvice的bean,它扩展了AbstractJsonpResponseBodyAdvice,如下所示其中constructor参数指示JSONP查询参数名称:


  
  
  1. package com.somnus.advice;
  2.  
  3. import org.springframework.core.annotation.Order;
  4. import org.springframework.web.bind.annotation.ControllerAdvice;
  5. import org.springframework.web.servlet.mvc.method.annotation.AbstractJsonpResponseBodyAdvice;
  6.  
  7. /**
  8. * 对使用HttpMessageConverter的@ResponseBody的支持
  9. */
  10. @Order(2)
  11. /* 需要被扫描 */
  12. @ControllerAdvice(basePackages = "com.somnus")//配置你需要路径下的控制器
  13. public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice {
  14. public JsonpAdvice() {
  15. super("callback"); //指定jsonpParameterNames
  16. }
  17. }

  
  
  1. @Controller
  2. @RequestMapping(value = "response")
  3. public class ResponseBodyBindController {
  4.  
  5. @GetMapping(value="responsebodybind3")
  6. @ResponseBody
  7. public Account responsebodybind2(String username,String password){
  8. Account account = new Account(username,password);
  9. System.out.println("responsebodybind3:" + account);
  10. return account;
  11. }
  12. }

这里写图片描述

这里写图片描述

并且值得一提的是,如果你希望可以支持多种参数,都能支持JSONP,构造方法可以设置多个值,如:


  
  
  1. @ControllerAdvice(basePackages = "com.somnus")//配置你需要路径下的控制器
  2. public class JsonpAdvice extends AbstractJsonpResponseBodyAdvice {
  3. public JsonpAdvice() {
  4. super("callback", "jsonp"); //指定jsonpParameterNames
  5. }
  6. }

那么你将惊喜的看到

这里写图片描述

这里写图片描述

 
 
  1. <mvc:view-resolvers>
  2. <mvc:content-negotiation>
  3. <mvc:default-views>
  4. <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
  5. <property name="jsonpParameterNames">
  6. <set>
  7. <value>jsonp</value>
  8. <value>callback</value>
  9. </set>
  10. </property>
  11. </bean>
  12. </mvc:default-views>
  13. </mvc:content-negotiation>
  14. <mvc:jsp prefix="/WEB-INF/views/" suffix=".jsp" />
  15. </mvc:view-resolvers>

   
   
  1. /**
  2. * <p>.json结尾返回json</p>
  3. * <p>.xml结尾返回xml</p>
  4. * @author:Somnus
  5. * @return
  6. */
  7. @RequestMapping(value="viewResolver", method = {RequestMethod.GET})
  8. public ModelAndView viewResolver(){
  9. ModelAndView mv = new ModelAndView();
  10. Account account = new Account();
  11. account.setUsername(WebUtil.getRequest().getParameter("username"));
  12. account.setPassword(WebUtil.getRequest().getParameter("password"));
  13. mv.addObject(account);
  14. mv.setViewName("viewResolver");
  15. return mv;
  16. }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值