PHP速学视频免费教程(入门到精通)
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
本篇文章给大家带来的内容是关于SpringMVC工作流程的详细介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
SpringMVC 工作流程:
详细图:
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(...)方法)
4.选择好合适的HandlerAdapter后就会开始执行Handler。在填充Handler的入参过程中,根据配置,Spring将帮你做一些额外的工作(我们不需要管):
EG:
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></bean><!-- 处理器映射器 --><!-- 根据bean的 name 查找Handler , 将action的URL 配置在bean的name中--><bean></bean><!-- 配置处理器 --><bean></bean><!-- 配置视图解析器 --><bean></bean>
6.视图开发 ,jsp文件
nbsp;html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <meta><title>Insert title here</title> asdfadfadfa ${list }
测试结果: 开启服务器后, 发送 http://localhost:8080/SpringMVC/hello.action的请求
页面显示:
对应理解springMVC 的流程即可。
已抢7213个
抢已抢94860个
抢已抢14828个
抢已抢52074个
抢已抢194765个
抢已抢87280个
抢