javascript
SpringMVC4返回json
前言
? ? ?目前前后端分離后,接口大多數(shù)返回給前端的都是json數(shù)據(jù),那么我嘗試用SpringMVC4的Controller返回json。demo過程中遇到了幾個(gè)問題寫出來和java初學(xué)者分享一下。
開發(fā)環(huán)境
? ? idea2016、jdk1.8、tomcat7
? ? SpringMVC4、jackson2.5
?
開發(fā)問題
? ? 1、SpringMVC4如果想返回json的話可以使用ResponseBody、ResponseEntity注解,如果你打算返回注解而沒有引用json處理jar包,訪問http://localhost:8080/rest/users時(shí)會(huì)提示http 406。
? ? 2、SpringMVC4版本后json序列化必須使用jackson相關(guān),jackson-annotations-2.5.0.jar,jackson-core-2.5.0.jar,jackson-databind-2.5.0.jar。我開始用的fastjson但會(huì)報(bào)錯(cuò):
? ? ? ?Java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingException
?
項(xiàng)目配置文件
? ? 初學(xué)Spring,配置文件是最煩神的,概括看來首先下載jar包,你需要關(guān)注pom.xml、其次是web.xml、spring-mvc.xml。
?
1、pom.xml
<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-oxm</artifactId><version>${spring.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.12</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.5.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.5.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.5.0</version></dependency></dependencies>?
2、web.xml
<web-app><display-name>Archetype Created Web Application</display-name><!-- Spring監(jiān)聽 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><servlet><servlet-name>MVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>MVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>3、spring-mvc.xml
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:beans="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!-- 注解驅(qū)動(dòng) --><mvc:annotation-driven /><!-- 掃描包 --><context:component-scan base-package="com.autohome.controller" /><!-- 視圖解析 --><bean class="org.springframework.web.servlet.view.UrlBasedViewResolver"><!-- 返回的視圖模型數(shù)據(jù)需要經(jīng)過jstl來處理 --><property name="viewClass"value="org.springframework.web.servlet.view.JstlView" /><property name="prefix" value="/WEB-INF/views/" /><property name="suffix" value=".jsp" /></bean><bean id="stringConverter"class="org.springframework.http.converter.StringHttpMessageConverter"><property name="supportedMediaTypes"><list><value>text/plain;charset=UTF-8</value></list></property></bean><bean id="jsonConverter"class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean><beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"><property name="messageConverters"><list><ref bean="stringConverter" /><ref bean="jsonConverter" /></list></property></bean></beans>? ? ?OK, 可以編寫rest controller了。
@Controller @RequestMapping("/rest") public class RestController {@RequestMapping(value="/sayHello",method = RequestMethod.GET)public @ResponseBodyString sayHello(){return "{\"returncode\":0,\"message\":\"hello world\"}";}@RequestMapping(value="/users")public ResponseEntity<List<User>> listAllUser(){List<User> list =new ArrayList<User>();User user =new User();user.setId(1);user.setName("test");user.setAge(30);User user2 =new User();user2.setId(2);user2.setName("test1");user2.setAge(30);list.add(user);list.add(user2);return new ResponseEntity<List<User>>(list, HttpStatus.OK);}@RequestMapping(value="/user/{id}",method = RequestMethod.GET)public ResponseEntity<User> getUser(@PathVariable long id){System.out.println("id:"+id);User user =new User();user.setId(1);user.setName("test");user.setAge(30);return new ResponseEntity<User>(user,HttpStatus.OK);}}
? ?輸入http://localhost:8080/rest/users、http://localhost:8080/rest/user/1/ ?,第一個(gè)SpringMVC demo搞定。
?
轉(zhuǎn)載于:https://www.cnblogs.com/sword-successful/p/6402562.html
總結(jié)
以上是生活随笔為你收集整理的SpringMVC4返回json的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。