Java丨簡單的登陸過濾器實現方法

過濾過濾,實際就是把須要和不須要的東西分開!html

今天來講道說道咱們程序中的‘登陸過濾器’ ,首先咱們看看一下面的問題:java

一、登陸過濾器」是幹什麼用的?web

1)登陸過濾器就是爲了防止在用戶沒有登陸的狀況下來訪問咱們的網站。安全

2)舉例:main.html 這個網頁是須要經過login.html這個網頁登陸後才能夠訪問的,如今有一個用戶沒有登陸,直接訪問main.html成功了。那麼,這樣的網站是否是以爲不安全呢?用戶不用登陸隨隨便便就訪問了。so,we have to need a filter.咱們須要用過濾器來過濾一些須要登陸後才能夠訪問的頁面.session

 

二、咱們要怎麼過濾呢?app

1)at first ! 咱們確定要過濾掉須要登陸的頁面jsp

2)咱們拿到了須要登陸的頁面後,咱們怎麼判斷用戶有沒有登陸呢?so,we need a session .網站

3)已session爲依據,來判斷用戶是否是登陸過了。登陸過了咱們就讓他繼續訪問,沒有登陸的咱們就讓他返回到登陸界面。url

下面咱們來看看代碼是如何實現的:spa

package com.haojieli.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 LoginFilter implements Filter{

    public void destroy() {
        // TODO Auto-generated method stub
    }

    public void doFilter(ServletRequest arg0, ServletResponse arg1,
            FilterChain arg2) throws IOException, ServletException {
        // TODO Auto-generated method stub
        HttpServletRequest req = (HttpServletRequest)arg0;
        HttpServletResponse resp =(HttpServletResponse) arg1;
        HttpSession session = req.getSession();
           // 得到用戶請求的URI
        String path = req.getRequestURI();
        // 從session取得已經登陸驗證的憑證 我這裏的demo用的是password來做爲登陸憑證
        String password = (String) session.getAttribute("password");
        // login.jsp頁面無需過濾(根據本身項目的要求來)

   //也能夠path.contains("login.jsp")  反正怎麼精確怎麼來就很少說了
        if(path.indexOf("/login.jsp") > -1) {//注意:登陸頁面千萬不能過濾  否則過濾器就。。。。。自行調試不要偷懶!這樣記憶深入
            arg2.doFilter(req, resp);
            return;
        } else {//若是不是login.jsp進行過濾
              if (password == null || "".equals(password)) {
                  // 跳轉到登錄頁面
                  resp.sendRedirect("login.jsp");
            } else {
                // 已經登錄,繼續這次請求
                arg2.doFilter(req, resp);
            }
        }
    }
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub
    }
}

在這裏就不用解釋代碼了,代碼中有詳細的註釋,可是重要的一點 咱們過濾器是寫好了 ,還須要配置啊,否則怎麼運行呢?followe me。

將過濾器配置到web.xml裏面 

 <filter>
      <filter-name>Login</filter-name>
      <filter-class>com.haojieli.filter.LoginFilter</filter-class>
  </filter>
  <filter-mapping>
      <filter-name>adminLogin</filter-name>

<!--這裏的/admin/* 表示是指定路徑下的文件須要過濾   也能夠寫爲 <url-pattern>/*</url-pattern> 表示全部文件都須要過濾-->
      <url-pattern>/admin/*</url-pattern>
  </filter-mapping>

注意:登陸頁面不能過濾。。。自行調試不要偷懶!這樣記憶深入......

 

博文到此結束,感謝您的觀看,但願對各位讀者有所幫助,若是有什麼意見以及建議請在評論留言......

======祝各位讀者生活愉快======

相關文章
相關標籤/搜索