首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > CSS >

SpringMVC中内容协商【一致资源多种展现json xml html】

2013-09-18 
SpringMVC中内容协商【统一资源多种展现json xml html】?2、使用扩展名称?? 丧失了同一url多种展现的方式,但

SpringMVC中内容协商【统一资源多种展现json xml html】

?

2、使用扩展名称

?? 丧失了同一url多种展现的方式,但现在这种在实际环境中是使用比较方便的。

3、使用Request Header中Accpet

?? 这种方式是最理想的,但如果你的资源要给用户直接通过浏览器访问(即html展现),那么由于浏览器的差异,发送上来的Accept Header头将是不一样的.?将导致服务器不知要返回什么格式的数据给你. 下面是浏览器的Accept Header:

Chrome:


SpringMVC中内容协商【一致资源多种展现json xml html】
?

Firefox:


SpringMVC中内容协商【一致资源多种展现json xml html】
?

IE9:


SpringMVC中内容协商【一致资源多种展现json xml html】
?我们使用第一种方式和第二种方式,在Spring中如何让配置

?

二、SpringMVC配置

?? 现spring完成内容协商(content negotiation)的工作是由ContentNegotiatingViewResolver来完成的。

它的工作模式支持我上面讲的三种,ContentNegotiatingViewResolver是根据客户提交的MimeType(如 text/html,application/xml)来跟服务端的一组viewResover的MimeType相比较,如果符合,即返回viewResover的数据。
而 /userController/getUser.xml, ContentNegotiatingViewResolver会首先将 .xml 根据mediaTypes属性将其转换成 application/xml,然后完成前面所说的比较。

?

1、我们看下ContentNegotiatingViewResolver的配置:

?我们在创建User对象

?

?我们的控制层很简单的

?

?中false修改为true

?

我们再次在浏览器中输入:http://localhost:8080/SpringMVC/userController/getUser?format=json

?结果是:

?

2、重载MappingJacksonJsonView

? 我们在返回JSON格式的数据时,发现并不是我们常见的json。?也就是我们期望的返回是{success:true,message:”return ok”};? 但实际返回的却是 {"jsonResult":{"success":true,"msg":"return ok"}}
原因是MappingJacksonJsonView中对返回值的处理未考虑modelMap中只有一个值的情况,?直接是按照mapName:{mapResult}的格式来返回数据的。

?替换为我们刚修改的

{"username":"wy","password":"123","age":123,"sex":"male","birthday":"2013-09-10"}

?

?参考:http://badqiu.iteye.com/blog/552806

热点排行