spring 视图1-json视图

来源:互联网 发布:sql2012还原数据库 编辑:程序博客网 时间:2024/05/21 12:43

spring3.0后的 mvc框架中,可以实现了视图模板,通过配置,我们可以轻松的生成jsp,xml,json,Excel 等格式,本文主要记录xml,json和Excel

 

                   首先增加 配置 如下,可以根据bean 的name属性查找配置,否则默认为jsp的视图

<!-- 视图解析器,根据视图的名称new ModelAndView(name),在配置文件查找对应的bean配置 --><bean class="org.springframework.web.servlet.view.BeanNameViewResolver">        <property name="order" value="1"/></bean>

 

     json  视图,通过json-lib-2.4-jdk15.jar ,实现json数据视图

        需要jar包  json-lib-2.4-jdk15.jar,commons-lang-2.6.jar,commons-beanutils.jar 

下载页 http://download.csdn.net/download/meililiuwei/7058145

                 spring.xml  需增加配置 

<!-- 转化 java对象成json,处理hibernate延迟加载  --><bean id="cfg" class="net.sf.json.JsonConfig"><property name="excludes"><value>handler,hibernateLazyInitializer</value></property></bean><!-- 使用 json-lib 转换java对象 成 json --><bean name="jsonLibView" class="com.common.view.SpringJsonLibView"> <property name="contentType" value="text/html;charset=UTF-8"/> <property name="encodeing" value="gbk"/> <property name="cfg" ref="cfg"></property></bean>


           视图文件SpringJsonLibView ,需要继承  spring 视图抽象类 AbstractView,实现抽象方法

public void renderMergedOutputModel(Map<String, Object> model,HttpServletRequest req, HttpServletResponse res) throws Exception {}

 

          SpringJsonLibView  文件内容

 

package com.common.view;import java.io.PrintWriter;import java.util.HashMap;import java.util.Map;import java.util.Set;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import net.sf.json.JSON;import net.sf.json.JSONSerializer;import net.sf.json.JsonConfig;import org.springframework.util.CollectionUtils;import org.springframework.validation.BindingResult;import org.springframework.web.servlet.view.AbstractView;public class SpringJsonLibView extends AbstractView {private static final String default_content_type = "application/json";private static final String default_char_encoding = "UTF-8";private String encoding = default_char_encoding;private Set<String> renderedAttributes; private JsonConfig cfg = null;public void setEncodeing(String encoding) {this.encoding = encoding;}public void setCfg(JsonConfig cfg) {this.cfg = cfg;}public SpringJsonLibView() {setContentType(default_content_type);}public void renderMergedOutputModel(Map<String, Object> model,HttpServletRequest req, HttpServletResponse res) throws Exception {model = filterModel(model);JSON json = null;if(model.size() ==1){ Set keyset = model.keySet(); json = JSONSerializer.toJSON(model.get(keyset.toArray()[0]), cfg);}else{ json = JSONSerializer.toJSON(model, cfg);}res.setContentType(getContentType());req.setCharacterEncoding(encoding);PrintWriter printwriter = res.getWriter();printwriter.println(json);System.out.println("视图转换json=="+json);printwriter.flush();printwriter.close();}protected Map<String, Object> filterModel(Map<String, Object> model) {Map<String, Object> result = new HashMap<String, Object>(model.size());Set<String> renderedAttributes = !CollectionUtils.isEmpty(this.renderedAttributes) ? this.renderedAttributes: model.keySet();for (Map.Entry<String, Object> entry : model.entrySet()) {if (!(entry.getValue() instanceof BindingResult)&& renderedAttributes.contains(entry.getKey())) {result.put(entry.getKey(), entry.getValue());}}return result;}}



spring 控制器 control  代码

@RequestMapping(value = "/test/json")@ResponseBodypublic ModelAndView showJson() {System.out.println("转化json开始");ModelAndView model = new ModelAndView("jsonLibView");Tac20 ac20 = new Tac20();ac20.setAab001(1234L);ac20.setAac013("kankan");Tac01 ac01 = new Tac01();ac01.setAac003("名字");ac20.setAc01(ac01);model.addObject(ac20);TJM01 jm = new TJM01();jm.setAac001(1l);jm.setAac003("张1");jm.setAac004("男1");model.addObject(jm);JSONObject json = JSONObject.fromObject(ac20);System.out.println("json手动转化===" + json);return model;}@RequestMapping(value = "/test/list/json")public ModelAndView showListJson() {System.out.println("转化json开始");ModelAndView model = new ModelAndView("jsonLibView");TJM01 jm = new TJM01();jm.setAac001(1l);jm.setAac003("张1");jm.setAac004("男1");TJM01 jm2 = new TJM01();jm2.setAac001(2l);jm2.setAac003("张2");jm2.setAac004("男2");List list = new ArrayList();list.add(jm);list.add(jm2);model.addObject(list);JSONArray json = JSONArray.fromObject(list);System.out.println("json手动转化===" + json);return model;}


jsp  页面

 <a href="<%=path%>/test/json.do">json转化</a> <a href="<%=path%>/test/list/json.do">json-list转化</a>
json转化 结果
{"TJM01":{"aac001":1,"aac003":"张1","aac004":"男1","aac006":0,"aac007":0},"tac20":{"aab001":1234,"aac001":0,"aac013":"kankan","aac031":"","aac066":"","aae030":0,"aae031":0,"aaz157":0,"ac01":{"aac001":0,"aac003":"名字","aac004":"","aac006":0,"aac007":0,"tac20s":[]},"ae10":null}} 


json-list转化

[{"aac001":1,"aac003":"张1","aac004":"男1","aac006":0,"aac007":0},{"aac001":2,"aac003":"张2","aac004":"男2","aac006":0,"aac007":0}] 



 

 jar下载页 http://download.csdn.net/download/meililiuwei/7058145    免积分

 

 

 

 

 

 

 

 

 

 

 

0 0