1. 程式人生 > >JavaWeb----Cookie的兩個應用

JavaWeb----Cookie的兩個應用

1.利用Cookie實現最近瀏覽的商品

books.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>
book.jsp
<%@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

<%@ 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>
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>
	<%
		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>