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
// 获得所有商品
Mapall = DB.getAll();
out.write("本站提供如下商品
");
for(Entrye : 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() + "购买
");
}
}
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();
Listcart = (List ) session.getAttribute("cart");
if(cart==null) {
out.write("对不起!您还没有购买商品!!!");
return ;
}
//遍历购物车中的商品显示
out.write("您购买了如下商品:
");
for(Book book : cart) {
out.write(book.getName() + "," + book.getPrice() + "
");
}
// 让session立即失效
//session.invalidate();
out.write("");
}
建议使用hibernate持久类,这样可以保存对象到集合中,而不是数值,通过struts2标签库,直接访问持久化类