一、web过滤器作用:
对服务器接受的请求和响应给浏览器的资源进行管理
保护servlet
二、web过滤器的使用
1.创建一个Filter
接口的普通java类
2.复写接口的方法
init()
服务器启动的时候自动调用‘’
(单引号)
doFilter()
主动调用chain.doFilter
放行
destory()
服务器关闭的时候自动调用
3.在web.xml中配置过滤器,使服务器自动调用过滤器
举例代码如下:
<filter>
<filter-name>myFilter</filter-name>
<filter-class>edu.yjsj.filter.Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>myFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
备注:以上为单个web.xml配置文件,其中
url-pattern:/*
表示拦截所有的请求url-pattern:*.do
表示拦截所有.do
结尾的请求,一般进行模块化拦截处理url-pattern:/ts
表示拦截指定servlet
的请求
注意:过滤器生命周期为服务器从启动到停止。
三、执行
- 浏览器发起请求到服务器,服务器接收到请求后,根据uri在web.xml中找到对应的过滤器执行
doFilter
方法, - 该方法对此次请求经行处理后如果符合要求则放行,放行后如果还有符合要求的过滤器则继续过滤,
- 最终找到对应的
servlet
进行请求处理,service
方法执行后还会返回到对应的doFilter
方法中。
举例
要求如下:
- 统一编码格式
session
管理- 权限管理
- 资源管理(同一水印,和谐词汇等等)
举例代码如下:
//设置编码格式
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
//session管理
HttpSession hs = ((HttpServletRequest)request).getSession();
if(hs.getAttribute("user") == null) {
((HttpServletResponse)response).sendRedirect("/login.jsp");
}else {
//放行
chain.doFilter(request, response);
}
如有错误,敬请指出。