servlet的三大组件:
2.1 (servlet) Servlet接口: javax.servlet.Servlet; 作用:用于开发动态网页
2.2 (过滤器)Filter接口: javax.servlet.Filter;
2.3 (监听器)Listener接口: javax.servlet.*
过滤器的生命周期(实现Filter接口)
构造方法: 创建过滤器对象的时候调用。在加载当前项目的时候加载过滤器,只调用1次。单 实例的多线程。
init方法: 在创建完过滤器对象之后调用。只调用1次。
doFilter方法: 每次访问目标资源的时候,doFilter就会被调用。
destory方法:在销毁过滤器对象的时候调用。
过滤编码问题,压缩网页
装饰者模式
1)编写一个BufferedReader装饰者类,继承被装饰者类。
2)在装饰类中定义一个成员变量,用于接收被装饰者类的对象。
3)在装饰者类的构造方法中传入被装饰者类,使用第二步定义的变量接收被转入的 被装饰者类。
4)在装饰类类中重写被装饰者类方法,对其方法进行增强。
压缩网页内容
在不影响用户浏览效果前提下,减少服务器输出的数据,减少消耗带宽
压缩网页的技术: gzip压缩技术
GZIPOutputStream类进行网页内容压缩
ByteArrayOutputStream byteArr = new ByteArrayOutputStream();
GZIPOutputStream gzip = new GZIPOutputStream(byteArr);
gzip.write(sb.toString().getBytes());
gzip.finish();
byte[] result = byteArr.toByteArray();
System.out.println("压缩后的数据大小:"+result.length);
response.setHeader("content-encoding", "gzip");
response.getOutputStream().write(result);