Java Filter過濾器使用

本文來自CSDN博客,轉載出處:http://blog.csdn.net/royaki/archive/2009/05/07/4159279.aspx

 

 1、建立一個Servlet並且實現Filter接口

該類需要實現Filter接口中的init()   doFilter()    destory()方法

其中init()方法自動在項目啓動的時候加載,doFilter()在調用xml配置的路徑是加載,destory()方法在退出項目的時候進行。

 

public class TestFilter implements Filter{

 

public void init(FilterConfig filterConfig) throws ServletException{

System.out.println("初始化Filter");

}

 

public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws Exception{

System.out.println("進行doFilter");

chain(request,response);     //使用這一句繼續Servlet請求

}

 

public void destory(){

System.out.println("過濾器銷燬");

}

 

}

 

 

2、在xml中配置Filter

<filter>

<filter-name></filter-name>

<filter-class></filter-class>

</filter>

<filter-mapping>

<filter-name></filter-name>

<url-pattern>/*</url-pattern> //這裏想對哪個路徑進行過濾就填寫哪個

</filter-mapping>

 

應用:

編碼過濾


public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws Exception{

System.out.println("進行doFilter"編碼過濾);

try
  {
   request.setCharacterEncoding("GB2312") ;
  }
  catch (Exception e)
  {

   e.printStackTrace();
  }
 
  chain.doFilter(request,response) ;

 

}

 

xml中的配置:

<url-pattern>/*</url-pattern>  對所有請求都過濾


敏感詞彙過濾

public void doFilter(ServletRequest request,
                     ServletResponse response,
                     FilterChain chain)
              throws IOException,
                     ServletException
 {
  String content = request.getParameter("content") ;
  // 如果indexOf返回-1則表示沒有查到所要的內容
  if(content!=null)
  {
   if(content.indexOf("AAA")==-1)
   {
    chain.doFilter(request,response) ;
   }
   else
   {
    System.out.println("有非法文字") ;
    // 如果需要的話,此處依然可以使用RequestDispatcher進行跳轉
   }
  }
  else
  {
   chain.doFilter(request,response) ;
  }


登錄驗證

public void doFilter(ServletRequest request,
                     ServletResponse response,
                     FilterChain chain)
              throws IOException,
                     ServletException
 {
  // Session屬於HTTP範疇,所以ServletRequest對象需要先轉換成HttpServletRequest對象
  HttpServletRequest req = (HttpServletRequest)request ;
  HttpSession session = req.getSession() ;
  // 如果session不爲空,則可以瀏覽其他頁面
  if(session.getAttribute("uname")!=null)
  {
   chain.doFilter(request,response) ;
  }
  else
  {
   // 通過requestDispatcher跳轉到登陸頁
   request.getRequestDispatcher("login.jsp").forward(request,response) ;
  }
 }

 

 

發佈了22 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章