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表示将请求的UrlBean的名字(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表示将请求的UrlBean的名字(id)进行映射,此时本人在Index.jsp的表单中请求的地址是LoginServlet.do,所以bean的名字(id)必须为/LoginServlet.do

4.index.jsp/success.jsp页面

整个运行流畅

注:本人根据http://jinnianshilongnian.iteye.com/blog/1594806整理而出

整理SpringMVC的更多相关文章

  1. SpringMVC请求参数接收总结(一)

    前提 在日常使用SpringMVC进行开发的时候,有可能遇到前端各种类型的请求参数,这里做一次相对全面的总结.SpringMVC中处理控制器参数的接口是HandlerMethodArgumentRes ...

  2. 2.5万字长文简单总结SpringMVC请求参数接收

    这是公众号<Throwable文摘>发布的第22篇原创文章,暂时收录于专辑<架构与实战>.暂定下一篇发布的长文是<图文分析JUC同步器框架>,下一篇发布的短文是&l ...

  3. <mvc:default-servlet-handler/>导致SimpleUrlHandlerMapping失效

    整理springmvc的demo的时候遇到一件奇葩事情,本来就是想简单演示一下SimpleUrlHandlerMapping的用法就完活.结果写好demo怎么都无法进行映射,就好像根本就没有创建Sim ...

  4. 关于springMVC中component-scan的问题以及springmvc.xml整理

    关于springMVC中component-scan的问题以及springmvc.xml整理 一.component-scan问题和解决办法         最近在学习使用springMVC+myba ...

  5. SpringMVC—Struts2拦截器学习网址整理

    引自:http://blog.csdn.net/wp1603710463/article/details/49982683 SpringMVC—Struts2拦截器学习网址整理 最近项目中遇到权限相关 ...

  6. 关于springmvc中常用的注解,自己也整理一下

    1.@Controller 在springMVC中@controller主要用在控制层的类上,之前只知道用注解开发的时候必须加一个@controller ,今天看了别的大佬整理的才知道为什么这么用,控 ...

  7. myBatis+Spring+SpringMVC框架面试题整理

    myBatis+Spring+SpringMVC框架面试题整理(一) 2018年09月06日 13:36:01 新新许愿树 阅读数 14034更多 分类专栏: SSM   版权声明:本文为博主原创文章 ...

  8. Spring SpringMVC SpringBoot SpringCloud 注解整理大全

    Spring SpringMVC SpringBoot SpringCloud 注解整理 才开的博客所以放了一篇以前整理的文档,如果有需要添加修改的地方欢迎指正,我会修改的φ(๑˃∀˂๑)♪ Spri ...

  9. springmvc学习资料整理

    springmvc接口开发返回XML/JSON数据 1.SpringMVC中使用@RequestBody,@ResponseBody注解实现Java对象和XML/JSON数据自动转换(上):http: ...

随机推荐

  1. Dubbo+Nacos做注册中心和配置中心

    项目结构 相关代码 EchoService public interface EchoService { String echo(String msg); } DefaultEchoService @ ...

  2. ARDUINO驱动LCD1602 (利用库函数)

    LCD 1602简介 工业字符型液晶,能够同时显示16x02即32个字符.(16列2行) 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母.数字.符号等的点阵型液晶模块.它由若干个5X7或 ...

  3. docker简单介绍----Dockerfile命令

    DockerFile的组成部署: 下面优先介绍下Dcokerfile的基础指令 一.CMD指令:容器启动时要莫热门运行的命令,如果有多个CMD指定,最后一个生效 使用方法: CMD ["ex ...

  4. Groovy Closure简介

    什么是闭包(Closure) 在Groovy中,闭包是一段匿名的代码段,它可以有参数,返回值,并且能够赋值给一个变量.闭包中使用的变量可以是在闭包外部定义的,也可以是在闭包内部定义的.

  5. wqy的easy

    题解不再赘述,\(wqy\) 写的很详细了,记点细节. \(A:\) \(n+1\) 位置也要差分一下,否则无法保证正确性. \(B:\) 贪心喜提二十分...充分考虑时间和\(std\)复杂度的关系 ...

  6. 二丶CSS

    一.css概述 CSS是Cascading Style Sheets的简称,中文称为层叠样式表,对html标签的渲染和布局 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. 二.css的 ...

  7. MongoDB基础一篇就够了

    MongoDB linux安装MongoDB Windows安装MongoDB 查看当前数据库名称 db 查看所有数据库名称 列出所有在物理上存在的数据库 show dbs 切换数据库 如果数据库不存 ...

  8. Windows Internals 笔记——线程调度

    1.线程内核对象中的CONTEXT反应了线程上一次执行时CPU寄存器的状态.大约每隔20ms,Windows都会查看所有当前存在的线程内核对象.Windows在可调度的线程内核对象中选择一个,并将上次 ...

  9. 使用Set集合对List集合进行去重

    /** * 使用Set集合对List集合进行去重 **/ public class SetTest { /** * List集合的泛型为Integer类型 * * @author hongwei.li ...

  10. 2018-2019-2 《网络对抗技术》Exp0 Kali安装 Week1

    - 2018-2019-2 <网络对抗技术>Exp0 Kali安装 Week1 - 安装过程 - 安装Kali VMware上学期已经装好了,Kali的镜像文件是从同学那拷过来的,所以这两 ...