购物界面代码:
//productList
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
HttpSession hs=request.getSession();
String uid=(String) hs.getAttribute("uid");
if(uid==null){
response.sendRedirect("index.jsp");
}
// 建立一个List来客串数据库里的数据
List<Book> blist=new ArrayList<Book>();
Book b1=new Book(1,"三国",30);
Book b2=new Book(2,"水浒",40);
Book b3=new Book(3,"红楼",50);
blist.add(b1);
blist.add(b2);
blist.add(b3);
response.setContentType("text/html;charset=utf-8");
PrintWriter pw=response.getWriter();
pw.println("<table>");
for(Book b:blist){
pw.println("<tr>");
pw.println("<td>"+b.getId()+"</td>");
pw.println("<td>"+b.getName()+"</td>");
pw.println("<td>"+b.getPrice()+"</td>");
String path=response.encodeURL("add.do?id="+b.getId()+"&name="+b.getName()+"&price="+b.getPrice());
// String path=response.encodeURL("<a href='add.do'>购买</a>");
// String path=response.encodeURL("add.do?id=1&name=三国&price=50");
System.out.println(path);
pw.println("<td><a href='"+path+"'>购买</a></td>");
pw.println("</tr>");
}
pw.println("</table>");
pw.close();
}
//Book 界面
package com.gouwu;
public class Book {
private int id;
private String name;
private double price;
public Book(int id, String name, double price) {
super();
this.id = id;
this.name = name;
this.price = price;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + id;
result = prime * result + ((name == null) ? 0 : name.hashCode());
long temp;
temp = Double.doubleToLongBits(price);
result = prime * result + (int) (temp ^ (temp >>> 32));
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Book other = (Book) obj;
if (id != other.id)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (Double.doubleToLongBits(price) != Double.doubleToLongBits(other.price))
return false;
return true;
}
}
//ADD界面
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
HttpSession hs=request.getSession();
// 让session立即超时失效
// hs.invalidate();
try{
String uid=(String) hs.getAttribute("uid");
System.out.println(uid);
if(uid==null){
response.sendRedirect("index.jsp");
return;
}
Map<Book,Integer> cartmap=(Map<Book, Integer>) hs.getAttribute("cartmap");
// 如果carmap是null,说明用户首次来购物
if(cartmap==null){
cartmap=new HashMap<Book,Integer>();
}
// 建立一个书籍对象来存储传递过来的要购买的书籍属性参数
int id=Integer.parseInt(request.getParameter("id"));
String name=request.getParameter("name");
double price=Double.parseDouble(request.getParameter("price"));
Book b=new Book(id,name,price);
// 把书籍填到cartmap里
// 添加之前先判断是否有同类型书籍存在
Integer mount=cartmap.get(b);
if(mount==null){
cartmap.put(b, 1);
}else{
cartmap.put(b, ++mount);
}
// 把存有商品的购物车集合carmap加入到session中
hs.setAttribute("cartmap", cartmap);
// 跳转页面到购物车页面
String path=response.encodeURL("cartview");
response.sendRedirect(path);
}catch(IllegalStateException e){
e.printStackTrace();
response.sendRedirect("index.jsp");
}
}
//CartView界面
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
HttpSession hs=request.getSession();
String uid=(String) hs.getAttribute("uid");
if(uid==null){
response.sendRedirect("index.jsp");
return;
}
response.setContentType("text/html;charset=utf-8");
PrintWriter pw=response.getWriter();
Map<Book,Integer> cartmap=(Map<Book, Integer>) hs.getAttribute("cartmap");
Set<Entry<Book,Integer>> es=cartmap.entrySet();
pw.println("<table>");
for(Entry<Book,Integer> en:es){
Book b=en.getKey();
int mount=en.getValue();
pw.println("<tr>");
pw.println("<td>"+b.getId()+"</td>");
pw.println("<td>"+b.getName()+"</td>");
pw.println("<td>"+b.getPrice()+"</td>");
pw.println("<td>"+mount+"</td>");
String path=response.encodeURL("assure.do?id="+b.getId()+"&name="+b.getName()+"&price="+b.getPrice()+"&mount="+mount);
pw.println("<td><a href='"+path+"'>结算确认</a></td>");
pw.println("</tr>");
}
pw.println("</table>");
String path=response.encodeURL("ProductList");
pw.println("<a href='"+path+"'>继续购买</a>");
pw.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
//Assure界面
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
HttpSession hs=request.getSession();
String uid=(String) hs.getAttribute("uid");
if(uid==null){
response.sendRedirect("index.jsp");
return;
}
response.setContentType("text/html;charset=utf-8");
PrintWriter pw=response.getWriter();
// 获得要结算的商品信息
int id=Integer.parseInt(request.getParameter("id"));
String name=request.getParameter("name");
double price=Double.parseDouble(request.getParameter("price"));
int mount=Integer.parseInt(request.getParameter("mount"));
pw.println("要结算的商品信息如下:");
pw.println("<table>");
pw.println("<tr>");
pw.println("<th>商品编号</td>");
pw.println("<td>商品名称</td>");
pw.println("<td>商品价格</td>");
pw.println("<td>商品数量</td>");
pw.println("<td>总价格</td>");
pw.println("</tr>");
pw.println("<tr>");
pw.println("<td>"+id+"</td>");
pw.println("<td>"+name+"</td>");
pw.println("<td>"+price+"</td>");
pw.println("<td>"+mount+"</td>");
pw.println("<td>"+(mount*price)+"</td>");
pw.println("</tr>");
pw.println("</table>");
String path=response.encodeURL("deal.do?id="+id+"&name="+name+"&price="+price+"&mount="+mount);
pw.println("<a href='"+path+"'>结算</a>");
pw.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
//结算界面
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
// 结算操作本质上是将已付款产品从购物车中删除
HttpSession hs=request.getSession();
String uid=(String) hs.getAttribute("uid");
if(uid==null){
response.sendRedirect("index.jsp");
return;
}
Map<Book,Integer> cartmap=(Map<Book, Integer>) hs.getAttribute("cartmap");
// 根据传进参数构建要删除对象作为键
int id=Integer.parseInt(request.getParameter("id"));
String name=request.getParameter("name");
double price=Double.parseDouble(request.getParameter("price"));
Book b=new Book(id,name,price);
// 以数量作为值
int mount=Integer.parseInt(request.getParameter("mount"));
// 从购物车中移除该键值对
cartmap.remove(b, mount);
// 把更新后的购物车提供给session,这样重新进入购车页面看到的数据是最新的
hs.setAttribute("cartmap", cartmap);
response.sendRedirect("cartview");
}