
原文:
1. 在struts1.x 系列中,一切的请求是通过一个servlet(ActionServlet)来管理控制的,在Struts2.X而是经过一个Filter 来处理请求的。Struts 2将体系控制器设计成Filter,而不是一个普通Servlet。因为设计者为了实现AOP(面向方面编程)定义.
struts1.x中
<servlet>
<servlet-name>action</servlet-name>

<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
。。。
< /servlet>
Struts2.X中
<filter>

<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>

<url-pattern>*.action</url-pattern></filter-mapping>
2.Struts2框架由3个部分组成:体系控制器FilterDispatcher、业务控制器和用户实现的业务观点元件。在这3个部分里,Struts2框架提供了体系控制器FilterDispatcher,而用户需要实现业务控制器和业务观点元件。
体系控制器:FilterDispatcher
FilterDispatcher是Struts2框架的体系控制器,该控制器作为一个Filter运行在Web应用中structs控制器,它负责拦截所有的用户请求,当用户请求到达时,该Filter会过滤用户请求。如果用户请求以action结尾,该请求将被转到Struts2框架处理。
Struts2框架获得了*.action请求后,将按照*.action请求的左边部分决定调用哪个业务观点元件,例如,对于login.action请求,Struts2调用名为login的Action来处理该请求。

Struts2应用中的Action都被定义在struts.xml文档中,在该文档中定义Action时,定义了该Action的name属性和class属性,其中name属性决定了该Action处理哪个用户请求,而class属性决定了该Action的实现类。
Struts2用于处理用户请求的Action实例,并不是用户实现的业务控制器,而是Action代理——因为用户实现的业务控制器并没有与ServletAPI耦合,显然无法处理用户请求。而Struts2框架提供了系列structs控制器,该系列负责将HttpServletRequest请求中的请求参数解析出来,传进到Action中,并回调Action的execute方法来处理用户请求。
显然,下面的处理过程是典型的AOP(面向切面编程)处理手段。图3.19显示了这样处理模型。

Struts2的和Action从图3.19中可以看出,用户实现的Action类仅仅是Struts2的Action代理的代理目标。用户实现的业务控制器(Action)则涵盖了对用户请求的处理。用户的请求数据涵盖在HttpServletRequest对象里,而用户的Action类无需访问HttpServletRequest对象。负责将HttpServletRequest里的请求数据解析出来,并传给业务观点元件Action实例。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-119301-1.html
低利息将持续下去
懂点哲学的小学生都知道世界上没有绝对的事