SpringMVC 应用开发
1 基础概念介绍
2 返回值处理
3 参数绑定处理
4 RequestMapping注解
5 RESTful支持
6 拦截器应用
7 CORS跨域解决方案
8 Mock测试(模拟测试)
9 ControllerAdvice
10 乱码解决
11 非注解开发方式
RESTful支持
基础知识介绍
REST(英文:Representational State Transfer,简称 REST,意思是:(资源)表述性状态转化) 描述了一个架构样式的网络系统。
REST指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。
RESTful的特性
- 资源
网络上的一个实体,或者说是网络上的一个具体信息。
要获取这个资源,访问它的 URI 就可以,因此 URI 即为每一个资源的独一无二的识别符。 - 表现层
把资源具体呈现出来的形式,叫做它的表现层。
文本可以用 txt 格式表现,也可以用 HTML 格式、XML 格式、JSON 格式表现。 - 状态转化
每发出一个HTTP请求,就代表了客户端和服务器的一次交互过程。
HTTP协议,是一个无状态协议,即所有的 【状态】都保存在服务器端。
HTTP 协议里面,四个表示操作方式的动词:GET、POST、PUT 、DELETE分别对应四种基本操作。
如何设计RESTful应用程序的API
- 路径设计:数据库设计完毕之后,基本上就可以确定有哪些资源要进行操作,相对于的路径也可以设计出来
- 动词设计:也就是针对资源的具体操作类型,由HTTP动词表示,常用的HTTP动词如下:POST、DELETE、 PUT、GET
一、 RESTful的URL路径变量
对应解析资源
1.1 URL-PATTERN :设置为/,方便拦截 RESTful 请求。
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern> </servlet-mapping>
1.2 @PathVariable:可以解析出来URL中的模板变量({id})
http://localhost:8080/ssm/item/1/zhangsan
@RequestMapping(“{id}/{name}”)
@ResponseBody
public Item queryItemById(@PathVariable Integer id, @PathVariable String name){}
二、 RESTful的CRUD
针对状态转换,设置相关对应的方法。
- @RequestMapping:通过设置method属性值,可以将同一个URL映射到不同的
HandlerMethod
方法 上 - @GetMapping、@PostMapping、@PutMapping、@DeleteMapping注解同
@RequestMapping
注解 的method
属性设置。
三、 RESTful的资源表述
RESTful服务中一个重要的特性就是一种资源可以有多种表现形式,在SpringMVC中可以使用 ContentNegotiatingManager这个内容协商管理器来实现这种方式。
3.1 内容协商的方式有三种
不过现在RESTful响应的数据一般都是JSON格式,所以一般也不使用内容协商管理器,直接使用 @ResponseBody注解将数据按照JSON格式返回。
- 扩展名:比如.json表示我要JSON格式数据、.xml表示我要XML格式数据
- 请求参数:默认是”format”
- 请求头设置Accept参数:比如设置Accept为application/json表示要JSON格式数据
四、 静态资源访问
如果在DispatcherServlet中设置url-pattern为 /
,则会对静态资源进行访问处理。
/
会对静态资源进行拦截,使用以下配置,告诉Spring 去获取相应的静态资源即可。
在springmvc.xml文件中,使用 mvc:resources 标签,具体如下:
<!-- 当DispatcherServlet配置为/来拦截请求的时候,需要配置静态资源的访问映射 -->
<mvc:resources location="/js/" mapping="/js/"/>
<mvc:resources location="/css/" mapping="/css/"/>
SpringMVC 会把 mapping 映射到ResourceHttpRequestHandler,这样静态资源在经过
DispatcherServlet 转发时就可以找到对应的 Handler 了。