3.1 REST
- REST:Representational State Transfer;
- REST是一种数据导向web service,相对于SOAP是一种操作操作和处理导向的web service;
- Spring为对REST的支持提供了@RestController;
- 在没有@RestController可以通过@Controller,@ResponseBody组合实现REST控制器;
- 但是我们经常会使用@ResponseBody这样很麻烦,且易忘记;
- 使用@RestController替代@Controller,我们就不用使用@ResponseBody;
- REST支持的http method(通过@RequestMapping的method属性控制)
- POST:新增
- GET:读取
- PUT/PATCH:更新
- DELETE:删除
-
produces
的内容是指定返回的媒体类型让浏览器识别- 如返回text/plain的话,浏览器上的js回掉拿到的是字符串,需要自己转换对象;
- 如返回application/json的话,浏览器上的js拿到的就是js对象而不是字符串,就不需要进行转换;
-
本例演示向控制器提交json数据,返回结果分别为json和xml格式;
3.2 示例
3.2.1 @RestController源码
从@RestController看出,@RestController是一个元注解,组合了@Controller,@ResponseBody,相当于同时使用了@Controller @ResponseBody
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
/**
* The value may indicate a suggestion for a logical component name,
* to be turned into a Spring bean in case of an autodetected component.
* @return the suggested component name, if any
* @since 4.0.1
*/
String value() default "";
}
3.2.2 代码
- 添加jackson依赖
jackson-dataformat-xml依赖jackson-bind
,这样我们能同时返回xml和json
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.5.3</version>
</dependency>
若只需返回json数据(大多数项目都是这样),将上面依赖更换为
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.3</version>
</dependency>
- 传值对象
package com.wisely.web;
public class DemoObj {
private Long id;
private String name;
//此处一定要有空构造,不然会有400 bad request,主要是jackson将json参数转换为对象需要
public DemoObj() {
super();
}
public DemoObj(Long id, String name) {
super();
this.id = id;
this.name = name;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
-
DemoMVCConfig
注册静态资源
// 静态资源映射
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/js/**").addResourceLocations("/js/");
}
- 控制器
package com.wisely.web;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")
public class RESTController {
@RequestMapping(value = "/getjson",produces={"application/json;charset=UTF-8"})
public DemoObj getjson(@RequestBody DemoObj obj){
return new DemoObj(obj.getId()+1, obj.getName()+"yy");
}
@RequestMapping(value = "/getxml",produces={"application/xml;charset=UTF-8"})
public DemoObj getxml(@RequestBody DemoObj obj){
return new DemoObj(obj.getId()+1, obj.getName()+"yy");
}
}
- 页面代码
<script type="text/javascript" src="<c:url value="/js/jquery.js" />"></script>
<script type="text/javascript">
var json = {"id":456,"name":"phy"};
$.ajax({
url: "api/getjson",
data: JSON.stringify(json),
type:"POST",
contentType:"application/json",
success: function(data){
console.log(data);
}
});
$.ajax({
url: "api/getxml",
data: JSON.stringify(json),
type:"POST",
contentType:"application/json",
success: function(data){
console.log(data);
}
});
</script>
- 结果
新书推荐《JavaEE开发的颠覆者: Spring Boot实战》,涵盖Spring 4.x、Spring MVC 4.x、Spring Boot企业开发实战。
京东地址:http://item.jd.com/11894632.html
当当地址:http://product.dangdang.com/23926195.html
亚马逊地址:http://www.amazon.cn/图书/dp/B01D5ZBFUK/ref=zg_bsnr_663834051_6
淘宝地址:https://item.taobao.com/item.htm?id=528426235744&ns=1&abbucket=8#detail
或自己在京东、淘宝、亚马逊、当当、互动出版社搜索自选。
相关推荐
国元点睛-20230825-国元期货-23页
第二部分 点睛Spring MVC 4.x 第4 章 Spring MVC 基础 72 4.1 Spring MVC 概述 73 4.2 Spring MVC 项目快速搭建 74 4.2.1 点睛 74 4.2.2 示例 74 4.3 Spring MVC 的常用注解 82 4.3.1 点睛 82 4.3.2 示例 83 4.4 ...
综合实践-保护眼睛-预防近视-四年级.doc
第二部分 点睛Spring MVC 4.x 第4 章 Spring MVC 基础 72 4.1 Spring MVC 概述 73 4.2 Spring MVC 项目快速搭建 74 4.2.1 点睛 74 4.2.2 示例 74 4.3 Spring MVC 的常用注解 82 4.3.1 点睛 82 4.3.2 示例 83 4.4 ...
第二部分 点睛Spring MVC 4.x 第4 章 Spring MVC 基础 72 4.1 Spring MVC 概述 73 4.2 Spring MVC 项目快速搭建 74 4.2.1 点睛 74 4.2.2 示例 74 4.3 Spring MVC 的常用注解 82 4.3.1 点睛 82 4.3.2 示例 83 4.4 ...
让消费者眼睛亮起来--稀世宝矿泉水整合营销策划案例(doc 20).doc
蓝鲸的眼睛读后感-14页.pdf
bugscan发展历程以及框架改进.pdf 基于正则类sql注入防御的绕过技巧.pdf 如何优雅的穿透linux内网.pdf 花式玩转bugscan插件.pdf 过滤型插件与反向代理的火花.pdf
这是一款保护眼睛的小软件,绿色软件,不需安装即可使用,试一下吧。
四年级语文下册 6 眼睛 永生的眼睛教案 北师大版-北师大版小学四年级下册语文教案.doc
使用OpenCV1.0实现了眼睛状态识别,首先用harr检测眼睛,然后用模板匹配的方法标记眼睛状态。 程序需要使用Eyes45x11.xml Mouth25x15.xml Nose25x15.xml,将其放到C:\Program Files\OpenCV\data\haarcascades目录下...
四年级语文下册 6 眼睛 我只看见你的眼睛教案 北师大版-北师大版小学四年级下册语文教案.doc
眼睛穴位图-睛明穴-取穴方法 方便经常上网的朋友使用
把网页背景变成眼睛保护色或适合夜晚阅读的夜间模式,一些无法变色的小区块可以通过单击进行变色;
图像与眼睛(2009-04-1.pdf
开放式集体REST API 前言 如果您发现下面的步骤有待改进(或已过时),请更新说明。 我们很少亲自进行此过程,因此,您的一双崭新的眼睛和最近的使用经验,使您成为为其他用户改善视力的最佳人选。 谢谢! 发展 先决...
在电脑面前坐久了,起来动一下吧 眼睛保护卫士,你不动都不行。。。。 试一下吧!!!
alien skin Eye Candy 7是一款非常强大的PS滤镜插件。包含了金属字、火焰、闪电、纹理等30多种实用特效,是设计师必备的插件之一。
基于DeepPupilNet深度学习网络的眼睛定位算法仿真_源码
软件名:点睛文本编码查询 功能:本软件用于将文本的字符串转换为 Text、ASCII、Default、Unicode、BigEndianUnicode、UTF-8、UTF-7、GBK、BIG5 之间的互相转换,用于文本查询。转换结果使用十六进制表示。