zoukankan      html  css  js  c++  java
  • Spring MVC json配置

    接口类的Controller,一般返回的是json数据,而Spring MVC中默认返回的string,而jsp页面的话,会按配置中自己行匹配转义字符串为对应的jsp文件。

    @Controller
    @RequestMapping("/user")
    public class UserController {
    
    	@RequestMapping(value = "/add", method = RequestMethod.GET)
    	@ResponseBody
    	public User addUser() {
    		User obj = new User();
    		obj.setId("321");
    		obj.setName("test");
    		return obj;
    	}
    }
    

     注意红色部分,@ResponseBody标识返回的是纯内容,如返回值是string的话,浏览器端会得到一个string,而不是去匹配相应的jsp文件。

    我们返回的是json,所以@ResponseBody是必需的。

    然后User是我们要序列化为json的对象,相应的转换由spring利用jackson在框架中进行。

    接着看配置。

    	<!-- 配置自动扫描的包 -->
    	<context:component-scan base-package="com.awu.controllers" />
    	<mvc:annotation-driven/>
    
    	<!-- 配置视图解析器 如何把handler 方法返回值解析为实际的物理视图 -->
    	<bean
    		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		<property name="prefix" value="/WEB-INF/views/"></property>
    		<property name="suffix" value=".jsp"></property>
    	</bean>
    

     注意红色部分,当我们有Controller中需要处理json时,添加这个默认配置,如果显示的配置的话,也可以按如下配置。

    <mvc:annotation-driven>
    		<mvc:message-converters>
    			<bean class="org.springframework.http.converter.StringHttpMessageConverter" />
    			<bean
    				class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
    		</mvc:message-converters>
    	</mvc:annotation-driven>
    

    Tip:开始用默认配置一直不对,会报java.lang.IllegalArgumentException: No converter found for return value of type。Stackoverflow上也没办法解决。通过显示配置,控制台输出了异常,才发现是jackson的jar包没有引用完全,开始只用了core,实际需要以下:

    • jackson-core-**.jar
    • jackson-databind-**.jar
    • jackson-annotations-**.jar

    我使用的是2.8.1的core和databind,annotations用的2.8.0。相应下载链接:

    core:  http://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/

    databind:  http://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/

    annotations:  https://github.com/FasterXML/jackson-annotations/wiki

  • 相关阅读:
    HBase 操作
    HBase Java API 例子
    微信浏览器拖动出现黑色/白色背景、网址问题解决方案
    layui弹出层置顶弹出
    使用layui时,ajax执行后,重新渲染页面的方法
    宝塔更新
    js 播放音频文件 兼容火狐 谷歌浏览器
    SAP断点
    error_log 用法
    SE开头的事务代码
  • 原文地址:https://www.cnblogs.com/dev2007/p/6520023.html
Copyright © 2011-2022 走看看