- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章SpringMVC JSON数据交互及RESTful支持实现方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
JSON概述 。
JSON(JavaScript Object Notation,JS对象标记)是一种轻量级的数据交换格式,最近几年才流行起来。JSON是基于JavaScript的一个子集,使用了C、C++、C#、Java、 JavaScript、Per、 Python等其他语言的约定,采用完全独立于编程语言的文本格式来存储和表示数据。这些特性使JSON成为理想的数据交互语言,它易于阅读和编写,同时也易于机器解析和生成.
与XML一样,JSON也是基于纯文本的数据格式。初学者可以使用JSON传输一个简单的String、 Number、 Boolean,也可以传输一个数组或者一个复杂的 Object对象.
JSON有如下两种数据结构.
1.对象结构 。
对象结构以“{”开始,以“}”结束。中间部分由0个或多个以英文“,”分隔的“key:value”对构成,其中key和value之间也是英语“:”.
1
2
3
4
5
|
{
keyl: valuel,
key2: value2,
……
}
|
2.数组结构 。
数组结构以“[”开始,以“]”结束。中间部分由0个或多个以英文“,”分隔的值的列表组成.
1
2
3
4
5
|
[
valuel,
value2,
……
]
|
JSON数据转换 。
为了实现浏览器与控制器类(Controller)之间的数据交互,Spring提供了一个HttpMessageConverter 接口来完成此项工作。该接口主要用于将请求信息中的数据转换为一个类型为T的对象,并将类型为T的对象绑定到请求方法的参数中,或者将对象转换为响应信息传递给浏览器显示.
Spring为 HttpMessageConverter 接口提供了很多实现类,这些实现类可以对不同类型的数据进行信息转换。其中 MappingJacksona2HttpMessageConverter是 Spring MVC默认处理JSON格式请求响应的实现类。该实现类利用 Jackson开源包读写JSON数据,将Java对象转换为JSON对象和XML文档,同时也可以将JSON对象和XML文档转换为Java对象.
要使用MappingJacksona2HttpMessageConverter对数据进行转换,就需要使用 Jackson 的开源包,开发时所需的开源包及其描述如下所示.
在使用注解式开发时,需要用到两个重要的JSON格式转换注解@RequestBody和@ ResponseBody, 。
springmvc-config. xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
<?
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:mvc
=
"http://www.springframework.org/schema/mvc"
xmlns:context
=
"http://www.springframework.org/schema/context"
xmlns:tx
=
"http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<!--指定需要扫描的包 -->
<
context:component-scan
base-package
=
"com.ssm.controller"
/>
<!-- 配置注解驱动 -->
<
mvc:annotation-driven
/>
<!-- 配置静态资源的访问映射,此配置中的文件,将不被前端控制器拦截 -->
<
mvc:resources
location
=
"/js/"
mapping
=
"/js/**"
></
mvc:resources
>
<!-- 定义视图解析器 -->
<
bean
id
=
"viewResoler"
class
=
"org.springframework.web.servlet.view.InternalResourceViewResolver"
>
<!-- 设置前缀 -->
<
property
name
=
"prefix"
value
=
"/WEB-INF/jsp/"
/>
<!-- 设置后缀 -->
<
property
name
=
"suffix"
value
=
".jsp"
/>
</
bean
>
</
beans
>
|
不仅配置了组件扫描器和视图解析器,还配置了 Spring MVC的注解驱动<mvc: annotation- driven/>和静态资源访问映射mvc:resources…/。其中<mvc: annotation- driven/>配置会自动注册 RequestMappingHandlerMapping和 RequestMappingHandlerAdapter两个Bean,并提供对读写XML和读写JSON等功能的支持。mvc:resources…/元素用于配置静态资源的访问路径。由于在web.xml中配置的“/”会将页面中引入的静态文件也进行拦截,而拦截后页面中将找不到这些静态资源文件,这样就会引起页面报错。而增加了静态资源的访问映射配置后,程序会自动地去配置路径下找静态的内容.
json.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
<%@ 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
>测试JSON交互</
title
>
<
script
type
=
"text/javascript"
src
=
"${pageContext.request.contextPath}/js/jquery-1.11.3.min.js"
>
</
script
>
<
script
type
=
"text/javascript"
>
function testJson(){
//获取输入的客户信息
var loginname=$("#loginname").val();
var password=$("#password").val();
$.ajax({
url:"${pageContext.request.contextPath}/testJson",
type:"post",
//data表示发送的数据
data:JSON.stringfy({loginname:loginname,password:password}),
// 定义发送请求的数据格式为JSON字符串
contentType:"application/json;charset=UTF-8",
//定义回调响应的数据格式为JSON字符串,该属性可以省略
dataType:"json",
//成功响应的结果
success:function(data){
if(data!=null){
alert("您输入的登录名为:"+data.loginname+"密码为:"+data.password);
}
}
});
}
</
script
>
</
head
>
<
body
>
<
form
>
登录名:<
input
type
=
"text"
name
=
"loginname"
id
=
"loginname"
/> <
br
/>
密码:<
input
type
=
"password"
name
=
"password"
id
=
"password"
/> <
br
/>
<
input
type
=
"button"
value
=
"测试JSON交互"
onclick
=
"testJson()"
/>
</
form
>
</
body
>
</
html
>
|
在AJAX中包含了3个特别重要的属性,其说明如下.
CustomerController.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
package
com.ssm.controller;
import
org.springframework.stereotype.Controller;
import
org.springframework.web.bind.annotation.RequestBody;
import
org.springframework.web.bind.annotation.ResponseBody;
import
com.ssm.po.Customer;
@Controller
public
class
CustomerController {
/*
* 接收页面请求的JSON数据,并返回JSON格式结果
*/
@ResponseBody
public
Customer testJson(
@RequestBody
Customer customer){
//打印接收到的JSON格式数据
System.out.println(customer);
return
customer;
}
}
|
RESTful支持 。
RESTful也称之为REST(Representational State Transfer),可以将它理解为一种软件架构风格或设计风格.
RESTful风格就是把请求参数变成请求路径的一种风格。例如,传统的URL请求格式为:
http://.../queryitems?id=1 。
而采用RESTful风格后,其∪RL请求为:
http://.../items/1 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
/*
* 接收RESTful风格的请求,其接收方式为GET
*/
@RequestMapping
(value=
"/customer/{id}"
,method=RequestMethod.GET)
@ResponseBody
public
Customer selectCustomer(
@PathVariable
(
"id"
) Integer id){
//查看接收数据
System.out.println(id);
Customer customer=
new
Customer();
//模拟根据id查询出客户对象数据
if
(id==
10
){
customer.setLoginname(
"wujit"
);
}
//返回JSON格式的数据
return
customer;
}
|
@RequestMapping(vaue="customer/{id}", method= RequestMethod.GET)注解用于匹配请求路径(包括参数)和方式。其中vaue="/user/{id}"表示可以匹配以“/user/{id}”结尾的请求,id为请求中的动态参数;method= RequestMethod.GET表示只接收GET方式的请求。方法中的@ PathVariable("id")注解则用于接收并绑定请求参数,它可以将请求URL中的变量映射到方法的形参上,如果请求路径为“/user/{id}”,即请求参数中的id和方法形参名称id一样,则@PathVariable后面的“("id")”可以省略.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.
原文链接:https://www.cnblogs.com/zq98/p/13195134.html 。
最后此篇关于SpringMVC JSON数据交互及RESTful支持实现方法的文章就讲到这里了,如果你想了解更多关于SpringMVC JSON数据交互及RESTful支持实现方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
在 python 交互中,有没有办法在每次输入命令后自动从 python 文件执行方法? 例如:如果我有一个打印文件信息的方法,但我不想不断调用该方法,我怎样才能让它在 python 交互中的每个命令
当你使用Edge等浏览器或系统软件播放媒体时,Windows控制中心就会出现相应的媒体信息以及控制播放的功能,如图。 SMTC (SystemMedia
我在主菜单上使用标准的剪切,复制,粘贴操作。它们具有快捷键Ctrl-X,Ctrl-C和Ctrl-V。 当我打开模态表单时FindFilesForm.ShowModal,然后所有快捷方式都可以从表单中使
这是我想要实现的目标:打开一个 shell(korn 或 bash,没关系),从那个 shell,我想打开一个 ssh 连接(ssh user@host)。在某些时候,可能会提示我输入密码,或者可能会
我正在测试在C / C++程序中嵌入Python,但是我缺乏理解。 测试程序很简单: 初始化解释器; 从启动Timer的文件中执行python脚本(每0.1秒增加一个变量); 等待5秒(C++); 从
我正在尝试用java创建Excel文件。现在,我正在使用 Apache POI 库创建文件并将其保存到本地驱动器。有没有办法启动 Excel 并填充数据而不将其保存到硬盘驱动器? 最佳答案 考虑 Do
我有一个黑盒函数,它接受大约 10 个整数输入。该函数返回一个 pandas 数据框,我想捕获输出窗口(通过使用 bbwidget.children)并显示在布局中的其他地方。到目前为止,交互/交互似
我正在体验新的 QQuickWidget。我如何在 QQuickWidget 和 C++ 之间进行交互? C++ QQuickWidget *view = new QQuickWidget(); vi
我正在尝试设置一个使用 TWAIN 的 C# 应用程序 example from code project 除了我需要将 Form 转换为 IMessageFilter 和调用 IMessageFil
我想在使用 redis 的 python 中编写应用程序。我用谷歌搜索,但找不到我的问题的任何结果。通常,我这样做: import redis rs = redis.Redis('localhost'
最近做一个小项目,网页中嵌入google maps,输入经纬度坐标可以定位地图位置并加注标记,点击标记获取远端摄像头数据并在视频窗口实现播放。在实际操作过程中,由于经纬度数据和视频登录的用户名密码数
我需要在这里澄清一些事情: 我有一个网站,每次在浏览器中重新加载网站时都会更新两个变量的值。这个页面显然是一个 HTML 页面,但变量是由 javascript 函数更新的。此页面在我的服务器上运行。
我注意到,auto忽略双条件。这是一个简化的示例: Parameter A B : Prop. Parameter A_iff_B : A B. Theorem foo1: A -> B. Proo
使用 interactive使用多个小部件相当简单,例如: interactive(foo, w1=widget1, w2=widget2, ...) 但是,我想使用 VBox 和 HBox 的组合以
我们提供类似于 imagemagick 的浏览器页面 JavaScript,可帮助人们将图像转换为不同大小和格式。但是,它需要网页交互。 是否可以让人们自动进行这种交互——无需将图像发送到我们的服务器
大家好,我正在尝试制作一个具有大量动画和效果的交互式 UI。 但我不知道是否: 核心图形可以支持用户交互(触摸、拖动等) 核心图形支持对象旋转 核心图形可以以任何方式与 UIKit 和核心动画交互 谢
这是获取维基百科上一篇关于高盛的文章的介绍的链接。 http://en.wikipedia.org/w/api.php?action=query&prop=extracts&titles=Goldma
我正在尝试编写一个 AppleScript 来查询 iCal 并在任何日历中查找给定日期的所有事件。 我首先编写了一个简单的脚本,它对给定日历中的每个事件执行一些简单的操作: tell applica
我在我的 hudson 服务器上使用 jira 插件。将代码提交到 svn 时,我的提交注释包含在我的 jira 问题中,但有什么办法可以将注释归因于执行提交的实际人员,而不是让一个全局 jira 用
我正在播放一段视频来装饰我的用户界面。我隐藏了 AV 播放器控件,但用户仍然可以控制视频。例如,他们可以使用滑动手势快进或快退。 这让我特别惊讶,因为 AVPlayerView 上面有一个覆盖 Vie
我是一名优秀的程序员,十分优秀!