filter

1,filter是过滤器,把满足条件的那些通过,不满足条件的那些不让通过。首先需要在web.xml中配置
如:<filter>
        <filter-name>myStruts1</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>myStruts1</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
/*表示所有url的都满足,是路径映射。
*.action,*.jsp是扩展映射。就是扩展名映射。
2,自定义filter是可以通过implements Filter来自定义,也可以通过继承extends StrutsPrepareAndExecuetFilter来实现。
如:public class MyStrutsFilter1 extends StrutsPrepareAndExecuteFilter {


@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
System.out.println("继承struts2的过滤器MyStrutsFilter1 before");
super.doFilter(arg0, arg1, arg2);//调用父类的doFilter的方法即可。
System.out.println("继承struts2的过滤器MyStrutsFilter1 after");
}
}


3,如果配置了多个Filter时,有多个filter都满足时,按道理是(filter-mapping的顺序)依次配置的顺序来进行调用。不过实际上是xx.jsp是满足条件的,当有多个filter满足条件时,会依次执行多个filter。而例如满足的是xx.action则只执行最上面的那个filter的配置的class。
如:<filter>
        <filter-name>myStruts1</filter-name>
        <filter-class>com.filter.MyStrutsFilter1</filter-class>
    </filter>
    <filter>
    <filter-name>myStruts2</filter-name>
    <filter-class>com.filter.MyStrutsFilter2</filter-class>
    </filter>
    
    <filter-mapping>
        <filter-name>myStruts1</filter-name>
        <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
    <filter-mapping>
    <filter-name>myStruts2</filter-name>
    <url-pattern>*.action</url-pattern>
    </filter-mapping>


4 过滤器有4中过滤器,request过滤器(默认的都是这种),forward过滤器,include过滤器和error过滤器,
request过滤器是默认的,是在<dispatcher>REQUEST</dispatcher>。因为默认的是request过滤器,所有才会出现当有多个filter满足xx.action时值执行最上面的那一个filter,别的就不执行了。request是只对客户端直接访问的起到过滤作用,而对过滤器转发请求的不起作用。
forward过滤器是只对过滤器请求的起作用。所以一般request和forward一起加上。
如:<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
include不是很懂。
error过滤器是当访问的目标资源不存在时,则会报一个错误如404.这时我们配置一个404的错误页面。则会跳转到该错误页面。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值