读书人

Ext跟springMVC结合实现json数据传输

发布时间: 2013-01-08 14:02:14 作者: rapoo

Ext和springMVC结合实现json数据传输
第一种方式,使用springMVC内置的json支持
1.首先导入jackson的两个包jackson-core-lgpl-1.2.1.jar和jackson-mapper-lgpl-1.2.1.jar,后面附上了这两个包,可以下载。
2.配置springMVC的配置文件

<!--<mvc:annotation-driven/> --><!-- 这样配置的目地是了支持json数据的转换 --><bean/><beanname="code">var schemaEnNameStore = new Ext.data.Store({proxy : new Ext.data.HttpProxy({url : '/ext_project/metaTable.action?method=querySchemaEnName',type : 'ajax'}),reader : new Ext.data.JsonReader({root : 'root',type : 'json'}, [{name : 'schemaEnName',mapping:'param'}]),autoLoad : false});

4.后台controller处理并返回数据
@RequestMapping(params = "method=querySchemaEnName")@ResponseBodypublic Object handleQuerySchemaEnName() {try {List<ParamDto> schemaEnNameList = metaTableService.querySchemaEnNameTotal();Map<String,Object> map = new HashMap();map.put("root", schemaEnNameList);map.put("success", true);return map; } catch (Exception e) {e.printStackTrace();}return null;}


第二中方式,比较简单和原始

1.前台请求数据
var tableEnNameStore = new Ext.data.JsonStore({url : '/ext_project/metaTable.action?method=queryTableEnName',root : 'root',fields : [{name : 'tableEnName',mapping:'param'}],autoLoad : false})

2.后台处理并返回,使用JSONObject

@RequestMapping(params = "method=queryTableEnName")public void handleQueryTableEnName(HttpServletRequest req,HttpServletResponse response){try{String schemaEnName = req.getParameter("schemaEnName");List<String> list = metaTableService.queryTableEnNameBySchEnName(schemaEnName);List<ParamDto> tableEnNameList = new ArrayList();Iterator iterator = list.iterator();while(iterator.hasNext()){ParamDto pDto  = new ParamDto();pDto.setParam((String)iterator.next());tableEnNameList.add(pDto);}Map<String,Object> map = new HashMap();map.put("root",tableEnNameList);map.put("success", true);JSONObject obj = JSONObject.fromObject(map);PrintWriter writer = response.getWriter();writer.print(obj.toString());}catch(Exception e){e.printStackTrace();}}

第三种方式
springMVC的MappingJacksonJsonView借助Jackson框架的ObjectMapper将模型数据转换为JSON格式输出,由于MappingJacksonJsonView也是一个bean,可以通过BeanNameViewResolver进行解析,因此须在配置文件中配置:
bean id="userListJson" calss="org.springframework.web.servlet.view.json.MappingJacksonJsonView" p:renderedAttributes="userList"/>

默认情况下,MappingJacksonJsoView会将所有的数据都输出为json,这显然是不合适的,你可以通过renderedAttributes指定模型中哪些属性需要输出。
在controller中添加一个返回userListJson的逻辑视图的方法:
@requestMapping()public String **(ModelMap map){List<User> list = new ArrayList<User>();map.addAttribute("userList",list);return "userListJson"}    

这是我个人比较喜欢使用的几种方式,当然还有其他的很多方式,大家可以自己查查资料

读书人网 >JavaScript

热点推荐