filter

1. filter过滤器的概述: 可以过滤从客户端向服务器发送的请求.  进行IP过滤,脏话过滤




2.编写一个类,实现filter接口,重写三个方法.在web.xml配置过滤器filter和filter-mapping和servlet类似,
      在url-pattern中写拦截谁,从而实现拦截,在chain.dofilter(request,response)来放行.




3.filter 创建和销毁:   服务器启动就会创建, 服务器关闭就会销毁.




4.Filterconfig:获取过滤器配置的名称,初始化参数,方法和servletconfig的方法相同.




5.filterchain: 过滤器链,拦截两遍.执行顺序: 与<filter-mapping>有关; 就一个放行方法.
                                                                                                 6.在拦截器中,先判断session中是否有用户信息,有就放行,如果没有,
    从cookie中获取, 到数据库查询,有,将用户信息存入到session,放行.


    1.把request强转成httpservletrequest,先判断session里面,因为session里面也有信息,来显示昵称.
     
    2.session中没有,针对浏览器没有关闭的情况,因为session依赖会话级别的cookie.查询cookie中,
有的cookie的值,切割字符串,封装数据,查询数据库.有,把信息放到session 中,放行.


    3.配置过滤器,                                                                                                                                                                                                                                                                                  7.过滤器相关的配置: 


    两种拦截方式 
       <url-pattern>的配置: 
        完全路径匹配   :以/开始  如: /demo4/dmoe.jsp;
        目录匹配, 扩展名匹配和servlet相同.                                                        
 
   在filtermapping标签里面,                                                                                     <servlet-name>根据servlet的名称来拦截servlet. 
            dispatcher> 可配置多个拦截,request:默认值  forward 转发  include 包含 
           
error (全局)错误页面跳转   注意:路径不要写固定的某一个路径
  
                                                                                               8.通用字符集编码的过滤器.
     在filter中,增强request的getparameter方法.模板类httpservletrequestwrapper .class
       实现了httpservletrequest 所有方法.                                                                                                                                                              1.建立一个类继承模板类, 重写getParameter(){获得请求方式,然后判断.处理编码}                                                                                                                        2.在filter中,先把request强转,然后新建自己类.                                                                   
                                                                                
                 动态代理                   
                                                                                                                                                                                                   1.装饰者模式增强的特点: 在增强目标对象的方法时,前提要知道增强的方法名称.


    缺点: 要实现的接口中如果方法太多,那么实现的方法就很多.




2.代理的概述: 
  1. Proxy.newProxyInstance(类加载器,实现的接口集合,InvocationHand 处理接口); 相当于又一个接口的
实现类;  调用目标对象中任何方法,都会执行处理类中的invoke方法.


  2. 在invocationhead接口的实现类中,获得目标对象的引用.


  3.在invoke方法中 参数 :  (产生代理对象的引用,当前目标类的方法,正在执行方法中的参数)




3.动态代理增强: 不需要知道方法名称,灵活,代码量不大.




4.编写通用性处理乱码问题;


    编写一个过滤器, (request.getclass.getclasLoader)
      在invoke方法内,判断增强的方法是否是getparameter();然后得到请求方式request.getmethod();
           判断请求方式,运行处理的方法,得到值进行处理,  m.invoke(对象引用,);




5.AOP的底层使用的就是动态代理.  面向切面编程.解决oop中遇到的一些问题.




6.类加载器: 将class文件加载到JVM中执行文件.


    1.引导类加载器: 加载是JDK中JRE的rt.jar,就是现有的java类


    2.扩展类加载器: 加载*.jar,ExclassLoader


    3.应用类加载器: 加载自定义类


  这些类加载器如何保证类只会加载一次且不会重复加载.  有一个类加载器的全盘委托机制,3-2-1;先委托到
  1加载器中,然后把自己负责的java类加载完成,然后再次依次执行.1-2-3;




7.编写一个通用的servlet:


















                                                                                                                                          

你可能感兴趣的:(filter)