java之web開發過濾器

來源:互聯網
上載者:User

標籤:jsp   else   att   dispatch   odi   mapping   直接   條件   亂碼   

我們通常上網的時候都會遇到一個問題,看到一個視頻之類的,想要點開觀看,點擊之後,網頁

提醒你:您尚未登入,是否要登入?然後巴拉巴拉跑去輸帳號密碼。

那麼這就是一個過濾器的功能,當你要訪問一個資源的時候(通常理解為連結),伺服器會進行

分析,當前的訪問者是否符合一定條件(通常就是檢測一下是不是會員,是否已經登入),符合

條件的話,伺服器會跳轉到指定連結,不滿足的話也會友情提醒:您不是會員,您尚未登入等等。

如何?呢,還是以使用者登入狀態例子吧,看下面~~~

1.三個頁面

登入頁面,登入成功頁面,登入失敗頁面

login.jsp---loginsuccess.jsp---loginwrong.jsp

2.實現Filter介面的類

這個java檔案實現了Filter介面,並且設定了規則,並且還有設定檔

 1 public void doFilter(ServletRequest arg0, ServletResponse arg1, 2             FilterChain arg2) throws IOException, ServletException { 3         HttpServletRequest request = (HttpServletRequest) arg0; 4         HttpServletResponse response = (HttpServletResponse) arg1; 5         request.setCharacterEncoding("utf-8");// 佈建要求編碼 6         response.setCharacterEncoding("utf-8");// 設定響應編碼 7         HttpSession session = request.getSession();//session對象,用於儲存表單資料 8         String username = request.getParameter("username"); 9         String password = request.getParameter("password");10         session.setAttribute("username", username);11         session.setAttribute("password", password);12         System.out.println("密碼:" + password);13         System.out.println("帳號:" + session.getAttribute("username"));14         if (username != null && password != null) {15             if (username.equals("admin") && password.equals("admin")) {16                 arg2.doFilter(arg0, arg1);// 滿足條件允許存取,跳轉到表單想要到達的頁面loginsuccess.jsp17             } else {18                 request.getRequestDispatcher("loginwrong.jsp").forward(request,19                         arg1);// 不滿足條件,轉到loginwrong頁面20             }21         }22     }

設定檔規定了此規則適用於用戶端對哪個頁面訪問時,調用規則

1     <filter>2         <filter-name>logfilter</filter-name>3         <filter-class>Filter.Servletfilter</filter-class>4     </filter>5     <filter-mapping>6         <filter-name>logfilter</filter-name>7         <url-pattern>/loginsuccess.jsp</url-pattern>8     </filter-mapping>

filter-name自訂,不過規則與適用的頁面要一一對應,過濾規則類檔案要包名+檔案名稱形式書寫,

這個檔案的意思就是說,當用使用者要訪問loginsuccess.jsp頁面時,過濾器Servletfilter進行攔截,然後

結合規則來看,如果使用者的使用者名稱和密碼都是admin的話,伺服器直接跳轉到loginsuccess.jsp頁面,

帳號和密碼不對的話,伺服器跳轉到loginwrong.jsp頁面。

 

 

注意:使用者提交表單,發送請求之後,請求被過濾器攔截,此時要佈建要求和響應的字元編碼,防止

後面用到資料的時候造成輸出亂碼。設定方法在過濾器源碼已經用紅字標出。

java之web開發過濾器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.