当前位置:文档之家› java学习day10cookie&session

java学习day10cookie&session

java学习day10cookie&session
java学习day10cookie&session

回顾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

Mapbooks=new HashMap();

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 MapfindAllBooks(){

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 books = DBUtil.findAllBooks();

for (Map.Entry book : books.entrySet()) { out.write("" +

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 books = DBUtil.findAllBooks();

for (Map.Entry book : books.entrySet()) { if (id.equals(book.getKey())) {

out.print(book);

}

相关主题
文本预览
相关文档 最新文档