过滤器和拦截器的区别

来源:互联网 发布:怎么样设置网络打印机 编辑:程序博客网 时间:2024/06/06 11:04

过滤器和拦截器的区别

过滤器和拦截器的区别
1、拦截器是基于java的反射机制的,而过滤器是基于函数回调。
2、过滤器依赖于servlet容器,而拦截器不依赖于servlet容器。
3、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。
4、在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次

拦截器:就是在你调用一个方法前,或者调用一个方法后,做一些业务逻辑的操作,例如打印字符串。

下面通过实例来看一下过滤器和拦截器的区别:

使用拦截器进行/admin 目录下jsp页面的过滤:

<package name="newsDemo" extends="struts-default" namespace="/admin">             <interceptors>                      <interceptor name="auth"  class="com.test.news.util.AccessInterceptor" />        <interceptor-stack name="authStack">            <interceptor-ref name="auth" />        </interceptor-stack>    </interceptors>    <!-- action -->    <action name="newsAdminView!*" class="newsAction" method="{1}">        <interceptor-ref>            <interceptor-ref name="defaultStack"/>            <interceptor-ref name="authStack">        </interceptor-ref>    </action></package>

下面是我实现的拦截器:

package com.test.news.util; import java.util.Map;  import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation;  import com.opensymphony.xwork2.interceptor.AbstractInterceptor;import com.test.news.action.AdminLoginAction;public class AccessInterceptor extends AbstractInterceptor {           private static final long serialVersionUID = -4291195782860785705L;    public String intercept(ActionInvocation actionInvocation) throws Exception {         ActionContext actionContext = actionInvocation.getInvocationContext();        Map session = actionContext.getSession();        Object action = actionInvocation.getAction();        if (action instanceof AdminLoginAction) {            return actionInvocation.invoke();        }        //check session        if(session.get("user")==null ){            return "logout";        }        return actionInvocation.invoke();//go on    }}

过滤器:就是在你访问某个JSP、Servlet或者Action之前,过滤掉一些信息。

使用过滤器进行/admin 目录下jsp页面的过滤,首先在web.xml进行过滤 器配置:

<filter>    <filter-name>access filter</filter-name>    <filter-class>com.test.news.util.AccessFilter</filter-class></filter>     <filter-mapping>    <filter-name>access filter</filter-name>    <url-pattern>/admin</url-pattern></filter-mapping>

转载自:https://wenku.baidu.com/view/0883d535b90d6c85ec3ac692.html

0 0
原创粉丝点击