cookie自動登錄的實現


     cookie自動登錄是指把用戶登錄的信息按期限(自定)保存在客戶端,當用戶請求登錄時判斷客戶端用沒有cookie對象,有的話填充值,否則登錄界面的輸入框為空,不進行填充。
     登錄界面之前在添加一個選擇登錄的jsp頁面,通過選擇“去登錄”,servlet判斷客戶端此次有沒有cookie對象。所以需要添加一個JSP頁面和一個servlet。
index.jsp部分代碼:
<body>
   <a href="/t31/AdminSer?status=auto">先去登錄</a>   
 </body>
login.jsp部分代碼:
<body>
    <form action="/t31/AdminSer" method="post">
        管理員姓名:<input type="text" name="aname" value=" ${requestScope.aname}" /><br/>
        管理員密碼:<input type="text" name="apass" value=" ${requestScope.apass}" /><br/>
        ${requestScope.error}<br/>
        <select name="auto">
            <option value="0">不自動填充</option>
            <option value="7">一周</option>
            <option value="30">一月</option>
        </select><br/>
        <input type="submit" value="提交" />
        <input type="hidden" name="status" value="login" />
    </form>
</body>
servlet部分代碼:
if(status.equals("login")){
            String aname = request.getParameter("aname");
            String apass = request.getParameter("apass");
            if (aname.equals(apass)) {
                /*將用戶登錄名放到session中*/
                HttpSession session = request.getSession();
                session.setAttribute("aname", aname);
                /*判斷用戶是否需要保存自己的登錄信息 */
                Cookie anameCookie=new Cookie("aname",aname);
                Cookie apassCookie=new Cookie("apass",apass);
                /*計算保存時間*/
                anameCookie.setMaxAge(60*60*24*Integer.parseInt(request.getParameter("auto")));
                apassCookie.setMaxAge(anameCookie.getMaxAge());
                /*response代表響應 */
                response.addCookie(anameCookie);
                response.addCookie(apassCookie);
                /*頁面重定向*/
                response.sendRedirect("/t31/queryStudent.jsp");
            } else{
                request.setAttribute("error", "登錄失敗");
                request.getRequestDispatcher("/login.jsp").forward(request, response);
            }
        }else if(status.equals("auto")){
            Cookie[] cookies=request.getCookies();
            for(Cookie cookie:cookies){
                if(cookie.getName().equals("aname")){
                    request.setAttribute("aname", cookie.getValue());
                }
                if(cookie.getName().equals("apass")){
                    request.setAttribute("apass", cookie.getValue());
                }
            }
            request.getRequestDispatcher("/login.jsp").forward(request, response);
        }
    }
 
 
 
 
創建cookie
Cookie cookie = new Cookie(String name,String value);
response.addCookie(cookie);
 
查詢cookie
//如果沒有cookie,則返回null。
Cookie[] cookies = request.getCookies();
String name = cookie.getName();
String value = cookie.getValue();
 
 
cookie的限制
cookie可以禁止
cookie的大小有限制(4k左右)
cookie的數量也有限制(瀏覽器大約能保存300個)
cookie的值叧能是字符串,要考慮編碼問題。
cookie不安全
 
 
保存和查詢Cookie流程
a. 瀏覽器向服務器發送addCookie請求 
服務器中的AddCookieServlet創建了兩個Cookie:cookie和cookie2
 
b. 服務器端執行語句response.addCookie(cookie);生成消息頭“set-cookie”, 
並將兩個Cookie以鍵值對的方式(“name=aaa”、“passwd=123”)存放在消息頭中發 送給瀏覽器
 
c. 瀏覽器將Cookie信息保存到本地內存中
 
d. 瀏覽器繼續向服務器發送請求(帶着消息頭cookie) 
服務器端的FindCookieServlet找到Cookie信息,並顯示給瀏覽器
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM