Spring04——Spring MVC 全解析
前文分别介绍了 Spring IOC 与 Spring AOP 的相关知识,本文将为各位大概带来 Spring MVC 的知识点。关注我的公众号「Java面典」,每天 10:24 和你一起了解更多 Java 相关知识点。
处理流程

- 用户发送请求至前端控制器 DispatcherServlet;
- DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器;
- 处理器映射器找到具体的处理器(可以根据 xml 配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给 DispatcherServlet;
- DispatcherServlet 调用 HandlerAdapter 处理器适配器;
- HandlerAdapter 经过适配调用具体的处理器(Controller,也叫后端控制器);
- Controller 执行完成返回 ModelAndView;
- HandlerAdapter 将 Controller 执行结果 ModelAndView 返回给 DispatcherServlet;
- DispatcherServlet 将 ModelAndView 传给 ViewReslover 视图解析器;
- ViewReslover 解析后返回具体 View;
- DispatcherServlet 根据 View 进行渲染视图(即将模型数据填充至视图中);
- DispatcherServlet 响应用户。
常用注解
基本注解
@RequestMapping:给控制器方法绑定一个 uri;
@ResponseBody:将 Java 对象转成 json,并且发送给客户端;
@RequestBody:将客户端请求过来的 json 转成 Java 对象;
@RequestParam:当表单参数和方法形参名字不一致时,做一个名字映射;
@PathVarible:用于获取 uri 中的参数,比如 user/1 中 1 的值。
Rest风格的新api
@RestController:相当于 @Controlle r+ @ResponseBody;
@GetMapping:还包括 @DeleteMapping、@PostMapping、@PutMapping 等相当于 @RequestMapping 加对应的 http 请求方法;
其他注解
@SessionAttribute:声明将什么模型数据存入session;
@CookieValue:获取 cookie 值;
@ModelAttribute:将方法返回值存入 model 中;
@HeaderValue:获取请求头中的值。
使用技巧
中文乱码
通过配置 Spring MVC 字符编码过滤器来解决Post 请求中文乱码的问题,在 web.xml 中添加:
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<!-- 设置编码格式 -->
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
文件上传
- 引入jar包: commons-io-1.3.2.jar 和 commons-fileupload-1.2.1.jar;
- 配置xml:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
- 控制器兼容:
@RequestMapping("/upload")
public void upload(@RequestParam("file") MultipartFile file) throws Exception {
System.out.println(file.getOriginalFilename());
}
Spring 系列推荐
Spring02——Spring 中 Bean 的生命周期及其作用域
Spring04——Spring MVC 全解析的更多相关文章
- java spring mvc 全注解
本人苦逼学生一枚,马上就要毕业,面临找工作,实在是不想离开学校.在老师的教导下学习了spring mvc ,配置文件实在繁琐,因此网上百度学习了spring mvc 全注解方式完成spring的装配工 ...
- spring mvc: 多解析器映射(资源绑定视图解析器 + 内部资源[普通模式/]视图解析器)
spring mvc: 多解析器映射(资源绑定视图解析器 + 内部资源[普通模式/]视图解析器) 资源绑定视图解析器 + 内部资源(普通模式)视图解析器 并存方式 内部资源视图解析器: http:// ...
- Spring MVC视图解析器
Spring MVC提供的视图解析器使用ViewResolver进行视图解析,实现浏览器中渲染模型.ViewResolver能够解析JSP.Velocity模板.FreeMarker模板和XSLT等多 ...
- Spring MVC 全注解配置 (十一)
完整的项目案例: springmvc.zip 目录 实例 项目结构: 父级的pom配置: <?xml version="1.0" encoding="UTF-8&q ...
- 【Spring学习笔记-MVC-12】Spring MVC视图解析器之ResourceBundleViewResolver
场景 当我们设计程序界面的时候,中国人希望界面是中文,而美国人希望界面是英文. 我们当然希望后台代码不需改变,系统能够通过配置文件配置,来自己觉得是显示中文界面还是英文界面. 这是,Spring mv ...
- Spring MVC多解析器映射
如果想在spring mvc应用程序中使用多个视图解析器,那么可以使用order属性设置优先级顺序. 以下示例显示如何在Spring Web MVC框架中使用ResourceBundleViewRes ...
- Spring MVC原理解析
SpringMVC Spring MVC的工作原理 ①客户端的所有请求都交给前端控制器DispatcherServlet来处理,它会负责调用系统的其他模块来真正处理用户的请求. ② Dispatche ...
- Spring MVC视图解析器(ViewResolver)
视图解析器(ViewResolver)是 Spring MVC 的重要组成部分,负责将逻辑视图名解析为具体的视图对象.Spring MVC 提供了很多视图解析类,其中每一项都对应 Java Web 应 ...
- spring mvc:视图解析器
ModelAndView对象中的view对象,可以使用字符串来让Spring框架进行解析获得适合的视图.而解析View的就是ViewResolver技术. ViewResolver的定义如下: pub ...
随机推荐
- 【WPF学习】第五十一章 动画缓动
线性动画的一个缺点是,它通常让人觉得很机械且不能够自然.相比而言,高级的用户界面具有模拟真实世界系统的动画效果.例如,可能使用具有触觉的下压按钮,当单击时按钮快速弹回,但是当没有进行操作时它们会慢慢地 ...
- C++对拍
作为一名OIer,比赛时,对拍是必须的 不对拍,有时可以悔恨终身 首先,对拍的程序 一个是要交的程序 另一个可以是暴力.搜索等,可以比较慢,但是必须正确 下面是C++版对拍程序(C++ & c ...
- LaTex公式符号
下面这个网站是我认为比较齐全的网站 http://www.mohu.org/info/symbols/symbols.htm
- VMware虚拟机从安装到激活再到创建虚拟机解决黑屏、卡、死机系列问题教程第二篇
第二篇:在VMware中创建一个虚拟机(黑屏死机卡在最下面简单说一下你就懂了) 1.我们要打开我们已经安装好的VMware,然后点击创建新的虚拟机 2.然后选择自定义 3.下面这个默认,直接下一步 4 ...
- javascript的装饰者模式Decorator
刚开始看这段代码有点绕,现在回过头来看,so easy! Function.prototype.before = function(beforefn){ var _self = this; retur ...
- 19 JPQL
使用Spring Data JPA提供的查询方法已经可以解决大部分的应用场景,但是对于某些业务来说,我们还需要灵活的构造查询条件,这时就可以使用@Query注解,结合JPQL的语句方式完成查询 @Qu ...
- Idea - 常用基础配置
前言 IntelliJ IDEA是我们开发常用的一大神器,深得众程序猿青睐,但是在使用过程中,有一些默认设置我们使用起来并不是很友好...这里就记录一些我使用的配置. 1.多行显示同时打开的多个文件 ...
- django学习笔记 多文件上传
习惯了flask 再用django 还是不太习惯 好麻烦 配置文件也忒多了 不过还是要学的 之前只能一个一个文件长传,这次试试多个文件 不适用django的forms创建表单 直接在html中使用 ...
- Django 图片上传到数据库 并调用显示
环境:Django2.0 Python3.6.4 建立项目,数据库设置,就不说了. 直接上代码: 在models.py中,需要建立模型,这里使用了ImageField字段,用来存储图片路径,这个字段继 ...
- Vue2.0 【第四季】第1节 实例入门-实例属性
目录 Vue2.0 [第四季]第1节 实例入门-实例属性 第1节 实例入门-实例属性 一.Vue和Jquery.js一起使用 二.实例调用自定义方法 Vue2.0 [第四季]第1节 实例入门-实例属性 ...