java filter的一些理解

时间:2021-10-14 16:13:44

java filter即  java中的过滤器:

一、

* web项目中只有三个组件
 * 过滤器filter  ↓    级 别
 * 监听器            ↓   级 别
 * servlet        ↓   级 别
 */
/*

二、
 *使用 需要配置web.xml
 *filter拥有 三个声明周期
 * init,destory,doFilter(执行过滤任务),用户请求时每次都执行doFilter()方法
 * 而init,destory只会执行一次init在tomcat启动服务时就加载,在tomcat终止时,执行destory
 */、

三、
/*
 * 过滤器的九大功能
 * 1:过虑或是设置字符集。最最基本的[功能简单,很容易学会。]。对post有效。
  2:过虑关键字如。
    3:在拦截的过程中修改request(包装、代理)以实现程序要求。
      如通过get方式可能获取中文字符。
    4:设置对某些页面缓存或是对某些页面不缓存。
    5:验证用户是否是有效的用户。即已经登录了的用户。
    6:自动登录[复习cookie,]。
    7:对输出的数据进行压缩。或是对全站进行压缩。
    8:用过虑器来管理事务,OSIV模式,与使用代理管理事务对比与分析。
    9:实现权限过虑器。-综合示例。相对比较复杂。
 */
四、

4.1 //tomcat  将所有的servlet  listener    filter 变成单例 每次访问不重新新建一个servlet    默认单例,除非服务终止,否则不会销毁!

4.2   //在一个过滤器执行结束,如果还有过滤器将继续执行过滤器,没有则执行相对应的servlet     
      4.3   //执行这句话就是   放行,继续向下执行程序,   不执行就是阻止。
       public void doFilter(res,req,chain){

chain.doFilter(request, response);}

4.4   在filter的init方法中config可以在初始化过滤器的时候读取到在web.xml中配置的参数

//FilterConfig config初始化从web.xml中读取初始化数据

五、

url-pattern的设置:
    /* = 对所有url都请求这个servlet。| 都被这个filter过虑.
    /  = 只可以给servlet。 - 所有其他的servlet不处理的url都由这个url所指定的servlet处理。默认servlet。
    *.jspx = 所有以jspx结束都请求到这个Servlet或是被某个Filter拦截。如http://local:8080/proj/abc.jspx
   /jsps/*  = 所有路径中以/jsps/开头的都请求到这个servlet或是被某个filter拦截到。
   /jsps/*.jspx  错误的:SUN规定*两边不可以同时出现字符。
   
   六、
   过滤器链
   
   根据web.xml中的顺序 进行过滤
    每次dofilter   放行 进行下一个过滤
   filter-mapping  在前先执行\
   
   《!一个过滤器只干一个活!--》

七、

可以通过实现过滤器的接口创建一个过滤器:

实现一个过滤器的方法 :implements Filter

添加三个函数init();destory();doFilter();创建,销毁,运行。三个方法

创建完过滤器要配置相应的web.xml文件:

<filter>

<filter-name>filter</filter-name>

<filter-class>cn.it.Filter1</filter-class>

</filter>

<filter-mapping>

<filter-name>filter</filter-name>

<url-pattern>/*</url-pattern>

<servlet-name>servlet.hello</servlet-name>

</filter-mapping>

基本想的起来的filter的东西就这么多吧,具体的一些实现会在后面的随笔中加一些filter的实际应用