SpringMVC学习笔记
🍃🍃🍃
SpringMVC,REST,数据传输,编码过滤器…
SpringMVC简介
一. SpringMVC特点
① Spring 为展现层提供的基于 MVC 设计理念的优秀的 Web 框架,是目前最主流的 MVC 框架之一。
② Spring MVC 通过一套 MVC 注解,让 POJO 成为处理请求的控制器,而无须实现任何接口。
③ 支持 REST 风格的 URL 请求。
④ 采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性。
SpringMVC是一种轻量级的、基于MVC的Web层应用框架。偏前端而不是基于业务逻辑层。
二. SpringMVC作用
- 天生与Spring框架集成,如:(IOC,AOP)
- 支持Restful风格
- 进行更简洁的Web层开发
- 支持灵活的URL到页面控制器的映射
- 非常容易与其他视图技术集成,如:Velocity、FreeMarker等等。
- 因为模型数据不存放在特定的API里,而是放在一个Model里(Map数据结构实现,因此很容易被其他框架使用)
- 非常灵活的数据验证、格式化和数据绑定机制、能使用任何对象进行数据绑定,不必实现特定框架的API
- 更加简单、强大的异常处理
- 对静态资源的支持
- 支持灵活的本地化、主题等解析
SpringMVC使用
一. 导入jar包

二. web.xml
1 |
|
三. SpringMVC配置文件
1 |
|
四. 控制层实现
@RequestMapping注解为控制器指定可以处理哪些 URL 请求
- 在控制器的类定义及方法定义处都可标注 @RequestMapping
- 标记在类上:提供初步的请求映射信息。相对于 WEB 应用的根目录
- 标记在方法上:提供进一步的细分映射信息。相对于标记在类上的 URL。
- 若类上未标注 @RequestMapping,则方法处标记的 URL 相对于 WEB 应用的根目录
作用:DispatcherServlet 截获请求后,就通过控制器上 @RequestMapping 提供的映射信息确定请求所对应的处理方法。
1 | /** |
1).Ant 路径
Ant风格资源地址支持3种匹配符:
?:匹配文件名中的一个字符
*:匹配文件名中的任意字符
**:匹配多层路径
1 | //Ant 风格资源地址支持 3 种匹配符 |
2).占位符PathVariable注解
@PathVariable 映射 URL 绑定的占位符
带占位符的 URL是 Spring3.0新增的功能,该功能在 SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义
通过 @PathVariable可以将 URL中占位符参数绑定到控制器处理方法的入参中:
URL 中的 {xxx} 占位符可以通过 @PathVariable(“xxx“) 绑定到操作方法的入参中。
1 | //@PathVariable 注解可以将请求URL路径中的请求参数,传递到处理请求方法的入参中 |
五. jsp页面文件
1). index.jsp
1 | <body> |
2). success.jsp
1 | <body> |
3). jsp_01.jsp
1 | <body> |
4). jsp_02.jsp
1 | <body> |
SpringMVC运行流程

基本步骤:
1). 客户端请求提交到DispatcherServlet
2). 由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller
3). DispatcherServlet将请求提交到Controller(也称为Handler)
4). Controller调用业务逻辑处理后,返回ModelAndView
5). DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图
6). 视图负责将结果显示到客户端
REST
一. REST简介
REST:即 Representational State Transfer。(资源)表现层状态转化。是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用
· 资源(Resources):网络上的一个实体,或者说是网络上的一个具体信息。
它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的存在。
可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的 URI 。
获取这个资源,访问它的URI就可以,因此 URI 即为每一个资源的独一无二的识别符。
· 表现层(Representation):把资源具体呈现出来的形式,叫做它的表现层(Representation)。比如,文本可以用 txt 格式表现,也可以用 HTML 格式、XML 格式、JSON 格式表现,甚至可以采用二进制格式。
· 状态转化(State Transfer):每发出一个请求,就代表了客户端和服务器的一次交互过程。HTTP协议,是一个无状态协议,即所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生“状态转化”(State Transfer)。
而这种转化是建立在表现层之上的,所以就是 “表现层状态转化”。
· 具体说,就是 HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。
它们分别对应四种基本操作:GET 用来获取资源,POST 用来新建资源,PUT 用来更新资源,DELETE 用来删除资源。
二. REST使用
1). web.xml
1 |
|
2). 控制层实现
1 |
|
3). jsp页面
1 | <body> |
请求数据传入
Spring MVC 通过分析处理方法的签名,HTTP请求信息绑定到处理方法的相应入参中。必要时可以对方法及方法入参标注相应的注解( @PathVariable 、@RequestParam、@RequestHeader 等)、Spring MVC 框架会将 HTTP 请求的信息绑定到相应的方法入参中,并根据方法的返回值类型做出相应的后续处理。
jsp文件
1 | <form action="param" method="POST"> |
1. @RequestParam注解
在处理方法入参处使用 @RequestParam 可以把请求参数传递给请求方法。
1 | /** |
2. @RequestHeader 注解
使用 @RequestHeader 绑定请求报头的属性值,请求头包含了若干个属性,服务器可据此获知客户端的信息,通过 @RequestHeader 即可将请求头中的属性值绑定到处理方法的入参中 。
1 | /** |
3. @CookieValue 注解
使用 @CookieValue 绑定请求中的 Cookie 值@CookieValue 可让处理方法入参绑定某个 Cookie 值。
1 | /** |
4. 使用POJO作为参数
使用 POJO 对象绑定请求参数值,Spring MVC 会按请求参数名和 POJO 属性名进行自动匹配,自动为该对象填充属性值。支持级联属性。
1 | /** |
响应数据传出
SpringMVC 输出模型数据概述
提供了以下几种途径输出模型数据:
ModelAndView: 处理方法返回值类型为 ModelAndView 时, 方法体即可通过该对象添加模型数据 。
Map 及 Model: 入参为 org.springframework.ui.Model、org.springframework.ui.ModelMap 或 java.uti.Map 时,处理方法返回时,Map 中的数据会自动添加到模型中。
@SessionAttributes: 将模型中的某个属性暂存到 HttpSession 中,以便多个请求之间可以共享这个属性。
@ModelAttribute: 方法入参标注该注解后, 入参的对象就会放到数据模型中。
1 | <form action="param1" method="post"> |
1. ModelAndView
控制器处理方法的返回值如果为 ModelAndView, 则其既包含视图信息,也包含模型数据信息。
1 | (value="/param1",method=RequestMethod.POST) |
2. Map
Spring MVC 在调用方法前会创建一个隐含的模型对象作为模型数据的存储容器。
如果方法的入参为 Map 或 Model 类型,Spring MVC 会将隐含模型的引用传递给这些入参。
在方法体内,开发者可以通过这个入参对象访问到模型中的所有数据,也可以向模型中添加新的属性数据。
1 | (value="/param2",method=RequestMethod.POST) |
3. Model
1 | (value="/param3",method=RequestMethod.POST) |
4. 试图类型
1 | /** |
编码过滤器
如果中文有乱码,需要配置字符编码过滤器,且必须配置其他过滤器之前。
1 | <!-- 编码过滤器(必须写在第一位) --> |
- 本文作者:
腾飞
- 本文链接:
https://www.tengfei.eu.org/article/9d61a468.html
- 版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!