servlet session实现简单购物车



servlet session实现简单购物车。

简单购物车的实现 ListServlet BuyServlet ListCartServlet
ListServlet.java
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=’进入结算中心’ />”);
}