`
sfeve
  • 浏览: 42527 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

struts2拦截器(Interceptor)与传统拦截器(Filter)

阅读更多

Filter
    该过滤器的方法是创建一个类XXXFilter实现此接口,并在该类中的doFilter方法中声明过滤规则,然后在配置文件web.xml中声明他所过滤的路径
    <filter>
        <filter-name>XXXFilter</filter-name>
        <filter-class>
            com.web.util.XXXFilter
        </filter-class>
    </filter>
    
    <filter-mapping>
        <filter-name>XXXFilter</filter-name>
        <url-pattern>*.action</url-pattern>
    </filter-mapping>

Interceptor 
     该过滤器的方法也是创建一个类XXXInterceptor实现此接口,在该类中intercept方法写过滤规则,不过它过滤路径的方法和Filter不同,它与strut.xml结合使用,
   创建一个strus.xml的子配置文件struts-l99-default.xml,它继承与struts2的struts-default,此配置文件是其他子配置文件的父类,只要是继承与该文件的配置文件所声明的路径都会被它过滤 如下
 <package name="XXX-default" namespace="/" extends="struts-default">
        <interceptors>
            <interceptor name="authentication" class="com.util.XXXInterceptor" />
            
            <interceptor-stack name="user">
                <interceptor-ref name="defaultStack" />
                <interceptor-ref name="authentication" />
            </interceptor-stack>

            <interceptor-stack name="user-submit">
                <interceptor-ref name="user" />
                <interceptor-ref name="token" />
            </interceptor-stack>

            <interceptor-stack name="guest">
                <interceptor-ref name="defaultStack" />
            </interceptor-stack>

            <interceptor-stack name="guest-submit">
                <interceptor-ref name="defaultStack" />
                <interceptor-ref name="token" />
            </interceptor-stack>

        </interceptors>
        <default-interceptor-ref name="user" />
   </package>
 比较一,filter基于回调函数,我们需要实现的filter接口中doFilter方法就是回调函数,而interceptor则基于Java本身的反射机制,这是两者最本质的区别。
 比较二,filter是依赖于servlet容器的,即只能在servlet容器中执行,很显然没有servlet容器就无法来回调doFilter方法。而interceptor与servlet容器无关。
 比较三,Filter的过滤范围比Interceptor大,Filter除了过滤请求外通过通配符可以保护页面,图片,文件等等,而Interceptor只能过滤请求。
 比较四,Filter的过滤例外一般是在加载的时候在init方法声明,而Interceptor可以通过在xml声明是guest请求还是user请求来辨别是否过滤。

转自:http://blog.csdn.net/pengsky2002/archive/2008/02/01/2077441.aspx

分享到:
评论

相关推荐

    使用struts2拦截器对登陆权限验证

    综合使用servlet filter与struts2 interceptor对权限进行验证。

    拦截器和控制器的区别

    2、拦截器不依赖于servlet容器,通过动态代理实现,过滤器依赖于servlet容器 3、拦截器在方法前后,异常前后等调用,而过滤器只能在请求前和请求后各调一次。 4、拦截器可以利用依赖注入,因此在spring框架程序中,...

    struts学习笔记(2)

    当前struts2的filter过滤到一个.action结尾的请求的时候,会把这个请求交给struts2内部的拦截器(interceptor) 2)拦截器起到什么作用 可以帮我们丰富action的功能,比自动类型转换(页面传一个String类型的id,接收的...

    名为责任链或者拦截器或者过滤器的简单模拟

    看到strut2的Interceptor(拦截器), tomcat源码的Valve(tomcat中各种各样容器如Wrapper,Context都是靠Valve实现各种功能), 以及最早学习到的java web中的javax.servlet.Filter的概念, 都是一种链式的处理流程...

    struts2流程与流程图

    但在调用之前,ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)。  一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果result。 Struts 2的核心控制器是...

    基于Java(Struts2 框架)+Mysql实现(Web)学生成绩管理系统【100010053】

    数据验证:HTML5 的原生验证模式、Struts2 的 Validation 验证框架以及 Interceptor 拦截器、JavaEE 的 Filter 过滤器 学生端(修改个人信息、修改密码、查看成绩) 教师端(成绩查看与修改、录入成绩、所教科目管理...

    学生信息管理系统 JSP课程设计(内含完整源码和设计说明手册)

    学生成绩管理系统JSP课程设计 可实现学生和老师两个端的登录;...教师个人信息修改、密码修改、成绩录入与...3、数据验证:HTML5的原生验证模式、Struts2的Validation验证框架以及Interceptor拦截器、JavaEE的Filter过滤器

    spring2.5 struts2.0 hibernate3.2.5 搭建的企业级开发基础模块

    还有登录拦截器:com.light.framework.interceptor 字符集过滤器:com.light.framework.filter 项目字符集请用UTF-8 com.light.framework包中还有些小东西 自己看看吧 我是用MyEclipse6.0开发的(MyEclipse...

    FilterAndInterceptor

    本资源是包含过滤器、拦截器的一个完整的MyEclipse项目。下载后可以直接导入MyEclipse中部署运行。 关于过滤器和拦截器: 过滤器--是在java web中,提前过滤掉一些信息或者提前设置一些参数,然后再传入servlet/...

    J2EE应用开发详解

    118 8.3.5 Struts2配置文件 119 8.4 Action的配置方式 121 8.4.1 动态方法调用 121 8.4.2 设置action元素的method属性 122 8.4.3 使用通配符配置action 122 8.4.4 默认action 123 8.5 拦截器Interceptor 123 8.5.1 ...

    java后台框架源码

    action:存放struts2控制类的包 dao:数据库访问封装 enm:系统中使用到的常量包,这里不是用的常量,用的是枚举替代常量 entity:hibernate对应的orm与数据库表一一对应的实体类 filter:Log4jFormatFilter(格式化...

    当当网全套源码(附带邮箱验证功能)

    org.tarena.dang.interceptor :拦截器 3)struts配置文件结构 web.xml(配置Filter控制器) struts.xml (struts主配置文件) struts-user.xml(用户模块配置文件) struts-main.xml(浏览模块配置文件) ...

    webx3框架指南PDF教程附学习Demo

    • Struts • Webwork • Tapestry • Spring MVC 以上框架都是非常优秀的。说实话,如果阿里巴巴网站在2001年开始,就有这么多可选择的话,无论选择哪一个都不会有问题。因为这些年来,所有的开源Web框架都在...

Global site tag (gtag.js) - Google Analytics