Model 模型层 (javaBean组件 = 领域模型(javaBean) + 业务层 + 持久层)
View 视图层( html、jsp…)
Controller 控制层(委托模型层进行数据处理)
复制代码
springmvc是一个web层mvc框架,相似struts2。
复制代码
springmvc是spring的部分,其实就是spring在原有基础上,又提供了web应用的mvc模块。
复制代码
实现机制:
struts2是基于过滤器实现的。
springmvc是基于servlet实现的。
运行速度:
由于过滤器底层是servlet,因此springmvc的运行速度会稍微比structs2快。
struts2是多例的
springmvc单例的
参数封装:
struts2参数封装是基于属性进行封装。
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将响应结果返回给用户。
复制代码
(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...)
复制代码
引入相关依赖:spring的基本包、springmvc须要的spring-webmvc,日志相关的slf4j-log4j12,jsp相关的jstl、servlet-api、jsp-api。html
由于DispatcherServlet自己就是一个Servlet,因此须要在web.xml配置。前端
1、使用默认加载springmvc配置文件的方式,必须按照如下规范:java
①命名规则:-servlet.xml ====> springmvc-servlet.xmlweb
②路径规则:-servlet.xml必须放在WEB-INF下边spring
2、若是要不按照默认加载位置,则须要在web.xml中经过标签来指定springmvc配置文件的加载路径,如上图所示。后端
将自定义的 Controller 处理器配置到 spring 容器中交由 spring 容器来管理,由于这里的 springmvc.xml 配置文件中处理器映射器配置的是 BeanNameUrlHandlerMapping ,根据名字可知这个处理器映射器是根据 bean (自定义Controller) 的 name 属性值url去寻找执行类 Handler(Controller) , 因此bean的name属性值便是要和用户发送的请求路径匹配的 url 。 设计模式
根据视图解析路径:WEB-INF/jsps/index.jspapi
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
复制代码
功能:根据bean(自定义Controller)的name属性的url去寻找执行类Controller。bash
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
复制代码
功能:自定义的处理器(Controller)实现了Controller接口时,适配器就会执行Controller的具体方法。mvc
Controller接口中有一个方法叫handleRequest,也就是处理器方法。
所以,自定义的Controller要想被调用就必须实现Controller接口,重写Controller接口中的处理器方法。
若是以为这篇文章对你有帮助
麻烦帮忙点个赞或关注
这对我来讲是一种很好的鼓励
在此先谢谢各位
O(∩_∩)O
复制代码