回顾httpServletRequest
httpServletResponse
会话概述Cookie api介绍
Cookie 属性
补充注释:
浏览器一关闭cookie就没有了
注意,cookie是存在浏览器的缓存里边,所以不存在什么最大生存时间,默认为-1,直到浏览器关闭为止,要想设置最大生存,就要把cookie存在硬盘的文件上了。
如果我要想,关闭了浏览器,再打开,还在,怎么办?
关闭浏览器,发现,cookie还在
Tipscookie存在哪里呢?点如下的删除,所有的cookie都没有了
从什么时候开始计时?从浏览器关闭之后
Path属性
什么意思呢?
CookieDemo1的在web.xml 里边设置的路径是/Servlet/Ck1
再创建一个CookieDemo2和(CookieDemo1)如下图,只有图中的部分,下面的代码不需要写(创建cookie的部分不需要些),路径是/Servlet/ck2
那么访问CookieDemo2就能读取到cookies 如下也可以
如下的不能访问
我想只要时应用下面的都可以访问怎么办
这样只要在当前应用都能访问到
如下的设置最方便
删除cookie
访问
点击clear,再关闭浏览器,发现cookie没有了
注意:
Clear 一下
在新建一个会话
这个时候cookie就没有了
Cookie 属性补充
什么叫不同的会话
也就是说会话1有自己的cookies(存在会话1 的缓存里边)会话2也有自己的cookies(存在会话二的缓存里边),
要想让会话2访问到会话1的cookies,怎么办?要满足两个条件,第一个是路径要相同,第二个是,要写到磁盘离去,而且有一定的生存周期
如果,生存周期为0,哪么浏览器不关闭,cookie也就没有了,那么不管是同一会话还是不同会话都访问不到cookie了
记住用户名新建一个servlet
再建一个servlet
验证
输入tom 和123之后,发现登录成功,再一次进入登录页面,发现Tom被记住了
历史记录
步骤一、新建一个实体类
生成get set方法,以及ToString方法
publicclass Book {
private String id;
private String name;
privatedouble price;
private String author;
public Book(String id, String name, double price, String author) {
super();
this.id = id;
https://www.doczj.com/doc/fa2640133.html, = name;
this.price = price;
this.author = author;
}
public StringgetId() {
return id;
}
publicvoid setId(String id) {
this.id = id;
}
public StringgetName() {
return name;
}
publicvoid setName(String name) {
https://www.doczj.com/doc/fa2640133.html, = name;
}
publicdouble getPrice() {
return price;
}
publicvoid setPrice(double price) {
this.price = price;
}
public StringgetAuthor() {
return author;
}
publicvoid setAuthor(String author) {
this.author = author;
}
@Override
public StringtoString() {
return"Book [id="+ id+ ", name="+ name+ ", price="+ price + ", author=" + author + "]";
}
步骤二、创建一个实用方法类
提供所有书本的查询方法,以及根据id 获得书本的方法
publicclass DBUtil {
privatestatic
Map
static{
books.put("1", new Book("1", "金瓶梅", 20, "王瑞鑫"));
books.put("2", new Book("2", "葵花宝典", 20, "杨成毅"));
books.put("3", new Book("3", "九阴真经", 30, "陈光"));
books.put("4", new Book("4", "玉女心经", 10, "陈志家"));
}
publicstatic Map
return books;
}
/**
* 根据id查找指定的书
* @param id
* @return
*/
publicstatic Book findBookById(String id){
return books.get(id);
};
}
步骤三、创建一个servlet 用于显示所有的书和历史记录
publicvoid doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.write("------本网站有以下的好书-----");
out.write("");
// 获取所有的书,然后把书遍历出来
Map
for (Map.Entry
book.getValue().getName()
+ "
");
}
out.write("
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (int i = 0; i if ("historyBookId".equals(cookies[i].getName())) {// 判断是否有historyBookId的cookie String value = cookies[i].getValue(); // 1-2-3 String[] ids = value.split("-"); for (int j = 0; j Book book = DBUtil.findBookById(ids[j]);// 根据ID得到指定的书 out.print(book.getName() + " } } } } } 步骤四、创建一个servlet 用于显示书本的详细信息,并且把把浏览信息写入cookie publicclass ShowBookDetail extends HttpServlet { publicvoid doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); // 根据id,把id 相关书籍的详细信息显示出来,哪来的id,从showAllBookServlet页面的href中来的,也就是从问号里边获得 String id = request.getParameter("id"); Map for (Map.Entry out.print(book); }
");