欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring MVC過濾器-登錄過濾的代碼實(shí)現(xiàn)

 更新時(shí)間:2017年01月06日 17:19:35   作者:geloin  
本篇文章主要介紹了Spring MVC過濾器-登錄過濾,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧。

一個非常簡單的登錄權(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" }; 
 
    // 請求的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)頁過期,請重新登錄!');"); 
          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)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Mybatis反射核心類Reflector的實(shí)現(xiàn)

    Mybatis反射核心類Reflector的實(shí)現(xiàn)

    本文主要介紹了Mybatis反射核心類Reflector的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • Java實(shí)現(xiàn)圖書館借閱系統(tǒng)

    Java實(shí)現(xiàn)圖書館借閱系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)圖書館借閱系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 如何通過properties文件配置web.xml中的參數(shù)

    如何通過properties文件配置web.xml中的參數(shù)

    這篇文章主要介紹了如何通過properties文件配置web.xml中的參數(shù)方法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringAOP實(shí)現(xiàn)登錄驗(yàn)證的操作代碼

    SpringAOP實(shí)現(xiàn)登錄驗(yàn)證的操作代碼

    這篇文章主要介紹了SpringAOP實(shí)現(xiàn)登錄驗(yàn)證功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • Redis高并發(fā)場景防止庫存數(shù)量超賣少賣

    Redis高并發(fā)場景防止庫存數(shù)量超賣少賣

    商品超賣是銷售數(shù)量超過實(shí)際庫存的情況,常因庫存管理不當(dāng)引發(fā),傳統(tǒng)庫存管理在高并發(fā)環(huán)境下易出錯,可通過線程加鎖或使用Redis同步庫存狀態(tài)解決,本文就來詳細(xì)的介紹一下,感興趣的可以了解一下
    2024-09-09
  • Spring Boot @Conditional注解用法示例介紹

    Spring Boot @Conditional注解用法示例介紹

    這篇文章主要給大家介紹了關(guān)于Spring Boot @Conditional注解用法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 利用HttpUrlConnection 上傳 接收文件的實(shí)現(xiàn)方法

    利用HttpUrlConnection 上傳 接收文件的實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄肏ttpUrlConnection 上傳 接收文件的實(shí)現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • 詳解application.properties和application.yml文件的區(qū)別

    詳解application.properties和application.yml文件的區(qū)別

    這篇文章主要介紹了詳解application.properties和application.yml文件的區(qū)別,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Java中為什么不同的返回類型不算方法重載

    Java中為什么不同的返回類型不算方法重載

    這篇文章主要介紹了Java中為什么不同的返回類型不算方法重載,方法重載是指在同一個類中,定義了多個同名方法,但每個方法的參數(shù)類型或者是參數(shù)個數(shù)不同就是方法重載,下文詳細(xì)介紹,需要的小伙伴可以參考一下
    2022-05-05
  • java1.5中訪問環(huán)境變量

    java1.5中訪問環(huán)境變量

    這篇文章主要介紹了如何在java1.5中訪問環(huán)境變量,使用System.getenv()可以訪問環(huán)境變量
    2014-01-01

最新評論