Struts2详细执行流程自己总结

Struts2详细执行流程总结

这篇文章是在参考大量资料之下总结出来的,一是减少学习Struts2同学的疑惑,二是顺便自己总结一下提升自己的知识水平,三是抗遗忘。欢迎纠正,谢谢各位朋友,若不慎涉及他人的版权,请qq联系1354611365,我将删除。

一、struts2总体框架。

先给出总体框架,从战略上分析。保持学习过程中不会出现走邪路的状况。

 

1Struts2的总体框架预览

二、解释框架图中的各个层次的意思。

1、我们一般会把我们做的项目部署到Tomcat服务器上,由服务器解析我们所做的Struts2项目。

2、项目部署完毕后通过jsp运行项目

其实jsp表单里面含有提交到action的内容的。

 

2jsp里的表单

 

服务器开始启动,会加载先web.xml文件,web.xml其实是一个监管器

 

3web.xml文件里的内容

 

 

StrutsPrepareAndExecuteFilter。表面意思就是struts准备并执行过滤器

其真正含义有两条与这句话差不多。

一是为struts2执行做一些相关的准备。如加载相关的配置信息。
二是为struts2request请求处理相关的信息。如设置编码格式和找到对应的action映射类

StrutsPrepareAndExecuteFilter

包含两个主要方法:

void    doFilter(javax.servlet.ServletRequest req, javax.servlet.ServletResponse res, javax.servlet.FilterChain chain) 

  void    init(javax.servlet.FilterConfig filterConfig) 

doFilter()主要是通过ActionContex包装httpServletRequest,和HttpServletResponeActionContext包装请求和响应信息然后提交各Action类。至于怎么搞的自己看源码。

Init()方法主要是读取响应的struts2的配置文件。顺序读取文件为;

 

 

1default.properties(框架提供):配置了struts运行的参数

2struts-default.xml(框架提供)struts框架加载创建、Result、拦截器等,框架运行要用

3struts-plugin.xml(插件提供):插件文件,比如:第三方插件,转json插件、struts2spring整合插件。。

4struts.xml(程序员定义):它能配置的内容和struts-default.xml一样,重点要配置Action自定义运行参数、自定义的拦截器

5struts.properties(程序员定义):可以配置struts运行的参数

 

注意:图片中用的是FilterDispatcher类在struts2.1.3中已经过时了,改为了StrutsPrepareAndExecuteFilter类了

此时已经进入这个struts2框架的这个部位了。

 

4 Struts2行进图

三、通过ActionMapper寻找对应的Action

上次说到web.xml检测到jsp表单里的提交到action的内容就会被检测拦截

然后然后通过StrutsPrepareAndExecuteFilte类进行过滤包装,将请求信息转发给ActionMapper,ActionMapper检测这个信息是否要Struts2进行处理。

如果需要,ActionMapper反馈给StrutsPrepareAndExecuteFilter,然后StrutsPrepareAndExecuteFilter创建ActionProxy对象。

ActionPropxy并不知道具体的action内容。于是又调用ConfigurationManager

,ConfigurationManager之前将struts.xml,等一些struts2配置文件加载进入了内存。因此它能对struts.xml进行处理。

通过struts.xml的内容去查找相应的Action类。

那么如何查找呢?

<form action="user_Register.action" method="post"

表单action内容为“user_Register.action

 

5:查找actionl

 

 

 

6ActionProxy中间层的作用(注意箭头)

 

四、ActionProxy获知要使用的action后创建ActionInvocation类这个类包含四个属性.

 

简单的来说通过ActionInvocation获取了前端的各种属性,比如name, age,等提交的表格信息内容。还获取了struts2的各种配置信息,还有ConfigurationManager查找到的具体执行的action,等。然后经过业务层处理将内容返回出来。也就是通过struts.xml中的result信息返回响应的页面。

 

7result返回响应的页面

 

 

8httpServletReponse响应页面。

 

经过result找到响应页面通过HttpServletResponse响应用户的请求。

 

 

1、HttpServeletRequest

请求信息。

2、ActionContextCleanUP

3、Other filters

2,3不重要,貌似现在已经没用了。

4、Filter Dispatcher

过滤器,这个应该是最底层的过滤器。

5、ActionMapper

Struts2中主要检测请求信息是否需要Struts2处理。

6、ActionProxy

一个中间层,就是可以调用其他类什么的。

7、ConfigurationManager

ConfigurationManager则负责将struts.xml文件中配置文件映射到内存中去的

8、Struts.xml

Struts配置文件需要程序员填写。

9、ActionInvocation

包含四个属性分别获取前端传递的值,action,struts.xml信息,其他一些数据。

10、Interceptor

拦截器不是太理解应该是获取前端传递的属性值,然后封装到action的属性域中。

11、Tag Subsystem

Struts2自带标签库没用

12、Templete

Struts2的前端模版,没用吧,不清楚。

13、HttpServletResponse

响应用户的类。

 

最后奉上一个struts2的执行图解

 

猜你喜欢

转载自blog.csdn.net/qq_33322074/article/details/80137667