zoukankan      html  css  js  c++  java
  • Struts2中的过滤器

         过滤器:

               过滤器可以处理用户的请求和程序响应的内容,可用于权限控制、编码转换的场合。过滤器是servlet规范中的一部分,不是只有Struts2有。

        使用过滤器之前你得定义一个过滤器(实例化一个对象),也可以根据需求自己写一个类(继承java.Servlet.Filter接口,实现init,doFilter和destory三个方法)然后在这里实例化,以便下面使用。

    1 <filter>
    2         <filter-name>过滤器名称</filter-name>
    3         <filter-class>过滤器对应的类</filter-class>
    4         <!-- 初始化参数 -->
    5         <init-param>    
    6             <param-name>参数名称</param-name>
    7             <param-value>参数值</param-value>
    8         </init-param>
    9 </filter>

        过滤器必须和特定的URL关联才能发挥作用,关联的方式有3种:(过滤器名就是上面定义的过滤器)

                 1.与一个URL资源关联(仅仅是在请求xxx.jsp时过滤)

    1 <filter-mapping>
    2         <filter-name>过滤器名</filter>
    3         <url-pattern>xxx.jsp</url-pattern>
    4 </filter-mapping>

        2.与一个URL目录下的所有资源关联(任何的请求都会过滤)

    1 <filter-mapping>
    2         <filter-name>过滤器名</filter>
    3         <url-pattern>/*</url-pattern>
    4 </filter-mapping>

        3.与一个Servlet关联(请求指定的Servlet时会过滤)

    1 <filter-mapping>
    2         <filter-name>过滤器名</filter>
    3         <url-pattern>Servlet名称</url-pattern>
    4 </filter-mapping>

       这样,一个简单的Struts2的过滤器就配置好了(以上的配置都是在web.xml中进行的)。但它的实现流程是怎么样的呢?

               假设现在有一个客户端请求(假设该请求已经被关联),这个请求会经过一系列的过滤器(过滤器链),每次经过一个过滤器都会根据当前过滤器对应的类实例化一个对象(调用init方法),并且调用里面的doFilter方法(该方法里面放的是你自己过滤的逻辑),只有通过了当前的过滤器才会到下一个过滤器,直到通过全部过滤器,如果没有通过则调到指定的错误页面。(下面是当一个过滤器通过时执行下一个过滤器的代码,在doFilter方法中)

    1  // this is a normal request, let it pass through
    2     chain.doFilter(request, response);

    然后调用FilterDispatchar,根据用户的不同的请求做不同的处理.....(不是过滤器的内容,就不再阐述)

  • 相关阅读:
    【19】网站搭建:标签功能
    【18】网站搭建:自定义用户模型
    【17】网站搭建:Celery定时刷新缓存
    【16】网站搭建:Redis缓存提速
    【15】网站搭建:用户注册登录
    【14】网站搭建:xadmin后台强化
    【13】网站搭建:全文搜索
    C#,一种简单的方式实现滚动鼠标缩放图片,平移
    WebGIS的开发方式
    C#中找不到MouseWheel事件的解决办法
  • 原文地址:https://www.cnblogs.com/baikaizhuliangshui/p/11621235.html
Copyright © 2011-2022 走看看