• 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

  • 相关阅读:
    Java随笔
    Java随笔
    Java随笔
    CF920E Connected Components?(并查集)
    CF1227F1 Wrong Answer on test 233 (Easy Version)(dp)
    Nginx上传文件限制
    Nginx代理---请求头
    Django中Model操作(数据库表名修改/列名修改/数据筛选过滤)
    Django中创建数据库报错:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=utf8' at line 1解决方案
    如何实现加入收藏、设为首页、保存到桌面的方法功能
  • 原文地址:https://www.cnblogs.com/dev2007/p/6520023.html
Copyright © 2020-2023  润新知