<table border="1">
<tr>
<th>名称</th>
<th>操作</th>
</tr>
<tr>
<td>iPhone7</td>
<td><a href="add?name=iPhone7">添加</a></td>
</tr>
<tr>
<td>小米</td>
<td><a href="add?name=小米">添加</a></td>
</tr>
<tr>
<td>华为</td>
<td><a href="add?name=华为">添加</a></td>
</tr>
<tr>
<td>锤子</td>
<td><a href="add?name=锤子">添加</a></td>
</tr>
<tr>
<td>一加</td>
<td><a href="add?name=一加">添加</a></td>
</tr>
<tr>
<td>8848</td>
<td><a href="add?name=8848">添加</a></td>
</tr>
</table>
<h1><a href="list">查看购物车</a></h1>
<h1><a href="delete">清空购物车</a></h1>
Session
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
/*
会话:打开浏览器,访问Web应用程序,关闭浏览器这个过程
当每个客户端访问服务器的时候,服务器会自动为每一个客户端生成一个唯一标识
这个唯一表示就是session,服务器中有一个类似HashMap的数据结构保存了所有
session和客户端的对应关系
session中也可以存储一些数据,每个客户端只能使用自己的session存取数据
整个会话过程中,session一般有且只有一个,可以在不同的页面使用同一个session存储数据
session随着会话的开启服务器自动创建,对着会话的关闭服务器自动销毁
关闭当前页面不会导致session的销毁
*/
//Java中session对应的类叫做HttpSession
//可以通过request.getSession()获得当前访问服务器的客户端对应的session对象
//有session就直接使用,没有就创建一个,然后使用
//不需要也不能去new创建session,只能使用getSession();
HttpSession session = request.getSession();
//设置session的有有效期,超过指定时间就失效,tomcat默认是30分钟
//session.setMaxInactiveInterval(30);
//让session立即失效,其中保存的数据也会小时
//session.invalidate();
//setAttribute(key,value)向session中存数据
//如果key存在,后执行的覆盖先执行的
//getAttribute(key)从session中取数据,也要进行强制转换。
//如果key不存在,取出的是null
//
ArrayList<String> goods =(ArrayList<String>)session.getAtrrbute("goods");
if(goods == null){
goods = new ArrayList<String>();
session.setAttribute("goods",goods);
}
goods.add(name);
response.sendRedirect("index.jsp");
}
Cookie
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*
cookie 和session差不多,也是和客户端一一对应,都能存储数据
session存储在服务器上,Cookie存储在客户端上
cookie可以有多个,浏览器在每次请求的时候
会自动把全部的cookie发送给服务器
*/
//通过new Cookie(name,value)存取数据,只能存String
//同名的会覆盖
Cookie cookie = new Cookie("goods".name);
//设施有效期,默认是会话 ,单位是秒
//设置了有效期后浏览器会自动把cookie存在硬盘,失效后浏览器会自动删除cookie
cookie.setMaxAge(60*60);
//通过把有效期设置为0可以删除一个cookie
//cookie.setMaxAge(0);
//负数,有效期就是会话,随之会话的关闭,cookie就会被清理
//cookie.setMaxAge(-1);
//通过response发送浏览器,客户端会自动进行接收和保存
//在后续的所有请求中,也会自动把保存的cookie放在请求头中,发送给服务器
response.addCookie(cookie);
response.sendRedirect("index.jsp");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ArrayList<String> goods = new ArrayList<String>();
//只能获取所有的cookie数组
Cookie []cookies = request.getCookies();
//通过遍历获取每一个cookie
for(Cookie cookie: cookies){
//如果想获取特定的一个
//1.cookie.getName();获取cookie的name;
String cookieName = cookie.getName;
//2.和需要寻找的cookie进行名字比较
if("goods".equals(cookieName)){
//cookie 只能保存String
String cookieValue = cookie.getValue();
goods.add(cookieValue);
}
request.setAttribute("list",goods);
request.getRequestDispather("list.jsp").forward(request,response);
}
}