码迷,mamicode.com
首页 > 其他好文 > 详细

Struts2架构分析和运行机制

时间:2015-07-31 09:09:16      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:java   struts2.0   filter   tomcat   struts   

实例分析

1.在浏览器中输入url地址后,会通过http协议发送给tomcat,tomacat收到请求后查看访问的是哪个

webapplication(如下图的Struts2_0100_Introduction),tomcat把Struts2_0100_Introduction交给对应的

webapplication程序去处理。

技术分享


2.之后会参考Struts2_0100_Introduction下的对应的web.xml文件,将请求交给Struts2Filter去处理


技术分享

(“/*”为这个项目中的所有文件,所有的项目请求都会被捕捉)

3.filter会调用dofilter,参考Struts.xml

技术分享

(1)在参考Struts.xml时首先会参考namespace
(2)之后找对应的action
(3)找对应的result
(4)找到对应的result后会将对应的请求给jsp文件
(5)jsp文件将内容反馈给客户端

技术分享


Struts2运行机制

技术分享

从图中可以看出一个请求在Struts2中的处理过程如下:

1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求;

2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin);

3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action;

4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy;

5、ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类;

6、ActionProxy创建一个ActionInvocation的实例。

7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。

8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但

不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用

Struts2框架中继承的标签。在这个过程中需要涉及到ActionMapper。

核心控制器


    FilterDispatcher是早期struts2的过滤器,后期的都用StrutsPrepareAndExecuteFilter了,如 2.1.6、2.1.8。

StrutsPrepareAndExecuteFilter名字已经很能说明问题了,prepare与execute,前者表示准备,可以说是指filter中

的init方法,即配制的导入;后者表示进行过滤,指doFilter方法,即将request请求,转发给对应的 action去处理。

可以把他拆分成StrutsPrepareFilter和StrutsExecuteFilter,可以在这两个过滤器之间加上我们自己的过滤

器.!StrutsPrepareAndExecuteFilter是控制器的核心,就是MVC的Struts 2实现中控制层(Controller)的核心。


    三个初始化参数:    

      1、config参数:指定要加载的配置文件。逗号分割。   

      2、actionPackages参数:指定Action类所在的包空间。逗号分割。    

      3、configProviders参数:自定义配置文件提供者,需要实现ConfigurationProvider接口类。逗号分割。 
    
想想为什么这么麻烦,中间要经过一次中转?

    将请求和拿到的结果(视图)分开,要想换成别的视图直接配一下result就可以了,更灵活。和我MVC很像。


版权声明:本文为博主原创文章,未经博主允许不得转载。

Struts2架构分析和运行机制

标签:java   struts2.0   filter   tomcat   struts   

原文地址:http://blog.csdn.net/zhangzijiejiayou/article/details/47164543

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!