使用Cookie物件完成表單使用者名稱記錄
阿新 • • 發佈:2018-12-21
怎樣使用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"> 用 戶 名:<input type = "text" name = "uname" value = "<%=(uname==null?"":uname) %>"><br/> 密 碼:<input type = "password" name = "pwd"><br/> <input type = "reset" value = "重置"> <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,這是進行一個判斷。