一、过滤器定义

过滤:安全、干净

过滤应该是一种后加入的功能
二、过滤器在web中的主要作用
1、过滤器是程序运行后加入的
2、功能
任何网站都需要对用户是否登录进行过滤
网上聊天系统,屏蔽非法文字
对请求内容进行统一编码
以上功能都是自动执行的
三、实现过滤器
1、所在类实现filter接口
注意:如果过滤器要将内容传递到目的地,则需要FilterChain ,将请求继续向下转发

 

 

Java代码  
  1. import java.io.IOException;   
  2. import javax.servlet.Filter;   
  3. import javax.servlet.FilterChain;   
  4. import javax.servlet.FilterConfig;   
  5. import javax.servlet.ServletException;   
  6. import javax.servlet.ServletRequest;   
  7. import javax.servlet.ServletResponse;   
  8.   
  9. public class LoginFilter implements Filter{   
  10.   
  11.     // 初始化方法,是在容器启动时自动初始化的   
  12.     @Override  
  13.     public void destroy()    
  14.        { }   
  15.   
  16.        //处理过滤   
  17.     @Override  
  18.     public void doFilter(ServletRequest req, ServletResponse resp,   
  19.             FilterChain chain) throws IOException, ServletException   
  20.   
  21.  {chain.doFilter(arg0, arg1);}   
  22.   
  23.        //销毁过滤器   
  24.     @Override  
  25.     public void init(FilterConfig arg0) throws ServletException   
  26.   
  27.  {}}  
import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class LoginFilter implements Filter{	// 初始化方法,是在容器启动时自动初始化的	@Override	public void destroy()        { }       //处理过滤	@Override	public void doFilter(ServletRequest req, ServletResponse resp,			FilterChain chain) throws IOException, ServletException {chain.doFilter(arg0, arg1);}       //销毁过滤器	@Override	public void init(FilterConfig arg0) throws ServletException {}}

 

 

2、web.xml中添加过滤器

 

Html代码  
  1. <!-- 添加过滤器 -->  
  2.     <filter>  
  3.     <filter-name>login</filter-name>  
  4.     <filter-class>类所在包.LoginFilter</filter-class>  
  5.     </filter>  
  6.     <filter-mapping>  
  7.     <filter-name>login</filter-name>  
  8.     <!-- 与servlet中的url-pattern不同,此处表示对哪个页面进行过滤,如果全部过滤,则“/*” -->  
  9.     <url-pattern>/*</url-pattern>  
  10.     </filter-mapping>  
login
类所在包.LoginFilter
login
/*

切记:过滤器是种组件用的时候加上去就可以了
例1---编码转换
建立过滤器设置编码
如:request.setCharacterEncoding("GB2312")
例2---用户是否登录
切记:session属于http范畴,所以ServletRequest对象需要先转换成HttpServletRequest对象
HttpServletRequest req = (HttpServletRequest) request;
HttpSession session =req.getSession;
然后进行session验证
四、总结
1、实现filter接口(javax.servlet.Filter)
2、doFilter方法中必须有chain.doFilter(req, resp)
3、web.xml中添加过滤器
4、过滤器是种组件用的时候加上去就可以了
5、原则:开发时只专注于具体的业务实现,而对于登陆之类的验证,肯定属于组件,想整个程序中单独加入的