SpringMVC 工作流程
SpringMVC 工作流程:
流程图,截取与----》(http://blog.csdn.net/zuoluoboy/article/details/19766131):
详细图:
SpringMVC工作流程描述
1.用户向服务器发送请求时,请求被Spring 前端控制器DispatcherServlet获取,如详细图第一步
2.DispatcherServlet对请求URL进行解析(比如我们发送一个url如下的请求
http://localhost:8080/SpringMVC/hello.action),就会得到请求资源标示符(URI,相当于就是上面的hello.action )。然后根据URI,调用处理器映射器(HandlerMapping)获得该Handler配置的所有相关对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回。
3.DispatcherServlet获取上面返回的Handler,并选择一个适合的HandlerAdapter。(附注:如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(...)方法)
HttpMessageConveter: 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息
数据转换:对请求消息进行数据转换。如String转换成Integer、Double等
数据根式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等
数据验证: 验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中
5. Handler执行完成后,向DispatcherServlet 返回一个ModelAndView对象(包含视图名或视图名和模型)
6.根据返回的ModelAndView对象,选择一个合适的ViewResolver返会给DispatcherServlet ;
7.ViewResolver结合,Model和View来渲染视图
8.最后将视图渲染结果返回给客户端
组件名词解释:
1.DispatcherServlet:前端控制器
等同于以前的Controller, 是整个流程的中心, 负责调用其他组件
2.HandlerMapping: 处理器映射器
负责根据请求找到Handler(处理器),springMVC中可以根据不同的映射器实现不同映射,比如 xml配置方式,注解方式,接口方式等
3.Handler:后端控制器
在前端控制器的控制下对具体的用户请求进行处理,所以一般情况下都需要开发者进行根据需求进行开发。
4.HandlerAdapter:处理器适配器
处理Handler,可以对多种类型的处理器进行执行,这是对适配器模式的应用体现。
5.ViewResolver
: 视图解析器
负责将处理结果生成view视图、开发者可以根据需要开发view
入门程序(详细步骤): 在理解了springMVC的工作流程后,下面我们根据流程步骤,来实现我们的入门程序,步骤如下:
1.导入我们的spring架包(一般去官网下载即可 4.2版本用的比较多)
2.在web.xml配置前端控制器
- <servlet>
- <servlet-name>springmvc</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- </servlet>
- <!-- 让servlet随服务启动 -->
- <servlet-mapping>
- <servlet-name>springmvc</servlet-name>
- <url-pattern>*.action</url-pattern>
- </servlet-mapping>
这里说一下 我们的拦截方式:
1. 拦截固定后缀名的URL : 如 *.action, *.do
2. 拦截所有:设置为/,但是该方法会导致静态文件(css,js.jpg)被拦截下来不能正常显示,所以该方式需要特殊处理
注意:不能设置拦截所有为/* 该方式是错误的,因为请求action时,当action跳转到jsp时会再次被拦截,出现异常:根据jsp路径找不到映射地址
3.设置springmvc的配置文件
- <servlet>
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>WEB-INF/springmvc.xml</param-value>
- </init-param>
- </servlet>
4.开发处理器
- public class Hello implements Controller{
- @Override
- public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
- List list = new ArrayList<>();
- list.add("one");
- list.add("two");
- ModelAndView mv = new ModelAndView();
- mv.addObject("list",list);
- return mv;
- }
- }
5.在springmvc.xml中配置
- <!-- 配置适配器 -->
- <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
- <!-- 处理器映射器 -->
- <!-- 根据bean的 name 查找Handler , 将action的URL 配置在bean的name中-->
- <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
- <!-- 配置处理器 -->
- <bean name="/hello.action" class="com.mt.controller.Hello"></bean>
- <!-- 配置视图解析器 -->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
6.视图开发 ,jsp文件
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Insert title here</title>
- </head>
- <body>
- asdfadfadfa
- ${list }
- </body>
- </html>
测试结果: 开启服务器后, 发送 http://localhost:8080/SpringMVC/hello.action的请求
页面显示:
对应理解springMVC 的流程即可。
SpringMVC 工作流程的更多相关文章
- SpringMVC工作流程 --通透较详细
SpringMVC工作流程 SpringMVC工作流程 流程说明(重要): (1)客户端发送一个http请求给前端控制器(DispatcherServlet): (2)前端控制器(DispacherS ...
- springmvc工作流程
Spring MVC工作流程图 图一 图二 Spring工作流程描述 1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServle ...
- SpringMVC工作流程描述
向服务器发送HTTP请求,请求被前端控制器 DispatcherServlet 捕获. DispatcherServlet 根据 <servlet-name>-servlet.xml 中的 ...
- 简洁的描述SpringMVC工作流程
1.客户端发送来的请求 经过前端控制器(springDispatcherServlet)调用映射器(HandlerMapping)来找到对应的执行链(HandlerExecutionChain)对象, ...
- SpringMVC第一篇【介绍、入门、工作流程、控制器】
什么是SpringMVC? SpringMVC是Spring家族的一员,Spring是将现在开发中流行的组件进行组合而成的一个框架!它用在基于MVC的表现层开发,类似于struts2框架 为什么要使用 ...
- 面试题:SpringMVC的工作流程
SpringMVC是当今最主流的Web MVC框架,没有之一,要做一名合格的JavaWeb工程师,学好它势在必行! 与Struts2原理不同,SpringMVC是通过最基础最传统的servlet来实现 ...
- Java Spring MVC工作流程
本文是对 SpringMVC 工作流程的总结,自己一定要可以用语言描述. 名词解释: DispatcherServlet:前端控制器,是 SpringMVC 工作流程的中心,负责调用其他组件,在系统启 ...
- 了解SpringMVC框架及基本工作流程
传统原生的JSP+Servlet在开发上过程上虽然简单明了,JSP页面传递数据到Servlet,Servlet整理数据(逻辑开发)或者从数据库提取数据接着再转发到JSP页面上,但是其似乎只能止步于此, ...
- springmvc 运行原理 Spring ioc的实现原理 Mybatis工作流程 spring AOP实现原理
SpringMVC的工作原理图: SpringMVC流程 . 用户发送请求至前端控制器DispatcherServlet. . DispatcherServlet收到请求调用HandlerMappin ...
随机推荐
- OCP换题库了,052新加的考题及答案整理-第16题
16.Your database Is configured In archivelog mode. The USERS01 tablespace Is currently online. You a ...
- 如何构建debian包
1)安装dh_make如下: sudo apt-get intasll aptitude sudo aptitude install dh_make 2)以jsoncpp为例,说明如何生 ...
- 【maven】---聚合和继承
前言 自从我知道写maven实战这本书的作者长得随心所欲后,我再拿起这本书真心的不想看前言了.下面分享一下maven中的所谓的聚合和继承. 内容 下文中的子本指的是:多个maven项目. 父本指的是: ...
- ubuntu下面的某些软件安装
1. python 下面的mysql驱动:不是在pip里面安装,执行下面命令 apt-get install python-mysqldb
- Linux kill 指定进程名的四种方式
方法1 pkill 进程名 方法2 killall 进程名 方法3 kill -9 $(ps -ef|grep 进程名关键字|grep -v grep|awk '{print $2}') 这个是利用管 ...
- springBoot 实现中文国际化
一:实现效果如下: 二 SpringBoot 国际化配置 1.创建国际化配置文件(3个): messages.properties messages.user.name=用户名 messages.us ...
- tomcat正常启动后http://localhost:8080/报错404
病症: tomcat在eclipse里面能正常启动,而在浏览器中访问http://localhost:8080/不能访问,且报404错误.同时其他项目页面也不能访问.关闭eclipse里面的tomca ...
- tomcat下各个文件夹的作用
1.bin目录:这个文件夹包含的是启动/关闭tomcat的脚本,里面有startup.sh(Linux环境下启动tomcat脚本)和startup.bat(Windows环境下启动tomcat脚本), ...
- C#集合之集(set)
包含不重复元素的集合称为“集(set)”..NET Framework包含两个集HashSet<T>和SortedSet<T>,它们都实现ISet<T>接口.Has ...
- luogu P2365 任务安排(FJOI2019 batch)
洛谷传送门 FJOI 日常原题 $2333$(似乎还不如 SDOI2012 任务安排 $2333$) 显然考虑 $dp$,这个是经典的把未来的代价先计算的 $dp$,然后才是斜率优化 一开始想状态时一 ...