javaweb中cookie用法

Cookie

一、向客户端浏览器写入Cookie

1)创建一个Cookie对象

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

2)setMaxAge:设置Cookie的最大时效,以秒为单位;0,表示立即失效;负数,不存储该Cookie;正数,表示存储时间;

cookie.setMaxAge(30);

3)设置Cookie的作用范围

cookie.setPath(request.getContextPath());

4)调用response的一个方法把Cookie传给客户端

response.addCookie(cookie);


二、从浏览器获取Cookie


1)获取Cookie

Cookie [] cookies = request.getCookies();

if(cookies != null && cookies.length >0 ){

for(Cookie cookie:cookies){

out.print(cookie.getName()+":"+cookie.getValue();

out.print("<>br");

}

}


Cookie 默认为会话级别,通过setMaxAge设置变为持久cookie


三、应用场景:

1)用户登录

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>cookie登录页面</title>
</head>
<body>
	<form action="index.jsp" method="post">
		<input type="text" name="name"><br>
		<input type="submit" value="submit">
	</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<%
		//1.获取name;
		String name = request.getParameter("name");
		//out.print(name);
		if (name != null && !name.trim().equals("")) {
			//2.储存cookie
			Cookie cookie = new Cookie("name", name);
			cookie.setMaxAge(10);
			//3.将cookie传给客户端(ressponse方法)
			response.addCookie(cookie);
		} else {
			Cookie[] cookies = request.getCookies();
			if(name != null && !name.trim().equals("")){
				for(Cookie cookie : cookies){
					String cookieName = cookie.getName();
					if("name".equals(cookieName)){
						String value = cookie.getValue();
						name = value;
					}
				}
			}
		}
		if(name != null && !name.trim().equals("")){
			out.print("hello"+name);
		}else{
			response.sendRedirect("login.jsp");
		}
	%>
</body>
</html>

2)用户浏览历史记录


<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<h2>BOOK NOTE</h2>
	<h3>
		BOOK:<%=request.getParameter("book")%></h3>
	<h5>
		<a href="books.jsp" title="return">Reutrn BOOKS</a>
	</h5>
	<%
		String book = request.getParameter("book");
		
			Cookie [] cookies =request.getCookies();
			List<Cookie> bookCookies = new ArrayList<Cookie>();
			Cookie tempCookie = null;
			if(cookies != null&& cookies.length>0){
		for(Cookie c:cookies){
			String cookieName = c.getName();
			if(cookieName.startsWith("book_")){
				bookCookies.add(c);
				
				if(c.getValue().equals(book)){
					tempCookie=c;
				}
			}
		}
			}
			
			if(bookCookies.size()>=5 && tempCookie == null){
		tempCookie = bookCookies.get(0);
			}
		
			if(tempCookie!=null){
		tempCookie.setMaxAge(0);
		response.addCookie(tempCookie);
			}

			Cookie cookie = new Cookie("book_"+book,book);
			response.addCookie(cookie);
	%>
</body>
</html>

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<h2>BOOKS</h2>
	<a href="book.jsp?book=A">A</a>
	<br>
	<br>
	<a href="book.jsp?book=B">B</a>
	<br>
	<br>
	<a href="book.jsp?book=C">C</a>
	<br>
	<br>
	<a href="book.jsp?book=D">D</a>
	<br>
	<br>
	<a href="book.jsp?book=E">E</a>
	<br>
	<br>
	<a href="book.jsp?book=F">F</a>
	<br>
	<br>
	<a href="book.jsp?book=G">G</a>
	<br>
	<br>

	<%
		Cookie [] cookies = request.getCookies();
		if(cookies !=null && cookies.length>0){
			for(Cookie c:cookies){
			String cookieName = c.getName();
			if(cookieName.startsWith("book_")){
		out.println(c.getValue());
		out.print("<br>");
			}
			}
		}
	%>
</body>
</html>


发布了35 篇原创文章 · 获赞 15 · 访问量 6万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章