内容简介:引入相关依赖:spring的基本包、springmvc需要的spring-webmvc,日志相关的slf4j-log4j12,jsp相关的jstl、servlet-api、jsp-api。因为DispatcherServlet本身就是一个Servlet,所以需要在web.xml配置。一、使用默认加载springmvc配置文件的方式,必须按照以下规范:
二、mvc 设计模式|思想
Model 模型层 (javaBean组件 = 领域模型(javaBean) + 业务层 + 持久层) View 视图层( html、jsp…) Controller 控制层(委托模型层进行数据处理) 复制代码
三、springmvc简介
springmvc是一个web层mvc框架,类似struts2。 复制代码
四、springmvc和spring之间关系
springmvc是spring的部分,其实就是spring在原有基础上,又提供了web应用的mvc模块。 复制代码
五、sprigmvc和struts2的比较
实现机制: struts2是基于过滤器实现的。 springmvc是基于servlet实现的。 运行速度: 因为过滤器底层是servlet,所以springmvc的运行速度会稍微比structs2快。 struts2是多例的 springmvc单例的 参数封装: struts2参数封装是基于属性进行封装。 springmvc是基于方法封装。颗粒度更细。 复制代码
六、springmvc的工作原理图
七、springmvc具体流程步骤
⑴ 用户发送请求至DispatcherServlet。 ⑵ DispatcherServlet收到请求调用HandlerMapping查询具体的Handler。 ⑶ HandlerMapping找到具体的处理器(具体配置的是哪个处理器的实现类),生成处理器对象及处理器拦截器(HandlerExcutorChain包含了Handler以及拦截器集合)返回给DispatcherServlet。 ⑷ DispatcherServlet接收到HandlerMapping返回的HandlerExcutorChain后,调用HandlerAdapter请求执行具体的Handler(Controller)。 ⑸ HandlerAdapter经过适配调用具体的Handler(Controller即后端控制器)。 ⑹ Controller执行完成返回ModelAndView(其中包含逻辑视图和数据)给HandlerAdaptor。 ⑺ HandlerAdaptor再将ModelAndView返回给DispatcherServlet。 ⑻ DispatcherServlet请求视图解析器ViewReslover解析ModelAndView。 ⑼ ViewReslover解析后返回具体View(物理视图)到DispatcherServlet。 ⑽ DispatcherServlet请求渲染视图(即将模型数据填充至视图中) 根据View进行渲染视图。 ⑾ 将渲染后的视图返回给DispatcherServlet。 ⑿ DispatcherServlet将响应结果返回给用户。 复制代码
八、springmvc核心组件说明
(1)前端控制器DispatcherServlet(配置即可) 功能:中央处理器,接收请求,自己不做任何处理,而是将请求发送给其他组件进行处理。DispatcherServlet 是整个流程的控制中心。 (2)处理器映射器HandlerMapping(配置即可) 功能:根据DispatcherServlet发送的url请求路径查找Handler 常见的处理器映射器:BeanNameUrlHandlerMapping,SimpleUrlHandlerMapping, ControllerClassNameHandlerMapping,DefaultAnnotationHandlerMapping(不建议使用) (3)处理器适配器HandlerAdapter(配置即可) 功能:按照特定规则(HandlerAdapter要求的规则)去执行Handler。 通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展多个适配器对更多类型的处理器进行执行。 常见的处理器适配器:HttpRequestHandlerAdapter,SimpleControllerHandlerAdapter,AnnotationMethodHandlerAdapter (4)处理器Handler即Controller(程序猿编写) 功能:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler。 (5)视图解析器ViewReslover(配置即可) 功能:进行视图解析,根据逻辑视图名解析成真正的视图。 ViewResolver负责将处理结果生成View视图,ViewResolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。 springmvc框架提供了多种View视图类型,如:jstlView、freemarkerView、pdfView... (6)视图View(程序猿编写) View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf...) 复制代码
九、springmvc入门案例
- 创建一个maven工程
- 配置pom.xml
引入相关依赖:spring的基本包、springmvc需要的spring-webmvc,日志相关的slf4j-log4j12,jsp相关的jstl、servlet-api、jsp-api。
- 配置web.xml
因为DispatcherServlet本身就是一个Servlet,所以需要在web.xml配置。
- 配置springmvc.xml
一、使用默认加载springmvc配置文件的方式,必须按照以下规范:
①命名规则:-servlet.xml ====> springmvc-servlet.xml
②路径规则:-servlet.xml必须放在WEB-INF下边
二、如果要不按照默认加载位置,则需要在web.xml中通过标签来指定springmvc配置文件的加载路径,如上图所示。
- 自定义Controller(处理器)
将自定义的 Controller 处理器配置到 spring 容器中交由 spring 容器来管理,因为这里的 springmvc.xml 配置文件中处理器映射器配置的是 BeanNameUrlHandlerMapping ,根据名字可知这个处理器映射器是根据 bean (自定义Controller) 的 name 属性值url去寻找执行类 Handler(Controller) , 所以bean的name属性值即是要和用户发送的请求路径匹配的 url 。
- 定义视图页面
根据视图解析路径:WEB-INF/jsps/index.jsp
- 根据代码分析springmvc执行流程
- 处理器映射器(配置多个处理器映射器可以共存)
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> 复制代码
功能:根据bean(自定义Controller)的name属性的url去寻找执行类Controller。
- 处理器适配器(配置多个处理器适配器可以共存)
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> 复制代码
功能:自定义的处理器(Controller)实现了Controller接口时,适配器就会执行Controller的具体方法。
- 处理器适配器源码SimpleControllerHandlerAdapter
SimpleControllerHandlerAdapter会自动判断自定义的处理器(Controller)是否实现了Controller接口,如果是,它将会自动调用处理器的handleRequest方法。
Controller接口中有一个方法叫handleRequest,也就是处理器方法。
因此,自定义的Controller要想被调用就必须实现Controller接口,重写Controller接口中的处理器方法。
- 添加日志
- 运行结果
如果觉得这篇文章对你有帮助 请记得帮忙点个赞或关注 在此先谢谢各位 O(∩_∩)O 复制代码
以上所述就是小编给大家介绍的《springmvc工作原理及源码分析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Spring源码原理篇(一)
- 剖析 React 源码:调度原理
- Vue 源码(一):响应式原理
- Vuex 框架原理与源码分析
- Vue源码解析:双向绑定原理
- Spring源码分析:BeanPostProcessor原理
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
We Are the Nerds
Christine Lagorio-Chafkin / Hachette Books / 2018-10-2 / USD 18.30
Reddit hails itself as "the front page of the Internet." It's the third most-visited website in the United States--and yet, millions of Americans have no idea what it is. We Are the Nerds is an eng......一起来看看 《We Are the Nerds》 这本书的介绍吧!