1. 程式人生 > >使用Cookie物件完成表單使用者名稱記錄

使用Cookie物件完成表單使用者名稱記錄

怎樣使用Cookie記住你所登入的使用者名稱呢?
如果我們做一個表單頁面登入,假定使用者名稱為zs,密碼為123才能正確登入,所以我們這裡設計一個登入頁面,然後設計一個check檢驗的頁面,然後檢驗通過後將使用者名稱新增在response中:

Cookie cookie = new Cookie("uname",name);

            response.addCookie(cookie);

然後我們將Cookie重定向到A.jsp
A.jsp就是與login.jsp在客戶端的頁面,下面是解析圖:

就是說你登入提交到check後check伺服器端那邊的response獲取使用者名稱儲存到cookie
然後返回A.jsp因為都在客戶端,所以你再次使用login.jsp登陸的時候就會儲存你之前登陸的使用者名稱
但是你需要在login.jsp獲得cookie

<%!
            String uname;
        %>
        <%
            Cookie cookies[] = request.getCookies();
            for(Cookie cookie : cookies){
                if(cookie.getName().equals("uname")){
                    uname = cookie.getValue();
                }
            }
        %>

首先,宣告一個全域性變數uname,然後將cooike物件存到陣列,對得到的uname進行判斷。
最後在表單將獲取的cookie的Value的值賦給表單的Value即可

login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
        <%!
            String uname;
        %>
        <%
            Cookie cookies[] = request.getCookies();
            for(Cookie cookie : cookies){
                if(cookie.getName().equals("uname")){
                    uname = cookie.getValue();
                }
            }
        %>
        <form action="check.jsp" method = "post">
        用&nbsp;戶&nbsp;名:<input type = "text" name = "uname" value = "<%=(uname==null?"":uname) %>"><br/>
        &nbsp;密&nbsp;&nbsp;碼:<input type = "password" name = "pwd"><br/>
        <input type = "reset" value = "重置">
        &nbsp;&nbsp;&nbsp;
        <input type = "submit" value = "登入"><br/>
        </form>
</body>
</html>

check.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
        <%
            request.setCharacterEncoding("UTF-8");
            String name = request.getParameter("uname");
            String password = request.getParameter("pwd");

            //將使用者名稱加到Cookie中
            Cookie cookie = new Cookie("uname",name);

            response.addCookie(cookie);

            response.sendRedirect("A.jsp");
        %>
</body>
</html>

A.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>

</body>
</html>

其實A.jsp就是用來和login.jsp比較更直觀的反應出客戶端。
獲取表單的value屬性值使用了一個三目運算子,因為如果開始cookie中沒有儲存使用者名稱時,會出現null,這是進行一個判斷。