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: