1. 程式人生 > >java Cookie+Session實現自動登入

java Cookie+Session實現自動登入

       這是2016年的第一篇blog,首先在這裡祝大家新年工作開心,平平安安大笑,生活舒心,日子紅紅火火

       之前我們聊過PHP的自動登入,我們也非常詳細的給大家分析了實現的原理,有了上次課的基礎(PHP自動登入

的連結:http://blog.csdn.net/bayren820/article/details/50397633),相信大家對於今天java實現同樣的功能,就不會

感到特別陌生了,大不了就是語法不一樣,好了,我們開始今天的分享!

       還是老規矩,我們結合程式碼,給大家做詳細講解:

登入介面(就是一個普通的Servlet)

        out.println("<h1>使用者登入</h1>");
        out.println("<form action='/MyCookies/Icookiedeal' method='post'>");
        out.println("使用者名稱:<input type='text' name='uname'>");
        out.println("密碼:<input type='password' name='upassword'>");
        out.println("<input type='submit' value='提交'>");
        out.println("</form>");

中間處理頁面(我們重點不是聊資料庫,因此這裡就不連線資料庫了)

response.setContentType("text/html");
PrintWriter out = response.getWriter();

        // java接收表單傳遞過來的引數,都是String字元型別
        String uname = request.getParameter("uname");
        String upassword = request.getParameter("upassword");

        // 建立一個Session物件
        HttpSession session = request.getSession();
        if("123".equals(upassword)){
        // session給屬性賦值,和PHP裡面的$_SESSION['uname']是一樣的功能


        session.setAttribute("uname", uname);
        // cookie儲存兩週的SessionID,我們說過,這裡Cookie的名字,必須是瀏覽器自動返回的固定名字

                // 因為當我們用這個JSESSIONID的名字儲存Cookie時,伺服器端會自動幫助我們判斷,無需額外程式碼
        Cookie cookie = new Cookie("JSESSIONID",session.getId());
        cookie.setMaxAge(2*7*24*3600);

                // 需要response物件,將Cookie寫入本地瀏覽器


        response.addCookie(cookie);
        }

判斷登入狀態,讀取使用者名稱介面

        HttpSession session = request.getSession();

        // 讀取屬性uname的值,由於我們用Cookie儲存了JSESSIONID的生命週期

        // 因此即使你重啟了瀏覽器,我們依舊能夠在伺服器端SessionID沒有過期之前,獲取到使用者名稱
        String uname = (String) session.getAttribute("uname");
        if(uname != null){
    out.print(uname+"</h1>");
        }

大部分的程式碼結束了,但是有幾個問題需要注意:

        1.  表單提交中文亂碼問題,由於我們是post提交,因此解決方案十分容易,在中間處理頁面加上一句話即可:

             request.setCharacterEncoding("utf8"),這樣request過來的引數都轉成了utf8編碼,防止了中文亂碼!

        2.Cookie儲存中文亂碼的問題(雖然本次課程沒有涉及到,但是這個知識點我還是準備在這裡分享,以後我們肯

            定會用到的,大家先有個印象),java中預設Cookie儲存中文是會亂碼的,這一點沒有PHP做的好,下面我們

            講講解決辦法:在中間處理頁面,加上一句:java.net.URLEncoder.encode("uname","utf8"),進行Base64轉

            碼;然後在讀取頁面,再加上一句java.net.URLDecoder.decode("uname","utf8"),進行解碼即可!

好了,分享到此結束,今天干貨真是非常多,大家好好理解!!!預告一下,下次分享的內容:PHP的Yii框架

大家可以關注我的微信公眾號:iwork,我會每天推送一篇原創文章,讓大家都能有所收穫!


相關推薦

java Cookie+Session實現自動登入

       這是2016年的第一篇blog,首先在這裡祝大家新年工作開心,平平安安,生活舒心,日子紅紅火火!        之前我們聊過PHP的自動登入,我們也非常詳細的給大家分析了實現的原理,有了

SpringMVC+Cookie+Session實現自動登入

實現自動登入其實並不是特別的困難,下面來介紹我所實現的自動登入的一種方式,首先,必須提到Cookie和Session,Cookie是儲存在客戶端的而Session是儲存在服務端的,每次客戶端通過遊覽器訪問服務端的時候,會有一個JSESSIONID作為key值儲存在Cooki

ASP.Net之使用CookieSession實現自動登入

一、UserLogin.aspx程式碼 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UserLogin.aspx.cs" Inherits="UserLoginNameSpace" %>

JavaWeb_利用Cookie技術實現自動登入

//------------------------------------儲存Cookie------------------------------- package com.MainServlet; import java.io.File; import java.

cookie實現自動登入

                                         

CookieSession實現儲存登入狀態免登入

  首先Cookie和Session都是為了狀態管理,HTTP協議是無狀態的,不能儲存每次提交的資訊,即當伺服器返回與請求相對應的應答之後,這次事務的所有資訊就丟掉了。   如果使用者發來一個新的請求,伺服器無法知道它是否與上次的請求有聯絡。   對於

.net mvc 利用cookie實現自動登入 退出後登出資訊

1.登入Action中將使用者資訊加入到cookie中:    HttpCookie cookie = new HttpCookie("useridMsg");    cookie.Expires= DateTime.Now.AddDays(7);    cookie["u

Servlet通過Cookie儲存使用者資訊,實現自動登入的demo.

開始介面HTML,跳轉到判斷是否有Cookie的Servlet. SessionStartPage.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <

phantomJS利用cookie實現自動登入

phantomjs是一個基於webkit核心的無頭瀏覽器。即沒有UI介面的一個瀏覽器,只是其內的點選、翻頁等人為相關操作需要程式設計實現。PhantomJS提供JavaScript API介面,即通過

jsp通過Cookie實現自動登入

一、什麼是使用者自動登入? 對於我們的網站向已註冊使用者提供某些專門的服務,比如網上購物、線上下載、收費瀏覽等等,就會要求使用者在使用這些服務之前進入登入頁面,輸入使用者名稱和密碼,並進行驗證。 如果使用者經常訪問我們的網站,假如每天都訪問一次,或者好幾次,那麼使用者每次都

C#.net cookiesession實現自動登陸

一、什麼是使用者自動登入?    對於我們的網站向已註冊使用者提供某些專門的服務,比如網上購物、線上下載、收費瀏覽等等,就會要求使用者在使用這些服務之前進入登入頁面,輸入使用者名稱和密 碼,並進行驗證。     如果使用者經常訪問我們的網站,假如每天都訪問一次,或者好幾次,

Filter過濾器+cookie實現自動登入和安全登入

實現思想: 我們只要登陸成功就把登入資訊儲存到cookie中,將使用者名稱存入session中,下一次進入介面只要通過AutoLoginfilter攔截獲取cookie,如果有登入資訊的cookie就取出來,進行自動登入處理,每一次訪問通過secureLo

cookie技術實現自動登錄+驗證用戶名輸入是否正確

ets htm text cti 創建 sel turn 失去焦點 table login頁面 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% Strin

php微信網頁開發實現自動登入註冊功能例項

功能:自動登入註冊功能 描述:php實現微信網頁自動登入註冊功能 範圍:適用於所有php版本 thinkphp5.0例項 $token = cookie('token'); if($token){ //這裡寫登入後的邏輯 }else{ $

Python實現自動登入,強行突破圖形驗證碼!

  驗證碼有圖形驗證碼、極驗滑動驗證碼、點觸驗證碼、宮格驗證碼。這回重點講講圖形驗證碼的識別。 學習Python中有不明白推薦加入交流群                 號:516107834 &

利用Python識別圖形驗證碼!實現自動登入!室友驚訝的合不攏嘴!

驗證碼有圖形驗證碼、極驗滑動驗證碼、點觸驗證碼、宮格驗證碼。這回重點講講圖形驗證碼的識別。 雖說圖形驗證碼最簡單,但是對於我這等新手,還是要苦學一番。首先尋找測試網站,網站選的是如雲閣小說網,小網站不怕被封。他們的驗證碼一般如下:      

java+maven工程 實現 自動對war包進行復制並修改和替換每個的配置檔案

   在工作中碰到一個比較苦惱的事情,(這裡以7條線為例子)同一個war包 需要部署7條生產線,但是每個生產線的編號以及ip都不同,導致我們手動的每個包去替換配置檔案和配           置ip的js檔案   &n

java+maven工程 實現 自動對war包進行復制並修改和替換每個的配置文件

classes cep res 發生 分離 sys span 一個 pla 在工作中碰到一個比較苦惱的事情,(這裏以7條線為例子)同一個war包 需要部署7條生產線,但是每個生產線的編號以及ip都不同,導致我們手動的每個包去替換配置文件和配 置ip

SSM整合系列之 基於Shiro框架實現自動登入(RememberMe)

一、前言:Shiro框架提供了記住我(RememerMe)的功能,比如我們訪問一些網站,關閉了瀏覽器,下次再開啟還是能記住你是誰,下次訪問的時候無需登入即可訪問,本文將實現記住我的功能。 專案git地址:https://github.com/gitcaiqing/SSM_DEMO.git

mstsc儲存使用者名稱和密碼,實現自動登入遠端桌面

MSTSC引數說明 首先可以使用mstsc /?來檢視關於mstsc的引數說明 根據上述的命令說明,我這裡實現的bat檔案為 mstsc C:/a.rdp /console /v: xxx.xxx.xxx.xxx:3389   rdp檔案生成方法 最近由