每日一题,我就不信我讲不清了w(゚Д゚)w

1.springMVC是如何请求的?-2019.8.5

springMVC = struts2+spring.

请求涉及组件:前端控制器DispatcherServlet、处理器映射器HandlerMapping、处理器适配器HandlerAdapter、视图解析器View Resolver、处理器Handler、视图View

涉及组件的介绍

DispatcherServlet   由框架提供

接收请求,响应结果,相当于转发器,中间处理器,减少其他组件耦合度。

相当于mvc模式中的c,DispatcherServlet是整个流程控制的中心,由它调用其他组件处理用户的请求

HandlerMapping   由框架提供 根据请求的url查找Handler。负责根据用户请求找到处理器Handler即Controller,SpringMVC提供了不同映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等.
HandlerAdapter   由框架提供 按照特定特定规则(HandlerAdapter要求的规则)去执行Handler,通过HandlerAdapter对处理器进行执行——适配器模式的应用
Handler   工程师开发 根据HandlerAdapter[适配器]的要求去做,Handler涉及具体业务需求,[即后端控制器用controller表示]
ViewResolver   由框架提供 进行视图解析,根据逻辑视图名解析成真正的视图View
View   工程师开发 一个接口,支持不同View类型(jsp、freemarker、pdf...)

请求的使用顺序或地点:前端控制器作为中心,负责调用其他组件处理请求,当用户发起请求来到前端控制器的时候:

1.前端控制器调用处理器映射器,解析到请求对应的处理器[代码处理逻辑,Handler],返回 执行链[HandlerExecutionChain ]

2.前端控制器调用处理器适配器,执行处理器[Handler],返回 ModelAndView

3.前端控制器调用视图解析器,进行视图解析,返回 View

4.前端控制器 对视图 进行 渲染,向用户展示响应结果

2.struts2框架??-2019.8.7

Struts2以WebWork优秀的设计思想为核心,吸收了Struts框架的部分优点,提供了一个更加整洁的MVC设计模式实现的Web应用程序框架。

Struts2的MVC各个部分都是围绕着struts.xml文件执行的,解放了控制器的负担,解决了硬编码的问题。

请求涉及组件或配置文件:FilterDispatcher核心控制器、ActionMapper动作映射器、ActionProxy动作代理器、ConfigurationManager、struts.xml、ActionInvocation、Interceptor、Action、Result、Templates、Tab Subsystem

涉及组件的介绍:

FilterDispatcher 由框架提供

整个Struts2的调度中心,相当于MVC中的C。

所有请求都经过核心控制器;

Filter调用动作映射类,确认是否应该被struts2处理,返回确认信息;

ActionMapper 由框架提供、struts core 判断请求是否应该被struts2处理,是的话返回确认信息[一个对象],确认信息描述请求对应的ActionInvocation
ActionProxy 由框架提供、struts core ActionProxy会创建动作类的代理类[ActionInvocation代理实例]
ConfigurationManager 由框架提供 xwork配置的管理中心,看做struts.xml在内存中的对应
struts.xml 工程师开发 应用配置文件,负责URL与Action之间的映射的配置,执行后跳转的result配置等...
ActionInvocation 由框架提供 真正调用并执行Action,有一个Action实例和Action所依赖的拦截器实例,它会执行这些拦截器、Action以及相关的Rsult.[先拦截器后Action]
Interceptor   无状态的类,自动拦截Aciton
Action 工程师开发 处理用户请求,封装业务数据
Result struts core 不同视图类型的抽象封装模型,不同的视图类型会对应不同的Result实现,Struts支持多种视图类型,比如:JSP、Freemarker...
Templates 工程师开发 视图类型的页面模板,比如JSP
Tag Subsystem struts core struts2的标签库

 

请求的使用顺序或地点:

当用户发起请求:

1.用户请求数据封装进request对象[请求发送到servlet容器],经过核心过滤器传递

2.核心过滤器Filter调用动作映射类,确认是否应该被struts2处理,返回确认信息

3.确认调用Action,FilterDispatcher将控制委托给ActionProxy,ActionProxy创建一个动作类代理类ActionInvocation

4.ConfigurationManager读取配置文件struts.xml,确定执行那个方法,返回确认信息

5.执行拦截器,执行Action类的方法

6.ActionInvocation根据struts.xml中配置的返回类型返回结果视图Result,执行拦截器的后处理

6.根据Result对象信息,生成用户响应信息封装到response对象,返回给用户[生成响应过程中可以使用Struts2 框架中继承的标签,在此过程中会再次涉及到ActionMapper]

 

每日一题,我就不信我讲不清了w(゚Д゚)w_第1张图片

 

 

 

 

 

你可能感兴趣的:(Java,Java)