• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Java中應用Filter對權限和Session控制

    發表于:2008-05-12來源:作者:點擊數: 標簽:javaJAVAJavaSessionsession
    關鍵字: 用Filter防止用戶訪問一些未被授權的資源,比如一個用戶未登錄就不允許訪問網站的某些頁面,并將頁面重定向到需要用戶登錄的頁面,下面是一個相關的例子: package com.drp.util.filter; import java .io.IOException; import javax.servlet.Filter;
    關鍵字:
     

    用Filter防止用戶訪問一些未被授權的資源,比如一個用戶未登錄就不允許訪問網站的某些頁面,并將頁面重定向到需要用戶登錄的頁面,下面是一個相關的例子:

    package com.drp.util.filter; 
    
    import java.io.IOException; 
    
    import javax.servlet.Filter; 
    import javax.servlet.FilterChain; 
    import javax.servlet.FilterConfig; 
    import javax.servlet.ServletException; 
    import javax.servlet.ServletRequest; 
    import javax.servlet.ServletResponse; 
    import javax.servlet.http.HttpServletRequest; 
    import javax.servlet.http.HttpServletResponse; 
    import javax.servlet.http.HttpSession; 
    
    public class AuthFilter implements Filter {
    
    public void destroy() {
    
    }
    
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
    FilterChain filterChain) throws IOException, ServletException {
    /** 1,doFilter方法的第一個參數為ServletRequest對象。此對象給過濾器提供了對進入的信息(包括
    *   表單數據、cookie和HTTP請求頭)的完全訪問。第二個參數為ServletResponse,通常在簡單的過
    *   濾器中忽略此參數。最后一個參數為FilterChain,此參數用來調用servlet或JSP頁。
    */
    
    HttpServletRequest request = (HttpServletRequest)servletRequest; 
    /** 如果處理HTTP請求,并且需要訪問諸如getHeader或getCookies等在ServletRequest中
    *   無法得到的方法,就要把此request對象構造成HttpServletRequest
    */
    HttpServletResponse response = (HttpServletResponse)servletResponse;
    
    String currentURL = request.getRequestURI(); //取得根目錄所對應的絕對路徑:
    
    String targetURL = currentURL.substring(currentURL.indexOf("/", 1), 
    currentURL.length()); //截取到當前文件名用于比較
    
    HttpSession session = request.getSession(false); 
    
    if (!"/login.jsp".equals(targetURL)) {
    //判斷當前頁是否是重定向以后的登錄頁面頁面,如果是就不做session的判斷,防止出現死循環
    if (session == null || session.getAttribute("user") == null) {
    //*用戶登錄以后需手動添加session
    System.out.println("request.getContextPath()=" + request.getContextPath()); 
    response.sendRedirect(request.getContextPath() + "/login.jsp"); 
    //如果session為空表示用戶沒有登錄就重定向到login.jsp頁面
    return; 
    }
    }
    //加入filter鏈繼續向下執行
    filterChain.doFilter(request, response); 
    /**  調用FilterChain對象的doFilter方法。Filter接口的doFilter方法取一個FilterChain對象作
    *    為它 的一個參數。在調用此對象的doFilter方法時,激活下一個相關的過濾器。如果沒有另
    *    一個過濾器與servlet或JSP頁面關聯,則servlet或JSP頁面被激活。
    */
    }
    
    public void init(FilterConfig filterConfig) throws ServletException {
    
    }
    }

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>