SpringMVC之JSON交互

Posted 贰零一八

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringMVC之JSON交互相关的知识,希望对你有一定的参考价值。

#操作

1).添加相关Spring包,另外,在http://mvnrepository.com/artifact/com.fasterxml.jackson.core下载

fastjson包,其实在github上有相关代码备份;

 

   

2).在web.xml中配置前端控制器和Spring-config.xml的路径;

 

   

3).在Spring-config.xml中,添加额外如下配置

 <mvc:annotation-driven>
    <!--配置@ResponseBody由fastjson解析-->
        <mvc:message-converters>
            <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"/>
        </mvc:message-converters>
    </mvc:annotation-driven>
    <mvc:default-servlet-handler />

    <!-- 支持mvc注解驱动 -->
    <!--在spring中一般采用@RequestMapping注解来完成映射关系,
    要想使@RequestMapping注解生效必须向上下文中注册
DefaultAnnotationHandlerMapping
和一个AnnotationMethodHandlerAdapter 实例,这两个实例分别在类级别和方法级别处理。而annotation-driven配置帮助
我们自动完成上述两个实例的注入。
--> <mvc:resources location="/js/" mapping="/js/**"/>

       

4).根据表单写javaBean;

 

       

5).写jsp页面,这里面涉及到ajax     

 1 <%--
 2   Created by IntelliJ IDEA.
 3   User: shijinglu
 4   Date: 2019/2/1
 5   Time: 20:21
 6   To change this template use File | Settings | File Templates.
 7 --%>
 8 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 9 <html>
10 <head>
11     <title>测试JSON交互</title>
12 
13     <!--引入js文件,引入路径 从当前项目的js文件夹下的jquery-1.11.3.min.js-->
14     <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-1.11.3.min.js">
15     </script>
16     <!--写一个function testJson()-->
17     <script type="text/javascript">
18         function testJson() {
19             <!--获取用户输入的用户名和密码-->
20             var username=$("#username").val();
21             var password=$("#password").val();
22             <!--发一个ajax请求-->
23             $.ajax({
24                 <!--testJson路径  默认是当前页的地址,这里是交给testJson处理-->
25                 url:"${pageContext.request.contextPath}/testJson",
26                 type:"post",
27                 <!--把发送过来的数据转换成json字符串-->
28                 data:JSON.stringify({username:username,password:password}),
29                 <!--请求类型设置为json字符串,并设置字符集为utf-8-->
30                 contentType: "application/json;charset=UTF-8",
31                 <!--定义回调的响应格式为json字符串,该属性可以省略-->
32                 dataType:"json",
33                 success : function(data) {
34                     if(data !=null){
35                         alert("您输入的用户名为:"+data.username+"密码为:"+data.password);
36                     }
37                 }
38             });
39 
40         }
41     </script>
42 </head>
43 <body>
44 <form>
45     用户名:<input  name="username" id="username"><br/>
46     密&nbsp;&nbsp;&nbsp;码:<input type="password" name="password" id="password"><br/>
47     <input type="button" value="测试json交互" onclick="testJson()">
48 </form>
49 </body>
50 </html>

     

6).写控制器;

@Controller  //表示控制器  等价于在配置文件里面写bean id
public class UserController{

     /**
      * 接收页面请求的数据,并以json格式返回数据
      * */
     @RequestMapping(value="/testJson",method = RequestMethod.POST,consumes = "application/json")
     //@ReponseBody:是把user对象转换为json,因为响应端的浏览器不认识java对象,但认识js对象标记。
    @ResponseBody
     //@RequestBody:把请求的json字符串(data后面的内容)转换成user对象
    public User testJson(@RequestBody User user){
         System.out.println(user);
         //并返回json格式
         return user;
     }
}

 

原理待补充




以上是关于SpringMVC之JSON交互的主要内容,如果未能解决你的问题,请参考以下文章

Ajax json交互和SpringMVC中@RequestBody

springmvc学习笔记(18)-json数据交互

springmvc学习笔记(18)-json数据交互

SpringMVC学习——SpringMVC与前台的json数据交互

SpringMVC学习09SpringMVC与前台的json数据交互

SpringMVC中JSON数据交互