在Spring MVC 3.2实现JSONP(Implementing JSONP in Sprin

2019-08-17 09:32发布

据我所知,自定义过滤器可以在Spring MVC的早期版本被用来实现JSONP。 此外本实施例中描述了通过扩展实施JSONP在Spring MVC 3.1的方法MappingJacksonHttpMessageConverter类和修改域对象。

是否有解决JSONP在Spring MVC 3.2除使用上述方法更简单(或常规)的方法? 我没有看到JSONP春3.2文档无法解决的。

Answer 1:

像这样简单的方法

@RequestMapping(value = "/jsonp", method = RequestMethod.GET)
@ResponseBody
public String jsonp(@RequestParam("c")String callBack) throws Exception{
    ObjectMapper objectMapper = new ObjectMapper();
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("data", "<p>jsonp data<p>");
    return objectMapper.writeValueAsString(new JSONPObject(callBack,map));
}


Answer 2:

随着春天4.1,你可以用@ControllerAdvice做到这一点真的很简单

https://spring.io/blog/2014/07/28/spring-framework-4-1-spring-mvc-improvements



Answer 3:

您只需Bhagya席尔瓦使用弹簧JSONP支持为你的项目的依赖。

https://github.com/bhagyas/spring-jsonp-support

更多信息可在README.md文件。



Answer 4:

我一直在寻找的JSONP方法更简单,OOB方式(JSONP / CORS应内置IMO ......不需要任何自定义代码)......从来没有发现任何...但与Spring团队伸出之后,原来, JSONP现在通过支持OOB在4.0.5 MappingJacksonJsonView和内置支持CORS到跟随其后。



Answer 5:

下面是处理这种情况的最简单方法

   @GET
    @Path("/jsonp")
    @Produces("application/json")
    public Response jsonp(@QueryParam("data") String json, 
            @QueryParam("callback") String callBack     
            @Context HttpServletRequest request) throws Exception { 

     String jsonResponse= "{ \"sttaus\" :\"some data\" }";
     try{ 
        .. // do your business logic      

     }catch(Exception e){ ... }

     return Response.status(201).entity(callBack+"("+jsonResponse+")").build(); 
   }


文章来源: Implementing JSONP in Spring MVC 3.2