Filter過濾器的寫法


http://pengenjing.iteye.com/blog/1607248

這里寫的過濾器用的是適配器模式,思路為:

先寫一個類實現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. }  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM