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>