这是项目文件列表及html文档的跳转地址
以下为具体实现代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<center>
<h1>商品列表</h1>
<a href="/war exploded/addCart?name=杯子">杯子</a><br>
<a href="/war exploded/addCart?name=书包">书包</a><br>
<a href="/war exploded/addCart?name=笔记本">笔记本</a><br>
</center>
</body>
</html>
package session;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@WebServlet(name = "AddCartServlet", urlPatterns = "/addCart")
public class AddCartServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取商品信息
String name=request.getParameter("name");
//在服务器中开辟一个能保存商品信息的内存空间session
HttpSession session= request.getSession();
//重点:以下代码实现目的为--在连续点击打开多个商品链接后,使多个商品信息可以通过name传进来保存在session中,不会被前个商品信息覆盖,只出现一个商品;
//创建一个list类集合对象用来保存此前session中的所有商品信息;此处需要强转(将session转为List类使等号两边类型相等)
List list=(List)session.getAttribute("list");
//第一次访问的时候,list不存在,需要创建一个;
if (list==null){
list=new ArrayList();
}
//将商品信息保存到list集合中
list.add(name);
//在session内存空间中保存一个键为"list",值为list的商品
session.setAttribute("list",list);
//方法重载,对session进行持久化操作,也就是持久化cookie里的JSESSIONID(标识id)
Cookie cookie=new Cookie("JSESSIONID",session.getId());
//使session内存空间在无操作情况下存在时间变为24小时;
cookie.setMaxAge(60*60*24);
//使cookie参数在war exploded目录下才会被携带;
cookie.setPath("/war exploded");
response.addCookie(cookie);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
package session;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.List;
@WebServlet(name = "GetCartServlet", urlPatterns = "/getCart")
public class GetCartServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session=request.getSession();
List<String> list=(List<String>) session.getAttribute("list");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
for (String s : list){
response.getWriter().write(s+"<br/>");
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}