SpringMVC,接受、处理Json,fastjson解析json,用Postman4发送json数据
这个博客用的demo是接着我的上一篇博客(SpringMVC的 get,post参数请求及重定向) 感兴趣的朋友可以去看看~
要用fastjson 要引入:
fastjson-1.1.41jar包
SpringMVC 结合alibaba的fastjson 把对象转json输出
1.配置spring-mvc.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--加载解析json的组件(fastjson) 配置消息转换器-->
<mvc:annotation-driven>
<mvc:message-converters>
<bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<!--这里顺序不能反,一定要先写text/html 不然ie下会出现下载提示-->
<value>text/html;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<!--注意这里的顺序 一定要加载解析json的组件先加载 再开启springmvc的注解驱动 否则会报错,编译器也不会提示错误,很蛋疼-->
<!--开启springmvc的注解驱动-->
<mvc:annotation-driven/>
<!--配置包扫描-->
<context:component-scan base-package="com.dengweiquan.**" />
<!--配置viewResolver(视图解析器)-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--getrequestdispature的时候要填的前缀 和后准都自动填好 注意斜号很关键 漏填个斜号都会错-->
<property name="prefix" value="/WEB-INF/view/"/>
<property name="suffix" value=".jsp"/>
<!--jsp要用到jstl-->
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
</bean>
</beans>
2.修改UserController:
//打了@Controller 都归springMVC管
//打了@Controller 是写请求路径的 假如请求路径里面是带user的 例如user/test.jsp 或者user/demo.jsp 这个请求就会分发到这个controller来处理
@Controller
@RequestMapping("user")
public class UserController {
//打了@Controller 是写请求路径的 假如请求路径里面是带user的 例如user/test.jsp 或者user/demo.jsp 这个请求就会分发到这个controller来处理
@Controller
@RequestMapping("user")
public class UserController {
//@ResponseBody 意思返回体是调用了 spring-mvc.xml 里的<mvc:message-converters>处理返回数据 转json输出了
@RequestMapping("/test")
@ResponseBody
public User testUser() {
User user=new User();
user.setId(12);
user.setName("haha");
user.setId(12);
user.setName("haha");
return user;
}
@RequestMapping("/demo")
public String demoUser(){
}
@RequestMapping("/demo")
public String demoUser(){
//返回userspringmvc自动帮你加好了前后缀 就是我们要去的user.jsp 在viewResolver哪里已经配置好了路径的前后缀
return "demo";
}
return "demo";
}
}
输入网址 localhost:8080/user/test 页面上会显示json {"id":12,"name":"haha"}
前端用PostMan4传来数据,并自动转为对象:
1.修改UserController
@Controller
@RequestMapping("user")
public class UserController {
@RequestMapping("user")
public class UserController {
@RequestMapping("/test")
public String testUser(User user) {
return "user";
}
@RequestMapping("/demo")
public String demoUser(){
public String testUser(User user) {
return "user";
}
@RequestMapping("/demo")
public String demoUser(){
//返回userspringmvc自动帮你加好了前后缀 就是我们要去的user.jsp 在viewResolver哪里已经配置好了路径的前后缀
return "demo";
}
return "demo";
}
}
2.先要用谷歌浏览器的组件 Postman4模拟发送get/post请求 请自行百度下载方法
注意postman4发送的post请求 可以通过request请求获得的数据格式是 Body里的x-www-form-urlencoded格式的
按send发送之后 debug就可以发现user对象已经封装好了 id为12 name为haha
前端用PostMan4传来json 然后自动转为对象:
1.postman4要设置 发送数据为json格式
选Body里的raw 然后设置Text为JSON(application/json) 然后自行写要传向后端的json
选Body里的raw 然后设置Text为JSON(application/json) 然后自行写要传向后端的json
2.设置UserController
//打了@Controller 都归springMVC管
//打了@Controller 是写请求路径的 假如请求路径里面是带user的 例如user/test.jsp 或者user/demo.jsp 这个请求就会分发到这个controller来处理
@Controller
@RequestMapping("user")
public class UserController {
//打了@Controller 是写请求路径的 假如请求路径里面是带user的 例如user/test.jsp 或者user/demo.jsp 这个请求就会分发到这个controller来处理
@Controller
@RequestMapping("user")
public class UserController {
//假如是@RequestMapping("/test",method=RequestMethod.GET) 限制前端的请求,意思是前端只能发送GET请求
//假如是@RequestMapping("/test",method=RequestMethod.POST) 意思是前端只能发送POST请求
//要加上@RequestBody 才能json自动转对象
@RequestMapping("/test")
public String testUser(@RequestBody User user) {
return "user";
}
@RequestMapping("/demo")
public String demoUser(){
//假如是@RequestMapping("/test",method=RequestMethod.POST) 意思是前端只能发送POST请求
//要加上@RequestBody 才能json自动转对象
@RequestMapping("/test")
public String testUser(@RequestBody User user) {
return "user";
}
@RequestMapping("/demo")
public String demoUser(){
//返回userspringmvc自动帮你加好了前后缀 就是我们要去的user.jsp 在viewResolver哪里已经配置好了路径的前后缀
return "demo";
}
return "demo";
}
}
postman4发送json之后 debug发现user对象已经封装好了 id为12 name为haha
postman4发送json之后 debug发现user对象已经封装好了 id为12 name为haha