spring mvc处理json

一、pom.xml中加入依赖的jar包(在此感谢osc提供的maven仓库)

<!-- json -->
<dependency>
  <groupId>org.codehaus.jackson</groupId>
  <artifactId>jackson-core-asl</artifactId>
  <version>1.9.13</version>
</dependency>

<dependency>
  <groupId>org.codehaus.jackson</groupId>
  <artifactId>jackson-mapper-asl</artifactId>
  <version>1.9.13</version>
</dependency>

Jquery/Jquery UI中如下这样调用
function openEditDialog(id) {
	$.get("roll/update/" + id + ".json?ts="+ new Date().getTime(), function(data) {
		var t = data['roll'];
		var keys = [ 'id', 'serialNo', 'idNo', 'period', 'realName', 'tel',
						'email', 'address', 'birth', 'password' ];
		for ( var i = 0; i < keys.length; i++) {
			var key = keys[i];
			$("#" + key).val(t[key]);
		}

		$("#roll_dialog").dialog('open');
		$('.ui-button:contains("save")').show();
		$('.ui-button:contains("add")').hide();
	}, "json");
}
比如新增用roll/create.json,修改用roll/update/1.json (规则很简单,就是在原有REST风格的url后面拼上.json)

Controller中的代码,非常简单,试了一下,以下两种都可以。我会选第1种,更简单!
网上写的@ResponseBody啥的都不用。。
@RequestMapping("update/{id}")
public void update(Model model, @PathVariable("id") Long id) {
	Lecturer roll = lecturerService.findLecturerById(id);
	model.addAttribute("roll",roll);
}

@RequestMapping("update/{id}")
public ModelAndView update(@PathVariable("id") Long id) {
	ModelAndView mv = new ModelAndView();
	Lecturer roll = lecturerService.findLecturerById(id);
	mv.addObject("roll","roll");
	return mv;
}
addAttribute/addObject的时候如果不写key比如这里如果不写"roll",则返回的json对象的key是这个对象的类型名(比如这里默认将会是lecturer)



最后是mvc.xml的配置(一劳永逸)

<bean
	class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
	<!-- 设置为true以忽略对Accept Header的支持 -->
	<property name="ignoreAcceptHeader" value="true" />
	<!-- 在没有扩展名时即: "/user/1" 时的默认展现形式 -->
	<property name="defaultContentType" value="text/html" />
	
	<!-- 扩展名至mimeType的映射,即 /user.json => application/json -->
	<property name="mediaTypes">
		<map>
			<entry key="html" value="text/html"/>    
			<entry key="json" value="application/json" />
			<entry key="xml" value="application/xml" />
		</map>
	</property>
	<!-- 用于开启 /userinfo/123?format=json 的支持,false为关闭之,我更喜欢.json的方式,因为可以少敲几次键盘 -->
	<property name="favorParameter" value="false" />
	<property name="viewResolvers">
		<list>
			<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
				<bean
					class="org.springframework.web.servlet.view.InternalResourceViewResolver">
					<property name="prefix" value="/WEB-INF/jsp/"></property>
					<property name="suffix" value=".jsp"></property>
				</bean>
		</list>
	</property>
	<property name="defaultViews">
		<list>
			<!-- for application/json -->
			<bean
				class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
		</list>
	</property>
</bean>

最后是效果
spring mvc处理json_第1张图片



你可能感兴趣的:(spring,json,mvc)