整理SpringMVC
Spring Web MVC核心架构图:

核心架构图流程如下:
1.首先用户发送请求------->DispatcherServlet(前端控制器),前端控制器收到请求后自己不进行处理,而是委托给其他解析器处理,定位好似全称的流程控制
2.DispatcherServlet(前端控制器)-------->HandlerMapping(映射处理器),HandlerMapping会把请求映射为HandlerExecutionChain对象,并返回给DispatcherServlet
3.DispatcherServlet----->HandlerAdapter(处理适配器),HandlerAdapter(处理适配器)将会把处理器包装为适配器,从而适配多种类型的处理器
4.HandlerAdapter------->Controller,HandlerAdapter会根据适配的结果调用真正的处理器的功能处理方法,完成功能处理;并返回一个ModelAndView对象
5.ModelAndView的逻辑视图名——> ViewResolver, ViewResolver将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术;
、 View——>渲染,View会根据传进来的Model模型数据进行渲染,此处的Model实际是一个Map数据结构,因此很容易支持其他视图技术;
、返回控制权给DispatcherServlet,由DispatcherServlet返回响应给用户,到此一个流程结束。
具体实现:
1.首先在Web.xml中配置DispatcherServlet即前端控制器


配置完成后,我们已经将请求交给了Dispatcher处理,Dispatcher会默认加载/WEB-INF/[配置的Dispatcher名字]-servlet.xml配置文件
2.在dispatcher-servlet.xml中配置映射处理器(HandlerMapping)、映射适配器(HandlerAdapter)


如图中注释所示:
处理映射器
BeanNameUrlHandlerMapping表示将请求的Url和Bean的名字(id)进行映射,如Url为xxx/hello.do,则Spring中必须有一个名字(id)为"/hello.do"的Bean(具体配置在下面)
处理适配器
所有实现了org.springframework.web.servlet.mvc.Controller接口的类都可以作为SpringWEBMVC的处理器,它会把处理映射器(HanderMapping)包装的适配器与处理器进行匹配,方式就是上面述的请求的URL和Bean的ID
3.在dispatcher-servlet.xml中配置ViewResolver(视图解析器)

如图中注释所示:
视图解析器会将设置的视图名与前缀和后缀进行拼接,如:视图名为hello,则该jsp视图页面的存放应该为/WEB-INF/hello.jsp
3.编写处理器部分的代码并在dispatcher-servlet.xml中配置Controller

处理器必须实现org.springframework.web.servlet.mvc.Controller接口
public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) :功能处理方法,实现相应的功能处理,比如收集参数、验证参数、绑定参数到命令对象、将命令对象传入业务对象进行业务处理、最后返回ModelAndView对象;
ModelAndView:包含了视图要实现的模型数据和逻辑视图名;"mv.addObject("messager", "HelloWorld");
"表示添加模型数据,此处可以是任意POJO对象;"mv.setViewName("success");"表示设置逻辑视图名为"success",视图解析器会将其解析为具体的视图,如前边的视图解析器InternalResourceViewResolver会将其解析为"WEB-INF/success.jsp"。
在dispatcher-servlet.xml中配置Controller

如上图注释和处理映射器部分解释所示
BeanNameUrlHandlerMapping表示将请求的Url和Bean的名字(id)进行映射,此时本人在Index.jsp的表单中请求的地址是LoginServlet.do,所以bean的名字(id)必须为/LoginServlet.do
4.index.jsp/success.jsp页面


整个运行流畅

注:本人根据http://jinnianshilongnian.iteye.com/blog/1594806整理而出
整理SpringMVC的更多相关文章
- SpringMVC请求参数接收总结(一)
前提 在日常使用SpringMVC进行开发的时候,有可能遇到前端各种类型的请求参数,这里做一次相对全面的总结.SpringMVC中处理控制器参数的接口是HandlerMethodArgumentRes ...
- 2.5万字长文简单总结SpringMVC请求参数接收
这是公众号<Throwable文摘>发布的第22篇原创文章,暂时收录于专辑<架构与实战>.暂定下一篇发布的长文是<图文分析JUC同步器框架>,下一篇发布的短文是&l ...
- <mvc:default-servlet-handler/>导致SimpleUrlHandlerMapping失效
整理springmvc的demo的时候遇到一件奇葩事情,本来就是想简单演示一下SimpleUrlHandlerMapping的用法就完活.结果写好demo怎么都无法进行映射,就好像根本就没有创建Sim ...
- 关于springMVC中component-scan的问题以及springmvc.xml整理
关于springMVC中component-scan的问题以及springmvc.xml整理 一.component-scan问题和解决办法 最近在学习使用springMVC+myba ...
- SpringMVC—Struts2拦截器学习网址整理
引自:http://blog.csdn.net/wp1603710463/article/details/49982683 SpringMVC—Struts2拦截器学习网址整理 最近项目中遇到权限相关 ...
- 关于springmvc中常用的注解,自己也整理一下
1.@Controller 在springMVC中@controller主要用在控制层的类上,之前只知道用注解开发的时候必须加一个@controller ,今天看了别的大佬整理的才知道为什么这么用,控 ...
- myBatis+Spring+SpringMVC框架面试题整理
myBatis+Spring+SpringMVC框架面试题整理(一) 2018年09月06日 13:36:01 新新许愿树 阅读数 14034更多 分类专栏: SSM 版权声明:本文为博主原创文章 ...
- Spring SpringMVC SpringBoot SpringCloud 注解整理大全
Spring SpringMVC SpringBoot SpringCloud 注解整理 才开的博客所以放了一篇以前整理的文档,如果有需要添加修改的地方欢迎指正,我会修改的φ(๑˃∀˂๑)♪ Spri ...
- springmvc学习资料整理
springmvc接口开发返回XML/JSON数据 1.SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换(上):http: ...
随机推荐
- Java读取一个文本文件拼接成一个字符串(readFileToString)
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.I ...
- 2018-2019-2 20165231王杨鸿永《网络对抗》Exp1 PC平台逆向破解
实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShe ...
- Django-F,Q查询,Templatetags,session,中间件
内容总览1.ORM的多对多的使用 1>语法与实例 2>聚合与分组 3>F与Q查询 4>事务2.模板之自定义 1>初始化 2>filter 3>si ...
- 【转】Beginning Game Programming v2.0
Beginning Game Programming v2.0 Last Updated 8/19/18 Greetings everyone, welcome to the ground up re ...
- Selenium-WebDriver框架常用基本操作
1.基础元素定位的八种方法 WebDriver driver = new ChromeDriver(); WebElement element = new WebElement(); 1.1 By.i ...
- 洛谷P5284 [十二省联考2019]字符串问题 [后缀树]
传送门 思路 设\(dp_i\)表示以\(i\)结尾的\(A\)串,能达到的最长长度. 然后发现这显然可以\(i\)往自己控制的\(k\)连边,\(k\)往能匹配的\(j\)连边,就是个最长路,只要建 ...
- (转载)配置 Linux 操作系统的 JDK
系统Ubuntu,下载jdk-9.0.1 1,切换到root ,创建文件夹 xxxx@ubuntu:~$ sudo su root@ubuntu:~# mkdir /usr/java 2,找到下载 ...
- 2018-2019-2 20165328《网络对抗技术》Exp0 Kali安装week1
1.下载Kaili安装资源并解压安装到虚拟机: 2.修改默认字体与共享文件设置: 3.更新软件源与下载中文输入法: 4.安装完成.
- 合并多个对象并且去重的2种写法(es6)
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- CocosCraetor中图像资源Texture和SpriteFrame的区别
Texture是保存在GPU缓冲中的一张纹理.是由一张图片创建获得的. SpriteFrame是Texture+Rect,根据一张纹理材质来剪切获得. SpriteFrame是Texture+Rect ...