spring 视图1-json视图

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")
	@ResponseBody
	public 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    免积分

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值