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

拦截器

时间:2015-08-17 06:24:35      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:

拦截器:在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

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