Tomcat與web開發技術詳解讀書筆記(2)過濾器

1.簡介

  • 過濾器能夠在ServletJSPHTMLweb組件被調用之前檢查ServletRequest對象,修改請求頭和請求正文的內容或者對請求進行預處理操作
  • 能夠在ServletJSPHTMLweb組件被調用之後檢查ServletReponse對象,修改響應頭和響應正文。
  • 利用包裝類ServletRequestWrapperServletResponseWrapper來修改ServletRequest對象和ServletResponse對象。

2.如何創建過濾器?

必須實現javax.servlet.Filter接口。

  • init(FilterConfig config):過濾器初始化方法。Web應用啓動時,Servlet容器首先創建FilterConfig對象(包含過濾器配置信息),然後創建Filter對象,接着調用Filter對象的init(FilterConfig config)方法,讀取web.xml中的配置參數。
  •  public class LoginFilter implements Filter{
        private FilterConfig config;
        
        private String username;
    
        @Override
        public void destroy() {
            this.config = null;
        }
    
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
            ServletException {
            //HttpServletRequest httpRequest = (HttpServletRequest)request;
            HttpServletResponse httpResponse = (HttpServletResponse)response;
            System.out.println("登錄過濾器驗證");
            if(StringUtils.equalsIgnoreCase(username, "flyer")){
                System.out.println("驗證通過");
                chain.doFilter(request, response);
            }else {
                System.out.println("驗證被攔截");
                httpResponse.sendRedirect("login.jsp");
            }
        }
    
        @Override
        public void init(FilterConfig config) throws ServletException {
            this.config = config;
            username = config.getInitParameter("username");
        }
    
    }
      web.xml中添加過濾器配置

     

     

    Xml代碼 
    1. <filter>  
    2.         <filter-name>loginFilter</filter-name>  
    3.         <filter-class>com.flyer.filter.LoginFilter</filter-class>  
    4.         <init-param>  
    5.             <param-name>username</param-name>  
    6.             <param-value>flyer</param-value>  
    7.         </init-param>  
    8.     </filter>  
    9.     <filter-mapping>  
    10.         <filter-name>loginFilter</filter-name>  
    11.         <url-pattern>  
    12.             /*  
    13.         </url-pattern>  
    14.     </filter-mapping>  
     web開發中常用的字符集編碼過濾器

     

     

    Xml代碼 
    1. <filter>  
    2.         <filter-name>encodingFilter</filter-name>  
    3.         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
    4.         <init-param>  
    5.             <param-name>encoding</param-name>  
    6.             <param-value>  
    7.                 UTF-8  
    8.             </param-value>  
    9.         </init-param>  
    10.     </filter>  
    11.     <!-- 過濾器能爲所有的url過濾 -->  
    12.     <filter-mapping>  
    13.         <filter-name>encodingFilter</filter-name>  
    14.         <url-pattern>  
    15.             /*  
    16.         </url-pattern>  
    17.     </filter-mapping>  
     補充:Servlet監聽器   類似與Swing界面應用開發,Servlet也可以創建監聽器,以對Servlet容器,或Servlet中以象的事件做出反應。Servlet監聽器主要有以下幾種: ServletRequestListener ,ServletRequestAttributeListener, HttpSessionActivationListener ,HttpSessionBindingListener , HttpSessionAttributeListener,HttpSessionListener, ServletContextListener等等。   這些監聽器主要用來監聽session,request,application這三個對象裏存取數據的變化。 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章