日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

JavaWeb_检查用户是否登录的过滤器

發(fā)布時間:2025/3/14 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaWeb_检查用户是否登录的过滤器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

檢測用戶是否登錄的過濾器:

——情景:系統(tǒng)中某些頁面只有在正常登錄后才可以使用,用戶請求這些頁面時要檢查session中有無該用戶信息,但在所有必要的頁面加上session的判斷相當(dāng)麻煩的事情

——解決方案:編寫一個用于檢測用戶是否登錄的過濾器,如果用戶未登錄,則重定向到指定的登錄頁面

——要求:需檢查的在Session中保存的關(guān)鍵字;如果用戶未登錄,需重定向到指定的頁面(URL不包括ContextPath);不做檢查的URL列表(以分號分開,并且URL中不包括ContextPath)都要采取可配置的方式。

?

list.jsp

設(shè)置b,c,d,e需要用戶登錄權(quán)限,點擊跳轉(zhuǎn)login.jsp

登錄完成,輸入有效的名字可以進(jìn)入其他頁面

?

源代碼:

list.jsp

<a href="a.jsp">AAA</a> <br><br> <a href="b.jsp">BBB</a> <br><br> <a href="c.jsp">CCC</a> <br><br> <a href="d.jsp">DDD</a> <br><br> <a href="e.jsp">EEE</a> <br><br>

  

a,b,c,d,e.jsp

?

<h4>AAA PAGE</h4> <a href="list.jsp">Return...</a>

?

  

?

login.jsp

?

<form action="doLogin.jsp" method="post">username: <input type="text" name="username"><input type="submit" value="Submit"> </form>

?

  

?

doLogin.jsp

?

<%//1.獲取用戶的登錄信息String username = request.getParameter("username");//2.若登錄信息完整,則把登錄信息方法HttpSessionif (username!=null&&!username.trim().equals("")){session.setAttribute(application.getInitParameter("userSessionKey"),username);//3.重定向到list.jspresponse.sendRedirect("list.jsp");}else {response.sendRedirect("login.jsp");}%>

?

  

?

web.xml的相關(guān)設(shè)置

?

<!--用戶信息放入到session中鍵的名字--><context-param><param-name>userSessionKey</param-name><param-value>USERSESSIONKEY</param-value></context-param><!--若未登陸,需重定向的頁面--><context-param><param-name>rediretPage</param-name><param-value>/login/login.jsp</param-value></context-param><!--不需要攔截(或檢查)的URL列表--><context-param><param-name>uncheckedUrls</param-name><param-value>/login/a.jsp,/login/list.jsp,/login/login.jsp,/login/doLogin.jsp,</param-value></context-param>

?

  

?

LoginFilter.java

?

package com.demo.filter;import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.Arrays; import java.util.List;public class LoginFilter implements Filter {private String sessionKey;private String redirectUrl;private String uncheckedUrls;private FilterConfig filterConfig;@Overridepublic void init(FilterConfig filterConfig) throws ServletException {this.filterConfig = filterConfig;ServletContext servletContext = this.filterConfig.getServletContext();sessionKey = servletContext.getInitParameter("userSessionKey");redirectUrl = servletContext.getInitParameter("rediretPage");uncheckedUrls = servletContext.getInitParameter("uncheckedUrls");System.out.println(sessionKey);System.out.println(redirectUrl);System.out.println(uncheckedUrls);}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) servletRequest;HttpServletResponse response = (HttpServletResponse) servletResponse;//1.從web.xml文件中獲取sessionKey,redirectUrl,uncheckedUrls//1.獲取請求的servletPathString requestUrl = request.getRequestURL().toString();String requestUri = request.getRequestURI();String servletPath = request.getServletPath(); // http://localhost:8081/javaweb/login/list.jspSystem.out.println(requestUrl); // /javaweb/login/list.jspSystem.out.println(requestUri); // /login/list.jspSystem.out.println(servletPath);//2.檢查1獲取的servletPath是否不需要檢查的URL中的一個,若是,則直接放行,方法結(jié)束List<String> urls = Arrays.asList(uncheckedUrls.split(","));if (urls.contains(servletPath)){filterChain.doFilter(request,response);return;}//3.從session中獲取sessionKey對應(yīng)的值,若值不存在,則重定向到redirectUrlObject user = request.getSession().getAttribute(sessionKey);if (user == null){response.sendRedirect(request.getContextPath()+ redirectUrl);return;}//4.若存在,則放行,允許訪問filterChain.doFilter(request,response);}@Overridepublic void destroy() {} }

?

  

轉(zhuǎn)載于:https://www.cnblogs.com/yangHS/p/11201084.html

總結(jié)

以上是生活随笔為你收集整理的JavaWeb_检查用户是否登录的过滤器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。