java Filter過濾器例外URL設置


在web.xml聲明的一個filter中:

<!– session過濾filter –>  

<filter>    
<filter-name>SessionFilter</filter-name>    
<filter-class>    
com.iqbon.jcms.web.util.SessionFilter     
</filter-class>    
<init-param>    
<param-name>excludedPages</param-name>    
<param-value>/admin/login.do</param-value>    
</init-param>    
</filter>    
<filter-mapping>    
<filter-name>SessionFilter</filter-name>    
<url-pattern>/admin/*</url-pattern>    
</filter-mapping>    

可以看到url-pattern的設置里面過濾的url規則是/admin/*,如果要把/admin/login.do排除在過濾url之外。

可以結合init-param的初始化參數和HttpServletRequest的getServletPath()方法來判斷。

<init-param>    
<param-name>excludedPages</param-name>    
<param-value>/admin/login.do</param-value>    
</init-param>

其次在filter的Java代碼中加上判斷:

 

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;     
import javax.servlet.http.HttpServletRequest;     
import javax.servlet.http.HttpServletResponse;     
import javax.servlet.http.HttpSession;     
import org.apache.commons.lang3.StringUtils;     
import com.iqbon.jcms.util.KeyConstant;     
    
/**   
* session過濾器   
*/    
  
public class SessionFilter implements Filter {     
  
/**   
* 需要排除的頁面   
*/    
  
private String excludedPages;       
private String[] excludedPageArray;     
  
/**   
* @see Filter#destroy()   
*/    
  
public void destroy() {     
return;     
}     
    
/**   
* 對session進行判斷當前訪問是否有登錄   
*/    
  
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {     
boolean isExcludedPage = false;     
for (String page : excludedPageArray) {//判斷是否在過濾url之外     
if(((HttpServletRequest) request).getServletPath().equals(page)){     
isExcludedPage = true;     
break;     
}     
}     
  
if (isExcludedPage) {//在過濾url之外     
chain.doFilter(request, response);     
} else {//不在過濾url之外,判斷session是否存在     
HttpSession session = ((HttpServletRequest) request).getSession();     
if (session == null || session.getAttribute(KeyConstant.SESSION_KEY_USER) == null) {     
((HttpServletResponse) response).sendRedirect(“/login.htm”);     
} else {     
chain.doFilter(request, response);     
}     
}     
}     
  
/**   
* 初始化函數,獲取需要排除在外的url   
*/    
  
public void init(FilterConfig fConfig) throws ServletException {     
excludedPages = fConfig.getInitParameter(“excludedPages”);     
if (StringUtils.isNotEmpty(excludedPages)) {     
excludedPageArray = excludedPages.split(“,”);     
}     
return;     
}     
}   

http://blog.csdn.net/Error_case/article/details/41946449

  1. import java.io.IOException;     
  2.   
  3. import javax.servlet.Filter;     
  4. import javax.servlet.FilterChain;     
  5. import javax.servlet.FilterConfig;     
  6. import javax.servlet.ServletException;     
  7. import javax.servlet.ServletRequest;     
  8. import javax.servlet.ServletResponse;     
  9. import javax.servlet.http.HttpServletRequest;     
  10. import javax.servlet.http.HttpServletResponse;     
  11. import javax.servlet.http.HttpSession;     
  12. import org.apache.commons.lang3.StringUtils;     
  13. import com.iqbon.jcms.util.KeyConstant;     
  14.     
  15. /**   
  16. * session過濾器   
  17. */    
  18.   
  19. public class SessionFilter implements Filter {     
  20.   
  21. /**   
  22. * 需要排除的頁面   
  23. */    
  24.   
  25. private String excludedPages;       
  26. private String[] excludedPageArray;     
  27.   
  28. /**   
  29. * @see Filter#destroy()   
  30. */    
  31.   
  32. public void destroy() {     
  33. return;     
  34. }     
  35.     
  36. /**   
  37. * 對session進行判斷當前訪問是否有登錄   
  38. */    
  39.   
  40. public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {     
  41. boolean isExcludedPage = false;     
  42. for (String page : excludedPageArray) {//判斷是否在過濾url之外     
  43. if(((HttpServletRequest) request).getServletPath().equals(page)){     
  44. isExcludedPage = true;     
  45. break;     
  46. }     
  47. }     
  48.   
  49. if (isExcludedPage) {//在過濾url之外     
  50. chain.doFilter(request, response);     
  51. else {//不在過濾url之外,判斷session是否存在     
  52. HttpSession session = ((HttpServletRequest) request).getSession();     
  53. if (session == null || session.getAttribute(KeyConstant.SESSION_KEY_USER) == null) {     
  54. ((HttpServletResponse) response).sendRedirect(“/login.htm”);     
  55. else {     
  56. chain.doFilter(request, response);     
  57. }     
  58. }     
  59. }     
  60.   
  61. /**   
  62. * 初始化函數,獲取需要排除在外的url   
  63. */    
  64.   
  65. public void init(FilterConfig fConfig) throws ServletException {     
  66. excludedPages = fConfig.getInitParameter(“excludedPages”);     
  67. if (StringUtils.isNotEmpty(excludedPages)) {     
  68. excludedPageArray = excludedPages.split(“,”);     
  69. }     
  70. return;     
  71. }     
  72. }   


免責聲明!

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



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