标签:
拦截器:在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。
Ⅰ、实现原理
Struts 2的拦截器实现相对简单。当请求到达Struts 2的ServletDispatcher时,Struts 2会查找配置文件,并根据其配置实例化相对的拦截器对象,然后串成一个列表(list),最后一个一个地调用列表中的拦截器,如图1所示。
Ⅱ、使用struts2里已经定义的拦截器
使用方法:在struts.xml文件里做下面配置即可:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<include file="struts-default.xml"></include> //关联struts2定义拦截器的文件
<package name="mystruts" extends="struts-default">
<action>
<interceptor-ref name="interceptorName"></interceptor-ref> //在这个action中使用某某拦截器,interceptorName--已经定义好的拦截器名
<result name="success">/success.jsp</result>
</action>
</package>
</struts>
Ⅲ、自定义拦截器
所有的Struts 2的拦截器都直接或间接实现接口com.opensymphony.xwork2.interceptor.Interceptor。除此之外,大家可能更喜欢继承类com.opensymphony.xwork2.interceptor.AbstractInterceptor。
通过继承AbstractInterceptor,我们可以很方便地完成一个拦截器类,写好拦截器类之后需要在struts.xml中做一下配置:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="mystruts" extends="struts-default">
<!-- 定义拦截器 -->
<interceptors>
<interceptor name="interceptorName" class="拦截器类的URL"></interceptor>
</interceptors>
<!-- 定义action -->
<action name="mystruts">
<interceptor-ref name="interceptorName"></interceptor-ref>
<result name="success">/success.jsp</result>
</action>
</package>
</struts>
标签:
原文地址:http://www.cnblogs.com/wyTT/p/4735417.html