Spring MVC過濾器-登錄過濾的代碼實(shí)現(xiàn)
更新時(shí)間:2017年01月06日 17:19:35 作者:geloin
本篇文章主要介紹了Spring MVC過濾器-登錄過濾,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧。
一個(gè)非常簡單的登錄權(quán)限攔截器,具體代碼如下:
以下代碼是繼承OncePerRequestFilter實(shí)現(xiàn)登錄過濾的代碼:
/**
*
* @author geloin
* @date 2012-4-10 下午2:37:38
*/
package com.test.spring.filter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.filter.OncePerRequestFilter;
/**
* 登錄過濾
*
* @author geloin
* @date 2012-4-10 下午2:37:38
*/
public class SessionFilter extends OncePerRequestFilter {
/*
* (non-Javadoc)
*
* @see
* org.springframework.web.filter.OncePerRequestFilter#doFilterInternal(
* javax.servlet.http.HttpServletRequest,
* javax.servlet.http.HttpServletResponse, javax.servlet.FilterChain)
*/
@Override
protected void doFilterInternal(HttpServletRequest request,
HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
// 不過濾的uri
String[] notFilter = new String[] { "login.html", "index.html" };
// 請(qǐng)求的uri
String uri = request.getRequestURI();
// uri中包含background時(shí)才進(jìn)行過濾
if (uri.indexOf("background") != -1) {
// 是否過濾
boolean doFilter = true;
for (String s : notFilter) {
if (uri.indexOf(s) != -1) {
// 如果uri中包含不過濾的uri,則不進(jìn)行過濾
doFilter = false;
break;
}
}
if (doFilter) {
// 執(zhí)行過濾
// 從session中獲取登錄者實(shí)體
Object obj = request.getSession().getAttribute("loginedUser");
if (null == obj) {
// 如果session中不存在登錄者實(shí)體,則彈出框提示重新登錄
// 設(shè)置request和response的字符集,防止亂碼
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
String loginPage = "....";
StringBuilder builder = new StringBuilder();
builder.append("<script type=\"text/javascript\">");
builder.append("alert('網(wǎng)頁過期,請(qǐng)重新登錄!');");
builder.append("window.top.location.href='");
builder.append(loginPage);
builder.append("';");
builder.append("</script>");
out.print(builder.toString());
} else {
// 如果session中存在登錄者實(shí)體,則繼續(xù)
filterChain.doFilter(request, response);
}
} else {
// 如果不執(zhí)行過濾,則繼續(xù)
filterChain.doFilter(request, response);
}
} else {
// 如果uri中不包含background,則繼續(xù)
filterChain.doFilter(request, response);
}
}
}
寫完過濾器后,需要在web.xml中進(jìn)行配置:
<filter> <filter-name>sessionFilter</filter-name> <filter-class>com.test.spring.filter.SessionFilter</filter-class> </filter> <filter-mapping> <filter-name>sessionFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java List去掉重復(fù)元素的幾種方式(小結(jié))
這篇文章主要介紹了java List去掉重復(fù)元素的幾種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
詳解servlet的url-pattern匹配規(guī)則
本篇文章主要介紹了=servlet的url-pattern匹配規(guī)則,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12
一篇文章帶你了解JAVA面對(duì)對(duì)象應(yīng)用
Java是一門面向?qū)ο蟮恼Z言。對(duì)象是Java程序中的基本實(shí)體。除了對(duì)象之外Java程序同樣處理基本數(shù)據(jù)。下面這篇文章主要給大家總結(jié)了關(guān)于Java中面向?qū)ο蟮闹R(shí)點(diǎn),需要的朋友可以參考借鑒,下面來一起看看吧2021-08-08
Java Stream map, Collectors(toMap, toLis
這篇文章主要介紹了Java Stream map, Collectors(toMap, toList, toSet, groupingBy, collectingAndThen)使用案例,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09

