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)等实现对部分数据的存取访问
过滤器:
接口: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)等实现对部分数据的存取访问