javaweb中的cookie

来源:互联网 发布:中铁四局网络采购平台 编辑:程序博客网 时间:2024/06/05 14:15

cookie机制:

cookie机制采用的是客户端保持HTTP状态信息的方式。

Cookie是在浏览器访问web服务器的某个资源是,由web服务器在HTTP响应消息头中附带送给浏览器的一个小文本文件。

一旦web服务器保存了某个cookie,那么他在以后每次访问该web服务器时,都会在http请求头中将这个cookie回传给web服务器。

1.创建一个cookie对象:

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

2.调用response的一个方法,把cookie传给客户端:

response.addCookie(cookie);

在页面上显示:默认是会话级别的,浏览器关闭,cookie消失。

<%

Cookie[] cookies = request.getCookies();
if(cookies !=null&&cookies.length>0){

for(Cookie cookie:cookies){
out.print(cookie.getName()+"-"+cookie.getValue());
out.println("");
}
}else{
out.print("正在创建");
Cookie cookie = new Cookie("name","aaa");

cookie.setMaxAge(30);//设置cookie存活时间 //持久化cookie
response.addCookie(cookie);
}

%>


案例:显示最近浏览过的商品:

books.jsp:显示最近浏览的5本书:

1.获取所有的cookie

2.从中筛选出book的cookie:如果cookieName为ATGUIGU_BOOK_开头的即符合条件

3.显示cookieValue

book.jsp:把书的信息已cookie的方式传回给浏览器,删除一个cookie

1.确定要被删除的cookie:ATGUIGU_BOOK_开头的Cookie数量大于或等于5,若从books.jsp传入的book,不在ATGUIGU_BOOK_中,则删除这个数组的第一个cookie;若从books.jsp传入的book,在ATGUIGU_BOOK_中则删除该cookie

2.把从books.jsp传入的book作为一个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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h4>Books Page</h4>
<a href = "book.jsp?book=javaWeb">javaWeb</a><br><br>
<a href = "book.jsp?book=java">java</a><br><br>
<a href = "book.jsp?book=hibernate">hibernate</a><br><br>
<a href = "book.jsp?book=struts">struts</a><br><br>
<a href = "book.jsp?book=spring">spring</a><br><br>
<a href = "book.jsp?book=html">html</a><br><br>
<a href = "book.jsp?book=css">css</a><br><br>


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


 %>
</body>
</html>

book.jsp实现:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ page import="java.util.*" %>
<!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>
<h4>Book detailPage</h4>
book:<%=request.getParameter("book") %>
<br><br>
<a href="books.jsp">return</a>
<%


String book = request.getParameter("book");
Cookie tempCookie = null;
//1.确定要被删除的cookie:ATGUIGU_BOOK_开头的Cookie数量大于或等于5,若从books.jsp传入的book,不在ATGUIGU_BOOK_中,则删除这个数组的第一个cookie;若从books.jsp传入的book,在ATGUIGU_BOOK_中则删除该cookie
Cookie[] cookies = request.getCookies();
List<Cookie> bookcookies = new ArrayList<Cookie>();
if(cookies !=null&&cookies.length>0){
for(Cookie c :cookies){
String cookieName = c.getName();
if(cookieName.startsWith("ATGUIGU_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);
}
//2.把从books.jsp传入的book作为一个cookie返回


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


原创粉丝点击