登录验证---过滤器(Fileter)
一.案例--登錄驗證
?? ??? ??? ?* 需求:
?? ??? ??? ??? ?1. 瀏覽器訪問case案例(服務器)的資源時。驗證其是否登錄
?? ??? ??? ??? ?2. 如果登錄了,則直接放行。
?? ??? ??? ??? ?3. 如果沒有登錄,則跳轉到登錄頁面,提示"您尚未登錄,請先登錄"。
二.功能分析
三.代碼的編寫
由于前面的登錄頁面已經完成(前幾篇博客),所以我們需要做的就是編寫一個Filter類,來過濾用戶通過瀏覽器訪問服務器的頁面,增強其功能。
過濾器首先要判斷瀏覽器訪問的資源是否是與登錄頁面相關的資源
》》》》如果瀏覽器訪問的頁面不是login.jsp頁面或者checkloginservlet,以及與登錄頁面相關的資源時,則需要判斷當前用戶是否登錄:(可以根據Session域中是否有user屬性來判斷,因為在登錄頁面時,如果登錄成功后,會在checkloginservlet中把User的信息存儲到Session中)
? ? ? ? ? ? 判斷用戶是否登錄:可以根據Session域中getAttribute("user")來判斷是否存在
? ? ? ? ? ? ? ? ? ?如果存在,則Filter中執行chain.doFiltere(req,resp),放行
? ? ? ? ? ? ? ? ? ?如果不存在,則跳轉到登錄頁面,并setAttribute("msg",“提示用戶未登錄”);
》》》如果訪問的資源頁面是登錄頁面,則直接在Filter中執行chain.doFiltere(req,resp),放行
? ? ? ? ? ? ??
代碼:(Filter類)
package web;import java.io.IOException;import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest;@WebFilter("/*") public class Filter implements javax.servlet.Filter{@Overridepublic void destroy() {// TODO Auto-generated method stub}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {//1.獲取資源請求的路徑,強制轉換HttpServletRequest req= (HttpServletRequest)request;String rString=req.getRequestURI();//2.有些資源需要放行if(rString.contains("/login.jsp")||rString.contains("/checklogin")||rString.contains("/checkcode")||rString.contains("/css/")||rString.contains("/js/")||rString.contains("/fonts/")) {chain.doFilter(req, response);}else { //3.當訪問其他資源,就判斷是否登錄Object obj=req.getSession().getAttribute("user"); //一般登陸成功后會用session封裝存儲用戶,這個就是判斷依據if(obj!=null) { //如果有,則放行chain.doFilter(request, response);}else { //如果沒有,則跳轉到登錄界面req.setAttribute("log_msg", "您還沒有登錄,請先登錄!");req.getRequestDispatcher("/login.jsp").forward(req, response);}}}@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// TODO Auto-generated method stub}}總結
以上是生活随笔為你收集整理的登录验证---过滤器(Fileter)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BM2 链表内指定区间反转
- 下一篇: 批量选中删除(包含全选)---jsp,s