日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

登录验证---过滤器(Fileter)

發布時間:2024/9/21 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 登录验证---过滤器(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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。