Struts2框架由3部分组成:核心控制器FilterDispatcher,业务控制器和用户实现的业务逻辑组件。
FilterDispatcher作为Struts2框架的核心控制器,该控制器作为web应用的中Filter,拦截所有的用户请求。如果用户请求以action结尾,该请求
将被转入Struts 2框架处理。
Struts 2框架获得了*.action请求后,将根据*.action请求的前面部分决定调用哪个业务逻辑组件,例如,对于login.action请求,Struts 2调用名为login的Action来处理该请求。
Struts 2应用中的Action都被定义在struts.xml文件中,在该文件中定义Action时,定义了该Action的name属性和 class属性,其中name属性决定了该Action处理哪个用户请求,而class属性决定了该Action的实现类。
Struts 2用于处理用户请求的Act ion实例,并不是用户实现的业务控制器,而是Act ion代理 ——因为用户实现的业务控制器并没有与Servlet API耦合,显然无法处理用户请求。而Struts 2框架提供了系列拦截器,该系列拦截器负责将 HttpServletRequest请求中的请求参数解析出来,传入到Action中,并回调Action的execute方法来处理用户请求。
显然,上面的处理过程是典型的AOP(面向切面编程)处理方式。
Struts 2应用中的Action都被定义在struts.xml文件中,在该文件中定义Action时,定义了该Action的name属性和 class属性,其中name属性决定了该Action处理哪个用户请求,而class属性决定了该Action的实现类。
Struts 2用于处理用户请求的Act ion实例,并不是用户实现的业务控制器,而是Act ion代理 ——因为用户实现的业务控制器并没有与Servlet API耦合,显然无法处理用户请求。而Struts 2框架提供了系列拦截器,该系列拦截器负责将 HttpServletRequest请求中的请求参数解析出来,传入到Action中,并回调Action的execute方法来处理用户请求。
显然,上面的处理过程是典型的AOP(面向切面编程)处理方式。
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<span style="white-space:pre"> </span><filter-name>struts2</filter-name>
<span style="white-space:pre"> </span><url-pattern>*.action</url-pattern>
<span style="white-space:pre"> </span></filter-mapping>
DelegatingFilterProxy<span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; background-color: rgb(245, 245, 245);">其实主要作用就是一个代理模式的应用,可以把servlet 容器中的filter同spring容器中的bean关联起来。</span>
web.xml文件配置:
<filter>
<filter-name>cookieFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetBeanName</param-name>
<param-value>cookieFilter</param-value>
</init-param>
</filter>
<filter-mapping>
<span style="white-space:pre"> </span><filter-name>cookieFilter</filter-name>
<span style="white-space:pre"> </span><url-pattern>*.action</url-pattern>
<span style="white-space:pre"> </span></filter-mapping>
初始化spring IOC容器
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>