问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

spring mvc 怎么获取json

发布网友 发布时间:2022-05-07 18:48

我来回答

2个回答

热心网友 时间:2022-05-15 07:11

首先准备以下 jar包:
commons-logging-1.1.3.jar
jackson-core-asl-1.9.2.jar
jackson-mapper-asl-1.9.2.jar
spring-aop-4.0.6.RELEASE.jar
spring-beans-4.0.6.RELEASE.jar
spring-context-4.0.6.RELEASE.jar
spring-core-4.0.6.RELEASE.jar
spring-expression-4.0.6.RELEASE.jar
spring-web-4.0.6.RELEASE.jar
spring-webmvc-4.0.6.RELEASE.jar
其中commons-logging-1.1.3.jar,jackson-core-asl-1.9.2.jar,jackson-mapper-asl-1.9.2.jar均可在struts2的工具包中取得

导入以上包后,去web.xml中进行配置,配置文件如下:

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID"
version="3.1">    <display-name>web</display-name>
<!-- 配置springMVC请求分配Servlet -->    <servlet>        <servlet-name>springMVC</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <!--
<!-- 声明配置文件存放位置和配置文件的名称,加入不配置此标签,springMVC的配置文件名称默认为<servlet-name>的值加上"-servlet.xml",例如本例便是springMVC-servlet.xml -->        <init-param>            <param-name>contextConfigLocation</param-name>            <param-value>/WEB-INF/*-servlet.xml</param-value>        </init-param>
-->        <!-- 值小于1时,表示容器启动时并不加载此servlet,此时只有当第一次使用servlet时才会加载,但当值大于等于1时,表示容器启动时会立即加载此servlet,此时值越大表示加载的优先级越小 -->        <load-on-startup>1</load-on-startup>    </servlet>    <servlet-mapping>        <servlet-name>springMVC</servlet-name>        <!-- 请求链接以do结尾,具体怎么回事请耐心继续往下看 -->        <url-pattern>*.do</url-pattern>    </servlet-mapping>
<welcome-file-list>        <welcome-file>index.html</welcome-file>        <welcome-file>index.htm</welcome-file>        <welcome-file>index.jsp</welcome-file>        <welcome-file>default.html</welcome-file>        <welcome-file>default.htm</welcome-file>        <welcome-file>default.jsp</welcome-file>    </welcome-file-list></web-app>

接下来我们再看springMVC-servlet.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/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">    <!-- 扫描指定包下的所有类,倘若发现@Component,@Controller,@Service,@Repsitory等注解,则将相应的类实例化 -->    <context:component-scan base-package="org.xt.controller"/>    <!-- 配置视图资源 -->    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <!-- 此乃视图资源的前缀 -->        <property name="prefix" value="/WEB-INF/page"/>        <!-- 此乃视图资源的后缀 -->        <property name="suffix" value=".jsp"/>    </bean>    <!-- 此处乃进行json数据传输的关键,当配置 -->    <bean id="jsonMapping" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/>    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">        <property name="messageConverters">            <list>                <ref bean="jsonMapping"/>            </list>        </property>    </bean></beans>

接下来我们再看vo对象即值对象User.java,如下:

package org.xt.pojo;import java.io.Serializable;

@SuppressWarnings("serial")public class User implements Serializable {    private long userId;    private String userName;    private String userPassword;    public long getUserId() {        return this.userId;
}    public void setUserId(long userId) {        this.userId = userId;
}    public String getUserName() {        return this.userName;
}    public void setUserName(String userName) {        this.userName = userName;
}    public String getUserPassword() {        return this.userPassword;
}    public void setUserPassword(String userPassword) {        this.userPassword = userPassword;
}
}

好接下来便轮到了Controller的类TestJSONController.java,如下:

package org.xt.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.ResponseBody;import org.xt.pojo.User;

@Controller
@RequestMapping("/test")public class TestJSONController {    /*
*看value属性,是以do结尾的,这正是web.xml配置url-pattern的值为*.do的原因,
*这样所有的请求链接都必须以.do结尾,这样做的好处在于可以将请求链接同其他链接区分开来.
*笔者建议如此做(当然了,你也可以将.do换成.html,.htm或者其他)    */
@RequestMapping(value = "/testJSON.do",method={RequestMethod.POST})
@ResponseBody    public User testJSON(@RequestBody User user) {
System.out.println(user.getUserName() + " " + user.getUserPassword());        return user;
}
}

在以上类中出现的@ResponseBody和@RequestBody是关键,前者用于将JSON数据返回客户端,后者用于接受客户端的JSON数据

接下来我们来看看客户端的代码,客户端的代码由jquery完成

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"><title>TestJSONForSpringMVC</title></head><body>
用户名:    <input id="userName" type="text" style="width:150px" />    <br />
<br />
密&nbsp;&nbsp;&nbsp;&nbsp;码:    <input id="userPassword" type="password" style="width:150px" />    <br />    <br />    <input id="login" type="button" value="登录" />    <!-- 注意了,此处jquery的路径记得替换成你自己jquery所在的路径 -->    <script type="text/javascript" src="jquery.js"></script>    <script type="text/javascript">
$("#login").click(function() {
$.ajax({
url : "test/testJSON.do",
type : "POST",
dataType : "json",
contentType : "application/json;charset=UTF-8",
data : JSON.stringify({
userId : "1",
userName : $("#userName").val(),
userPassword : $("#userPassword").val()
}),
success : function(result) {
alert(JSON.stringify(result));
},
error:function(result){
alert("Sorry,you are make a error!");
}
});
});
</script></body></html>

以上jsp文件中出现了一个JSON.stringify()函数,此函数由jquery提供,作用在于将JSON数据转换为字符串,之所以要这么做,原因在于服务端的@RequestBody只能识别字符串,而不能识别JSON对象

热心网友 时间:2022-05-15 08:29

@ResponseBody 是一种,试图解析器配置协商试图解析器。
如果自己已经生成json字符串,自己实现视图与视图解析器(继承spring实现好的解析器)。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求抛物线y×y-6x=0的焦点坐标和准线方程 6-6x=6的解是x=0 .( ) 判断题 财富 一个方程问题:6x=0有没有解 6x=0,x=( ) 下列算式是方程的是( )A.101-1=100B.8x-2C.6x=0D.x-17 6X=0,这个方程没有解 对吗? 6x=0不是方程.××.(判断对错) 6x=0是方程. __ (判断对错) 今晚地球停电一小时,做点什么好呢 月经第八天还有褐色分泌物预防什么病 - 信息提示 js onclick方法 传递json对象报错 PHP如何接收JSON? 机器视觉属于哪个学科分类 json字符串转对象 jsp前端页面如何解析json数据? 如何将数据以json格式传给前端 计算机视觉是什么专业 ...名称是click 格式为 .json,来源是118.178.155.79? json转html android读取json数据如何为每一项都添加单击事件 如何将json对象,赋值给li标签的click事件 click.json是什么文件 车牌撞弯了,变形加掉漆,怎么换 汽车拍照因剐蹭弯曲等原因,想更换个新的车牌号,还是原来的号,能办理么?如果能,具体应该怎么整呢? 车牌被折弯了怎么复原? runningman20140309期16分到18分那音乐叫什么名字 《农家俏厨娘》by赛秋txt下载在线阅读全文,求百度网盘云资源 中暑了为什么肚子会痛? 为什么说,5V的二极管(IN4007)的会压降1V,等于4V呢? 使用jquery,匹配json的元素,并显示出来? 谁能解释一下计算机图形学,计算机视觉,图像处理,是干嘛的?都学什么?不要官方语言,越通俗越好,谢谢 梦见我领着孩子们从大水的地道了逃生 梦见自己关在地道里没人救 梦见和别人从地下河逃生是什么意思? 有关于漫画 关于漫画的问题 求图片:国防杯 新三毛从军 国家安全 关心国防和军队建设有关的漫画 帮忙解释一下这张有关政治的漫画 以安全在我心中为主题的漫画 贷款还清后先解压还是先拿房本 深圳地铁安全宣传漫画引争议,引起争议的原因是什么? 军服控 bl文 统治世界的作品目录 资阳房贷还完后去哪儿解压 求好看的BL军事小说 乌克兰问题,这幅漫画什么意思? 浦城有多少跟美团优选一样的软件 电商货源有个什么优选来着 漫威里有个超级英雄会中国功夫,他叫啥?好像是个中国人