Filter

31 篇文章 0 订阅
24 篇文章 0 订阅
Filter:
过滤器:
接口:javax.servlet.Filter
位于服务器端和Web资源之间,起一个过渡的作用.
单例模式:与Servlet相似

作用:
符合条件,才能做事情,即权限控制
完成自动 登录。
数据压缩控制。
敏感数据过滤
图片/数据转换过滤

需要在XML配置文件,配置在<servlet>之前
配置格式:
<filter>
<filter-name></filter-name>
<filter-class></filter-class>
</filter>
<filter-mapping>
<filter-name></filter-name>
<url-pattern></url-pattern>
</filter-mapping>

//web服务器调用
doFilter(ServletRequest request, 
ServletResponse response,
    FilterChain chain)
    //将请求再次交给Web资源(静态/动态)
    
chain.doFilter(request,response);
把过滤过的内容交给下一个过滤器或者web资源.



Filter链
多个Filter的集合叫Filter链
Web应用中,可有可无
Filter链的顺序:
与XML配置中的<filter>的配置信息位置无关,
与XML配置中的<filter-mapping>的配置信息位置相关。越前的先执行。


Filter的生命周期:

Filter的创建,一定要有空参构造,即实例化之后,

空参构造()
//初始化
init()
//执行
doFilter()
//销毁
destroy()

//Filter的实例池
在XML中一个<filter>可以对应多个<fitler-mapping>
主要设置:<fitler-map>中的<url-pattern>的值设置权限




禁止浏览器缓存(多种浏览器)
response.setDateHeader("expires",-1);
response.setHeader("cache-control","no-cache");
response.setHeader("pargram","no-cache")


需要浏览器缓存,但设置时间
//毫秒
response.setDateHeader("expires",System.currentTimeMillis()+1*24*60*60*1000);
//秒
response.setHeader("cache-control",System.currentTimeMillis()+1*24*60*60+"");
//秒
response.setHeader("pargram",System.currentTimeMillis()+1*24*60*60+"")




对Cookie中的中文进行编码
String username=null;
username=URLEncoder.encode(username,"UTF-8");
Cookie cookie=new Cookie("username",username);
cookie.setMaxAge(10*1000);

取得Cookie:
Cookie[] cookies=request.getCookies();
//迭代和判断
....



映射Filter的细节
在xml中的<filter-mapping>中的<dispatcher>属性值
过滤方式:
REQUEST(默认)
地址栏中输入URL
超链接
重定向

FORWARD
重定向时进行过滤

INCLUDE
包含时过滤

ASYNC

ERROR
异常时进行过滤,c是需要在xml中进行全局配置.
配置方法 :
<filter>之前
全局:3次经过Filter
<error-code>
<exception-type>异常类名</exception-type>
<location>异常出错后的页面</location>
</error-code>

局部:2经过Filter
<error-page>
<exception-type>异常类名</exception-type>
<location>异常出错后的页面</location>
</error-page>






 同时处理get/post同时请求时出现在乱码时.用装饰设计模式进行扩展功能.
  request.setcharacerEncoding("UTF-8");
  request.getParameter("username");
 
 


用装饰设计模式进行对web进行扩展Filter类











DAO模式(Data Access Object)等实现对部分数据的存取访问





































































































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wscwsc58888

只为正式环境创作

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值