JavaWeb----Cookie的兩個應用
阿新 • • 發佈:2019-01-23
1.利用Cookie實現最近瀏覽的商品
books.jsp
book.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> <h4>商品列表</h4> <a href="book.jsp?bookName=java">Java</a><br><br> <a href="book.jsp?bookName=ajax">Ajax</a><br><br> <a href="book.jsp?bookName=html">HTML</a><br><br> <a href="book.jsp?bookName=javascript">JavaScript</a><br><br> <a href="book.jsp?bookName=spring">Spring</a><br><br> <a href="book.jsp?bookName=php">PHP</a><br><br> <a href="book.jsp?bookName=android">Android</a><br><br> <hr /><br><br> <h4>顯示最近瀏覽的商品</h4> <% //顯示最近瀏覽的商品 //獲取所有的Cookie Cookie [] cookies = request.getCookies(); if(cookies != null && cookies.length > 0) { //從中篩選出cookie name是“Limbo's”的書籍 //顯示cookie的value for(Cookie c : cookies) { if(c.getName().startsWith("Limbo_s_")) { out.println(c.getValue()); out.println("<br>"); } } } %> </body> </html>
<%@page import="java.util.ArrayList"%> <%@page import="java.util.List"%> <%@ 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> <h4>商品詳情頁</h4> Book:<%= request.getParameter("bookName") %> <a href="books.jsp">return</a> <body> <% String bookName = request.getParameter("bookName"); //把書的資訊以Cookie的形式回傳給瀏覽器,刪除一個Cookie //1.確定要刪除的Cookie:以Limbo 's開頭的Cookie Cookie[] cookies = request.getCookies(); //存放所有以Limbo's開頭的cookie List<Cookie> cookieList = new ArrayList<Cookie>(); //存放和book.jsp傳入的book匹配的Cookie Cookie tempCookie = null; if (cookies != null && cookies.length > 0) { for(Cookie c : cookies) { String cookieName = c.getName(); if(cookieName.startsWith("Limbo_s_")) { cookieList.add(c); } if(c.getValue().equals(bookName)) { tempCookie = c; } } } //數量大於等於5,或者是books.jsp中傳入的book不在Cookie中, //則刪除陣列中最早的那個 if(cookieList.size() >= 5 && tempCookie == null) { tempCookie = cookieList.get(0); } if(tempCookie != null) { tempCookie.setMaxAge(0); //設定最大時間為0相當於刪除 response.addCookie(tempCookie); //設定完了之後要回傳,否則不會刪除的 } //將book.jsp封裝成一個cookie回傳 Cookie cookie = new Cookie("Limbo_s_" + bookName, bookName); response.addCookie(cookie); %> </body> </html>
2.利用Cookie實現自動登入
login.jsp
cookie.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> <form action="cookie.jsp" method="post"> <input type = "text" name = "name"/> <input type = "submit" value = "submit"/> </form> </body> </html>
<%@ 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 name = request.getParameter("name");
//可以獲取登入者的名字,即通過登入到達指定頁面
if(name != null && !name.trim().equals(""))
{
Cookie cookie = new Cookie("username" , name);
cookie.setMaxAge(30);//設定cookie的時效,讓cookie在30秒內有效,即30秒內無需重複登入
response.addCookie(cookie);//返回cookie
}
//之間訪問指定頁面
else{
Cookie[] cookies = request.getCookies();
if(cookies != null && cookies.length > 0 )
{
for(Cookie cookie : cookies)
{
String cookieName = cookie.getName();
//匹配鍵值
if("username".equals(cookieName))
{
name = cookie.getValue();
}
}
}
}
if(name != null && !name.trim().equals(""))
{
out.println("hello" + name);
}
else
{
response.sendRedirect("login.jsp");
}
%>
</body>
</html>