我的位置:

不懂这个,你别告诉我你懂Java软件!

发布人:管理员

谈起软件开发,我们首先想到的就是Java。因为Java作为一门面向对象的语言来讲,已经发展的非常熟悉了。那么今天我给大家分享的是Javaweb开发里面的过滤器的使用。(本头条号是技术型文章,欢迎我们IT软件人士订阅哦,多多支持,如有写的不好的地方,望见谅)

一、 过滤器案例

  1. 缓存:禁止浏览器缓存所有动态页面

    a.response.setDateHeader("Expires",-1);

    b.response.setHeader("Cache-Control","no-cache");

    c.response.setHeader("Pragma","no-cache");

  2. 强制浏览器缓存所有的静态页面

不懂这个,你别告诉我你懂Java软件!

    3实现用户自动登陆功能示例

    1)在用户登陆成功后,发送一个名称为user的cookie给客户端,cookie的值为用户名和md5加密后的密码

    2)编写过滤器检查用户是否带名为user的cookie来,如果有,检查用户名和密码做自动登陆

    不懂这个,你别告诉我你懂Java软件!

    核心思路:

    1.用户登陆后找LoginServlet , LoginServlet中做登陆,如果登陆成功, 获得用户选择的自动登陆时间

    2.创建一个新的cookie 将用户名和密码用 “_”连接作为value,autoLogin作为name

    3.设置cookie 的有效路径 request.getContextPath() 作用于整个web应用

    4.设置cookie的有效时间为 autologintime

    5.发送 cookie,写一个过滤器,对全站的资源进行拦截, 检查用户发送的cookie有没有一个名为autologin的,如果有 取出用户名和密码 再次做登陆处理 如果登陆成功, 将 user 存入session ,放行出于安全性考虑, cookie 中的密码应该进行 md5 加密.

    4. 统一全站字符编码功能示例

    response和request的post的方式好办,只需要做以下操作即可。

    response.setContentType("text/html;charset=utf-8");

    request.setCharacterEncoding("utf-8");

    对于request的get方式需要手工转换,此时就需要用到 包装设计模式decorator包装 getParameter方法

    不懂这个,你别告诉我你懂Java软件!

    5.怎样发送压缩后的响应数据,思路示例

    给 IE 浏览器会送的数据 需要进行gzip 压缩 访问速度快 省点浏览,在最后将数据打给浏览器的时候, 将 response 中的数据全部压缩,在过滤器放行的时候传入一个 假的 response 提供缓冲区, 这样后面的资源都会写入我的缓冲区,缓冲区满了 或者 请求快结束的时候 将缓冲区的数据压缩后写入 真的 response 。

    备注:j2se 提供了一个流GZIPOutputStream 用于 gzip压缩, j2se 提供了一个流 ZIPOutputStream 用于 zip 压缩。