Filter过滤器的写法

这里写的过滤器用的是适配器模式,思路为:

先写一个类实现Filter,然后在让你写的过滤器来继承自这个类;

 

步骤:1.建一个AbstractFilter实现Filter;2.建一个类来继承AbstractFilter,还要在web.xml中配置;

 

web.xml中的配置: 

Java代码   收藏代码
  1.     <filter>  
  2.         <filter-name>validateFilter</filter-name>  
  3.         <filter-class>com.peng.ValidateFilter(这里写的是类的完全限定名)</filter-class>  
  4.     </filter>  
  5.     <filter-mapping>  
  6.         <filter-name>validateFilter</filter-name>  
  7.         <url-pattern>/*(这里是让所有的通过)</url-pattern>  
  8.     </filter-mapping>  

 

 Abstractr.java

Java代码   收藏代码
  1. public abstract class AbstractFilter implements Filter{  
  2.   
  3.     public void destroy() {}  
  4.   
  5.     public abstract void doFilter(ServletRequest request, ServletResponse response,  
  6.             FilterChain chain) throws IOException, ServletException ;  
  7.   
  8.     public void init(FilterConfig filterConfig) throws ServletException {}  
  9.   
  10. }  

 

 下面是我自己写的过滤器:我给他取名为  ValidateFilter;

 

ValidateFilter.java

 

 

Java代码   收藏代码
  1. package com.kaishengit.web.filter;  
  2. import java.io.IOException;  
  3. import javax.servlet.FilterChain;  
  4. import javax.servlet.ServletException;  
  5. import javax.servlet.ServletRequest;  
  6. import javax.servlet.ServletResponse;  
  7. import javax.servlet.http.HttpServletRequest;  
  8. import javax.servlet.http.HttpServletResponse;  
  9. import javax.servlet.http.HttpSession;  
  10.   
  11. import com.kaishengit.entity.User;  
  12. import com.kaishengit.util.Const;  
  13.   
  14. public class ValidateFilter extends AbstractFilter{  
  15.   
  16.     @Override  
  17.     public void doFilter(ServletRequest req, ServletResponse resp,  
  18.             FilterChain chain) throws IOException, ServletException {  
  19.           
  20.         HttpServletRequest request = (HttpServletRequest) req;  
  21.         HttpServletResponse response = (HttpServletResponse) resp;  
  22.           
  23.         //判断如果是index.jspx 放行  
  24.         String uri = request.getRequestURI();  
  25.         uri = uri.substring(uri.lastIndexOf("/")+1);  
  26.         //System.out.println("当前请求的路径: " + uri);  
  27.           
  28.           
  29.           
  30.         if("".equals(uri) || "index.jsp".equals(uri) || "index.jspx".equals(uri) || "login.jspx".equals(uri) || uri.endsWith("png") || uri.endsWith("jpg")) {  
  31.             //所有人都能请求到的URI,放行  
  32.             chain.doFilter(request, response);  
  33.         } else {    //下面是判断是否有session,也就是用户是否已登录状态;                                                                                                                                          
  34.             HttpSession session = request.getSession();  
  35.             User user = (User) session.getAttribute(Const.USER_IN_SESSION);  
  36.             if(user == null) {  
  37.                 System.out.println("URI:" + uri + ">>>>访问被拒绝!");  
  38.                 response.sendRedirect("index.jspx?code=10002");  
  39.             } else {  
  40.                 chain.doFilter(request, response);  
  41.             }  
  42.         }     
  43.           
  44.     }  
  45.   
  46. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值