注:在购物大厅点击购买的时候跳转到控制器,在控制器实现添加session的操作在转发到显示页面。问题是刷新显示页面的时候会是购买数量发生变化。解决办法是。在控制器和显示页面之间添加一个控制器,这样在刷新也不会产生变化了。
1.buybook.java
package com.ru.buybook;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.ru.domain.Books;
public class BuyBook extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(“text/html;charset=utf-8″);
PrintWriter out = response.getWriter();
String bookname=new String(request.getParameter(“bookname”).getBytes(“iso-8859-1″),”utf-8″);
String bookid=request.getParameter(“bookid”);
float price=Float.parseFloat(request.getParameter(“price”));
//创建session,将要购买的书放入session
HttpSession session=request.getSession();
//创建数组
HashMap<String,Books> hm=(HashMap)session.getAttribute(“booknames”);
Books book=new Books();
if (hm==null) {
//创建book对象,赋值
hm=new LinkedHashMap<String,Books>();
book.setBookid(bookid);
book.setBookname(bookname);
book.setBooknum(1);
book.setPrice(price);
//将book对象放入hasnmap中
hm.put(bookid,book);
session.setAttribute(“booknames”,hm);
//将session的idfangrucookie中。防止意外关闭浏览器后session失效。
Cookie cookie=new Cookie(“JSESSIONID”,session.getId());
cookie.setMaxAge(3600*24);
response.addCookie(cookie);
} else {
if (hm.containsKey(bookid)) {
book=hm.get(bookid);
book.setBooknum(book.getBooknum()+1);
} else {
book.setBookid(bookid);
book.setBookname(bookname);
book.setBooknum(1);
book.setPrice(price);
//将book对象放入hasnmap中
hm.put(bookid,book);
}
}
//转发到购物车页面
request.getRequestDispatcher(“/ShowCartBooks”).forward(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(“text/html;charset=utf-8″);
PrintWriter out = response.getWriter();
this.doGet(request, response);
}
}
2.showcartlist.java
package com.ru.view;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.ru.domain.Books;
public class ShowCartBooks extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(“text/html;charset=utf-8″);
PrintWriter out = response.getWriter();
//调用session,获得加入购物车的书名
HttpSession session=request.getSession();
HashMap<String,Books> cartbooks=(HashMap)session.getAttribute(“booknames”);
//显示信息
out.println(“您要购买的书如下:<br/>”);
Iterator it=cartbooks.keySet().iterator();
Books book=null;
float total=0;
while (it.hasNext()) {
String key = (String) it.next();
book=cartbooks.get(key);
out.println(book.getBookname()+”   共买了”+book.getBooknum()+”本”+
“   单价:”+book.getPrice()+”您需要支付”+book.getBooknum()*book.getPrice()+”元<br>”);
total+=book.getBooknum()*book.getPrice();
}
out.println(“你一共需要支付:”+total+”元<br/>”);
out.println(“<a href=’/shopingcart/ShowBook’>返回主界面</a>”);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(“text/html;charset=utf-8″);
PrintWriter out = response.getWriter();
this.doGet(request, response);
}
}