购物车用session怎么实现的
2个回答
展开全部
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
// 获得session
request.getSession(); // 创建了一个session
// 获得所有商品
Map<String, Book> all = DB.getAll();
out.write("本站提供如下商品<br>");
for(Entry<String,Book> e : all.entrySet()) {
Book book = e.getValue();
// 超链接要url重写
// url重写做了两件事情,第一,获得session的id,第二,将id加到地址后面
String url = "/javaweb07/servlet/BuyServlet?id="+book.getId();
String newUrl = response.encodeURL(url);
out.write(book.getName() + "<a href='"+newUrl+"' target='_blank'>购买</a><br>");
}
}
BuyServlet.java
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获得id
String id = request.getParameter("id");
// 找出书
Book book = DB.find(id);
// 获得购物车
HttpSession session = request.getSession();
List cart = (List) session.getAttribute("cart");
if(cart==null) {
// 刚进超市,分配购物车
cart = new ArrayList();
}
// 加入购物车
cart.add(book);
// 将购物车找个地方存起来,方便下次购买
session.setAttribute("cart", cart);
// 第一次创建session的时候需要发Cookie,将sessionid带给浏览器
// 获得sessionid
String sessionid = session.getId();
// 发送cookie,Cookie的key是区分大小写
Cookie cookie = new Cookie("JSESSIONID", sessionid);
// 设置有效时间
cookie.setMaxAge(60*60*5);
response.addCookie(cookie);
// 请求重定向到购物车页面
String url = "/javaweb07/servlet/ListCartServlet";
// url重写
String newUrl = response.encodeRedirectURL(url);
response.sendRedirect(newUrl);
}
ListCarServlet
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
// 获取购物车
// getSession方法会拿着用户的jsessionid去内存找session 找不到才创建
HttpSession session = request.getSession();
List<Book> cart = (List<Book>) session.getAttribute("cart");
if(cart==null) {
out.write("对不起!您还没有购买商品!!!");
return ;
}
//遍历购物车中的商品显示
out.write("您购买了如下商品:<br>");
for(Book book : cart) {
out.write(book.getName() + "," + book.getPrice() + "<br>");
}
// 让session立即失效
//session.invalidate();
out.write("<input type='button' value='进入结算中心' />");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询