1. 程式人生 > >Java Web中簡單實現自動登陸功能。

Java Web中簡單實現自動登陸功能。

Java 對自動登陸功能的簡單實現,僅用到了servlet和一個filter。第一次寫博文,如有不足的地方,敬請指正,謝謝。

登陸介面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
  <head>
	<title>登陸頁面</title>
  </head>
  <body>
     <form action="<%=request.getContextPath()%>/LoginAction" method="post">
   		 使用者名稱:<input type=“text” name="name" > <br>
   		 密    碼:<input type=“password” name="passwd" > <br>
   		儲存時間<select name="savetime">
   			<option value="7">一    周</option>
   			<option value="30">一個月</option>
   		</select><br>
   		 <input type="submit" value="登陸">
    </form>
  </body>
</html>

填寫完使用者名稱和密碼後選擇儲存時間。這裡就沒有設定不儲存選項,預設儲存時間是一週。

LoginBiz類,負責校驗使用者輸入的使用者名稱和密碼是否正確。

package com.autologin;

public class LoginBiz  {
		static  boolean isValid(String name,String passwd){
		if(name.equals("admin")&&passwd.equals("1234")){
			return true;
		}else{
			return false;
		}
	}
}
本類為LoginAction提供服務,相當於Biz層。

LoginAction類,負責頁面跳轉。

package com.autologin;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginAction extends HttpServlet {
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String name=request.getParameter("name");
		String passwd=request.getParameter("passwd");
		String savetimeString=request.getParameter("savetime");
		
		if(new LoginBiz().isValid(name, passwd)){
			int savetime=Integer.parseInt(savetimeString)*24*3600;
			Cookie loginInfo=new Cookie("loginInfo",name+","+passwd);
			loginInfo.setMaxAge(savetime);
			response.addCookie(loginInfo);
			response.sendRedirect("/TestWeb/success.jsp");
		}else{
			response.sendRedirect("/TestWeb/error.jsp");
		}
	}
	
}
使用者第一次登陸時會呼叫此servlet來驗證使用者資訊和設定cookie。根據登陸時的設定的時間計算出秒數,然後把儲存有使用者名稱和密碼的Cookie(loginInfo)add到客戶端。為了方便使用者名稱和密碼設定在了一個cookie中,用","隔開。(真正專案中,當然要給密碼做加密處理。)
如果第一次成功登陸,再次請求login.jsp時即可直接跳轉到success頁面,無需再次輸入使用者名稱和密碼,這裡就用到了下面這個Filter。

CheckFilter類

package com.autologin;

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.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CheckFilter implements Filter {

	public void destroy() {
		
	}

	public void doFilter(ServletRequest arg0, ServletResponse arg1,
			FilterChain arg2) throws IOException, ServletException {
		HttpServletRequest request=(HttpServletRequest)arg0;
		HttpServletResponse response=(HttpServletResponse)arg1;
		Cookie[] cookies=request.getCookies();
		String name = "";
		String passwd = "";
		if(cookies!=null){
			for(Cookie coo:cookies){
				if(coo.getName().equals("loginInfo")){
					String[] info=coo.getValue().split(",");
					name=info[0];
					passwd=info[1];
				}
			}
		}
		//如果在cookie中得到儲存的使用者名稱和密碼,驗證正確後,直接轉到success頁
		if(new LoginBiz().isValid(name, passwd)){
			response.sendRedirect("/TestWeb/success.jsp");
		}else{
			arg2.doFilter(request, response);
		}

	}
	public void init(FilterConfig arg0) throws ServletException {
		
	}

	
	
}
當用戶請求login.jsp頁面時,首先會通過此Filter,這時會嘗試從請求資訊的Cookie中得到使用者名稱和密碼,如果是第一次登陸沒有設定過Cookie,那麼會把登陸請求交給LoginAction處理。如果之前成功登陸過,就已儲存有Cookie,獲取到正確的使用者名稱和密碼並驗證成功(安全起見,這裡再次驗證)後直接跳轉到success頁面,此時就不經過LoginAction了。

配置檔案如下:

  <servlet>
    <servlet-name>LoginAction</servlet-name>
    <servlet-class>com.autologin.LoginAction</servlet-class>
  </servlet>
  <filter>
  	<filter-name>CheckFilter</filter-name>
  	<filter-class>com.autologin.CheckFilter</filter-class>
  </filter>

  <servlet-mapping>
    <servlet-name>LoginAction</servlet-name>
    <url-pattern>/LoginAction</url-pattern>
  </servlet-mapping>	
  <filter-mapping>
  	<filter-name>CheckFilter</filter-name>
  	<url-pattern>/login.jsp</url-pattern>
  </filter-mapping>
第一次登陸成功後,chrome儲存的Cookie資訊



相關推薦

Java Web簡單實現自動登陸功能

Java 對自動登陸功能的簡單實現,僅用到了servlet和一個filter。第一次寫博文,如有不足的地方,敬請指正,謝謝。 登陸介面 <%@ page language="java" import="java.util.*" pageEncoding="UTF

JAVA webMVC案列登陸(servlet)

本次專案整體思路:首先在login.jsp中寫一個使用者名稱和密碼的登陸介面跳轉到LoginServlrt進行資料組裝login然後呼叫LoginDao進行校驗login():登陸校驗,LoginDao通過返回值,返回登陸結果 ,LoginServlet根據不同

javaWeb(十三)Demo:Filter實現自動登陸功能(Myeclipse+JSP+Servlet+EL/JSTL+Filter)

Filter實現自動登陸功能 原始碼:source code 思路圖: 就是在伺服器和顯示介面之間新增一個過濾器(這裡過濾範圍其實是全域性),獲取cookie裡面的使用者名稱和密碼,然後直接在Filter裡面登陸(就不要去登陸頁面了) 登陸頁面主要是看你的sess

Java 使用ArrayList集合實現註冊登陸功能

動手寫了才對知識點有更深的感覺 再次體會到了Java是完全面向物件的語言,調動物件做事情 對迭代器的使用有了初步的認識 要遍歷ArrayList集合的話有2種方法 1.使用toarray功能轉為陣列,再進行遍歷 2.建立一個集合的迭代器,使用迭代器去遍

Servlet監聽器與Timer定時器配合實現JAVA WEB應用簡單自動作業

       在web應用中,有時候客戶需要一些定時程式,不需要客戶自己去操作,而是由應用程式自行觸發執行某些操作。這個時候監聽與定時器的配合使用就基本可以實現這個需求了。  1.建立一個監聽的SERVELET,這個類繼承javax.servlet.http.HttpSe

微信小程式從入門第一講 java&&jFinal 小程式登陸功能實現以及獲取唯一標識openid和unionid

在我以前的一篇部落格中講到了獲取openid的方法,這裡就不做過多的講解java獲取微信小程式openid。這裡主要講解微信小程式登陸的實現和獲取unionid。需要提醒的是我後端框架使用的是jFinal,傳值方式跟spring的那套有些許的差別。 1、首先要知道微信小程式的開發本身就是基於

RabbitMQ在java-web簡單應用

RabbitMQ的使用場景 MQ,是Message Queue(訊息佇列)的簡寫。簡而言之,RabbitMQ就是將訊息儲存在佇列中。 在專案的實際開發過程中,可以將一些無需即時返回結果且耗時的操作提取出來,進行非同步處理。這種處理方式能夠大大節省伺服器的請求響應

java Web實現QQ郵箱驗證以及驗證碼註冊使用者

實體類:User.java package com.yinhe.bean; import java.util.Date; public class User { private String uid; private String username; private Str

Java Web使用JSPSmartUpload控制元件實現檔案的上傳和下載(解決了中文亂碼問題)(JSP頁面採用GBK編碼)

package edu.uestc.updown; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletConfig; import javax.servlet.ServletException

java web jasperreport+ireport 實現多記錄自動分頁列印

建立一個printByJasperDemo.jsp,程式碼如下: <%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%@ pagei

java web session+cookie實現使用者自動登入

      在之前的博文中介紹了專案中防止使用者重複登入的方案及解決非法退出異常的處理方法——監聽瀏覽器關閉事件onbeforeunload,傳送ajax請求到伺服器端執行正常退出程式,以避免使用者被鎖死的情況。然後在實際的測試中發現,有些瀏覽器如火狐是無法監聽到befor

java web 開發 如何實現 輸入密碼三次錯誤 後 鎖定賬戶功能

要求 : 1、 不能使用cookie 和 session ,因為 時間和條件受限2、不可以存、讀取資料庫 不給系統壓力 鎖定是很簡單的,只要在使用者表中加上失敗次數,鎖定標誌,鎖定時間(可選)。每次登入時,已經鎖定直接禁止登入。沒有鎖定就判定,如果失敗就把失敗次數+1,

Java Web介面之間傳值的實現方法

出處:http://blog.csdn.net/suwu150   在web中,我們經常要在頁面之間進行值的傳遞,但是具體的該怎麼做呢??下面就讓我們來實現: 傳值時有以下幾種方式,分別如下:  1、利用URL直接進行傳值     URL傳值格式是:URL?引數名1=引數

用正則表示式簡單實現郵箱登陸註冊等功能

前言 正則表示式(Regular Expression)作為在許多語言中都存在的邏輯表示式。被廣泛應用在檢索、替換等對文字進行操作的功能實現中。比起復雜的for迴圈和if的巢狀,正則表示式則更加簡潔高效,但是它的缺點也在這兒,由於過於符號化,正則表示式往

java webentity的實現規範

在日常的Java專案開發中,entity(實體類)是必不可少的,它們一般都有很多的屬性,並有相應的setter和getter方法。entity(實體類)的作用一般是和資料表做對映。所以快速寫出規範的entity(實體類)是java開發中一項必不可少的技能。 在專案中寫實

java開發簡單定時器的實現

    今天分享的是由spring註解實現的定時排程任務,非常簡單,快速上手,只需兩步。     第一步,在spring配置檔案名稱空間中加入: xmlns:task="http://www.springframework.org/schema/task"在xsi:sch

利用cookie, session 和Filter實現簡單自動登陸

需求: 1.當用戶請求主頁面時如果沒有登陸轉發到登陸介面 2.將使用者資訊存入到session中,賬號密碼存入cookie。 3.利用Filter過濾全域性檢測cookie,呼叫service實現登陸。 密碼加密,登陸,註冊頁面不能自動登陸 j

java中用jquery AutoComplete 實現自動補全(一)簡單小例子

                                                                               java中用jquery  AutoComplete 實現自動補全(一)           最近要做一個搜尋功能

tomcat 與 java weburl路徑的配置以及使用規則詳情(長期更新)

root 每一個 ava 目錄 clip ima 文件夾 logs 需要 首先我們看一下在myeclipse中建立的java web項目的結構 在這裏我們需要註意這個webroot也就是我們在tomcat裏的webapp裏面的應用 之所以每一個項目都有這個webroot

java-web生成文檔(一)

all 檢查 download com ftl 緩沖 getc cor tps 基於Java的解決方案也是很多的,包括使用Jacob、Apache POI、Java2Word、iText等各種方式,其實在從Office 2003開始,就可以將Office文檔轉換成XML文件