String name = request.getParameter("name");
if(name != null && !name.trim().equals("")){
//如果接收到表单提交的name name不为空 设置cookie
Cookie cookie = new Cookie("name",name);
//setMaxAge:设置Cookie的最大时效,以秒为单位,0表示立即删除,负数表示不存储该Cookie
cookie.setMaxAge(30);
response.addCookie(cookie);
}else{
//如果没有接收到表单提交的name 遍历cookies如果有值,设置name为cookie的值
Cookie [] cookies = request.getCookies();
if(cookies != null && cookies.length > 0){
for(Cookie cookie : cookies){
String cookieName = cookie.getName();
if("name".equals(cookieName)){
String val = cookie.getValue();
name = val;
}
}
}
}
//如果name不为空,输出name的值,如果为空(没有表单提交,cookies也没有name的值)重定向到login.jsp
if(name != null && !name.trim().equals("")){
out.print("Hello: "+name);
}else{
response.sendRedirect("login.jsp");
}
↑↑↑自动登陆
显示最近浏览的5本书:
books.jsp
<h4>Books Page</h4>
<a href="book.jsp?book=JavaWeb">Java Web</a><br><br>
<a href="book.jsp?book=Java">Java</a><br><br>
<a href="book.jsp?book=Oracle">Oracle</a><br><br>
<a href="book.jsp?book=Ajax">Ajax</a><br><br>
<a href="book.jsp?book=JavaScript">JavaScript</a><br><br>
<a href="book.jsp?book=Android">Android</a><br><br>
<a href="book.jsp?book=Jbpm">Jbpm</a><br><br>
<a href="book.jsp?book=Struts">Struts</a><br><br>
<a href="book.jsp?book=Hibernate">Hibernate</a><br><br>
<a href="book.jsp?book=Spring">Spring</a><br><br>
<%
Cookie [] cookies = request.getCookies();
if(cookies != null && cookies.length >0){
for(Cookie c: cookies){
String cookieName = c.getName();
if(cookieName.startsWith("CBok_")){
out.print(c.getValue());
out.print("<br>");
}
}
}
%>
book.jsp
<h4>Book Detail Page</h4>
Book: <%= request.getParameter("book") %>
<br><br>
<a href="books.jsp">Return</a>
<%
String book = request.getParameter("book");
Cookie [] cookies = request.getCookies();
List<Cookie> bookCookies = new ArrayList<Cookie>();
Cookie tempCookie = null;
//如果cookies不为空,遍历cookies
if(cookies != null && cookies.length >0){
for(Cookie c: cookies){
String cookieName = c.getName();
//如果c以CBok为前缀,添加到bookCookies集合
if(cookieName.startsWith("CBok_")){
bookCookies.add(c);
//如果接收到的book与cookies中有重复的,赋给tempCookie
if(c.getValue().equals(book)){
tempCookie = c;
}
}
}
}
//如果booksCookies集合里的元素大于等于5,并且tempCookie是空
if(bookCookies.size() >= 5 && tempCookie == null){
//第一本看过的cookie赋给tempCookie
tempCookie = bookCookies.get(0);
}
//如果tempCookie不为空,删除tempCookie保存的cookie
if(tempCookie != null){
tempCookie.setMaxAge(0);
response.addCookie(tempCookie);
}
Cookie cookie = new Cookie("CBok_" + book,book);
response.addCookie(cookie);
%>
向客户端写入Cookie
1.创建一个Cookie对象
Cookie cookie = new Cookie("name","value");
2.作用范围:默认可以作用当前目录和当前目录的子目录,但不能作用于当前目录的上一级目录
可以通过setPath方法来设置Cookie的作用范围,其中/代表站点的根目录
cookie.setPath(request.getContextPath());
3.setMaxAge:设置Cookie的最大时效,以秒为单位,0表示立即删除,负数表示不存储该Cookie
cookie.setMaxAge(0);
4.调用response的一个方法把Cookie传给客户端
response.addCookie(cookie);
从客户端获取Cookie
Cookie [] cookies = resquest.getCookies();
if(cookies != null && cookies.length > 0){
for(Cookie cookie : cookies){
out.print(cookie.getName() + ":" + cookie.getValue());
}
}