SpringMVC 返回json的两种方式(2)

使用对象转化为Json的相关jar包,一般来说使用的时json-lib,实际上类似的框架和技术还有很多,比如上面的jackson就能做,不过笔者习惯于使用json-lib,使用起来会更方便和顺手一点。

maven:   

<!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib --> <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> </dependency>

2:Spring 配置:无

3:后台:

@RequestMapping("/page") public ModelAndView returnView(){ ModelAndView mv = new ModelAndView(); mv.setViewName("showJson"); Entity entity = new Entity("chentao","a handsome man"); JSONObject entityJson = JSONObject.fromObject(entity); mv.addObject("entityJson",entityJson); return mv; }

关键是JSONObject.fromObject()方法。

4:前台:

<script> var json = ${entityJson}; alert(json); </script>

注意这里的El表达式写法${entityJson},浏览器在进行渲染之前,tomcat已经将${entityJson}替换为json字符串。这个时候json直接就是一个可以使用的对象而不再需要进行转化

结果如下;

SpringMVC 返回json的两种方式

注意,这种方式只有在jsp页面中才有效果,如果不是jsp页面,只能乖乖使用第一种方式了。

三、总结

    @Response注解的方式   返回ModelAndView方式  
优点   编写简单;适合当前ajax方式;   更加灵活,页面和数据一同返回。  
缺点   灵活性不足  

需要手动转化json;

前台接受数据只能用在jsp页面里。

 
实现要点   @ResponseBody;jackson-jar包;ajax;   JsonObject.fromObject();El表达式:${}.  
           

四、扩展

本文档使用的是SpringMVC框架,实际上第一种方式本质上是使用Response的writer对象来传递数据,而第二种方式使用request传递数据。所以如果使用原生servlet或者其他框架也是能够实现类似的功能的。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/5189a51c914f8f8d3acd3180ac5b1cfb.html