package me.ilt.Servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.reflect.Method;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import me.ilt.Bean.addressBean;
import me.ilt.Bean.goodsBean;
import me.ilt.Bean.orderBean;
import me.ilt.Bean.orderItemBean;
import me.ilt.Bean.shoppingCart;
import me.ilt.Dao.addressDao;
import me.ilt.Dao.goodsDao;
import me.ilt.Dao.orderDao;
import me.ilt.Dao.orderItemDao;
import me.ilt.Dao.shoppingCartDao;
import me.ilt.Dao.usersDao;
public class cartServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String MethodName = request.getServletPath();
MethodName = MethodName.substring(1, MethodName.length() - 5);
System.out.println("MethodName:"+MethodName);
try {
Method method = getClass().getDeclaredMethod(MethodName,
HttpServletRequest.class, HttpServletResponse.class);
method.invoke(this, request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
public void index(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//獲取購物車
String username = (String)request.getSession().getAttribute("username"); //獲取登錄的用戶名
List<goodsBean> goodsList = new ArrayList<goodsBean>(); //購物車集合
if(username==null){
//用戶沒有登錄
//獲取購物車
HashMap<String, goodsBean> gwc = (HashMap)request.getSession().getAttribute("gwc");
Set keyList = gwc.keySet();
Iterator it = keyList.iterator();
while(it.hasNext()){
String hid = (String)it.next();
goodsBean hgoods = gwc.get(hid);
int num = hgoods.getNum(); //獲取這個商品的數量
goodsBean hgoods2 = goodsDao.gwcGoodsIdSel(Integer.parseInt(hid)); //從數據庫查找
hgoods2.setNum(num);
goodsList.add(hgoods2);
}
}else{
//用戶已經登錄
int userId = usersDao.nameIsId(username);
//獲取購物車中所有購物項目
List<shoppingCart> list = shoppingCartDao.selList(userId);
for(shoppingCart s: list){
goodsBean hgoods2 = goodsDao.gwcGoodsIdSel(s.getGoodsId()); //從數據庫查找
hgoods2.setNum(s.getNum());
goodsList.add(hgoods2);
}
}
request.setAttribute("gwcGoodsList", goodsList);
request.getRequestDispatcher("cart.jsp").forward(request, response); //轉發到jsp
}
public void tijiao(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HashMap<String, goodsBean> gwc = (HashMap)request.getSession().getAttribute("gwc");
//獲取用戶名
String username = (String)request.getSession().getAttribute("username");
String id = request.getParameter("cartItemIds");
int userId = usersDao.nameIsId(username);
String [] ids = id.split(",");
//獲取購物車
List<goodsBean> goodsList = new ArrayList<goodsBean>();
DecimalFormat df = new DecimalFormat("#.00"); //防止價格出現異常
double ze = 0; //總額
for(String j : ids){
//根據 gwc集合判斷購物車中的購物項是在session中 還是在數據庫中
int num = 0;
if(gwc.size()==0){
//購物項存放在數據庫中
shoppingCart s = shoppingCartDao.goodsIdSel(userId, Integer.parseInt(j));
num = s.getNum();
}else{
//購物項存放在session中
goodsBean hgoods = gwc.get(j);
num = hgoods.getNum(); //獲取這個商品的數量
}
goodsBean hgoods2 = goodsDao.gwcGoodsIdSel(Integer.parseInt(j)); //從數據庫查找
hgoods2.setNum(num);
double hj = num*hgoods2.getPrice();
ze +=hj;
hgoods2.setTotal(Double.parseDouble(df.format(hj)));
System.out.println("處理之前總額:"+hj+"處理之後:"+df.format(hj));
goodsList.add(hgoods2);
if(gwc.size()==0){
shoppingCartDao.del(userId, Integer.parseInt(j));
}else{
gwc.remove(j);//刪除商品 購物車
}
}
//打印購物車
System.out.println("打印訂單購物車");
for (int i = 0; i < goodsList.size(); i++) {
goodsBean gb = goodsList.get(i);
System.out.println("ID="+gb.getId()+",name="+gb.getName()+",proce="+gb.getPrice()+",proPic="+gb.getProPic()+",num="+gb.getNum());
}
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//插入一條訂單
String orderId = sjs(); //生成訂單號
orderBean or = new orderBean(orderId, userId, Double.parseDouble(df.format(ze)), 1, "", sdf.format(d), 1);
orderDao.add(or);
//插入到商品訂單表中
for(goodsBean g : goodsList){
orderItemBean o = new orderItemBean(g.getId(), g.getName(), g.getProPic(), g.getPrice(), g.getNum(), g.getTotal(), orderId);
orderItemDao.add(o);
}
//根據用戶ID獲取地址信息
List<addressBean> addressList= addressDao.selAll(userId);
request.setAttribute("addressList", addressList);
request.setAttribute("addressId", orderId);
request.setAttribute("ze", df.format(ze));
request.setAttribute("gwcGoodsList", goodsList);
request.getRequestDispatcher("order.jsp").forward(request, response); //轉發到jsp
}
/**
* 立即購買
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
public void buy(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
List<goodsBean> goodsList = new ArrayList<goodsBean>();
DecimalFormat df = new DecimalFormat("#.00"); //防止價格出現異常
System.out.println("進入了立即購買");
int goodsId = Integer.parseInt(request.getParameter("id"));
int num = Integer.parseInt(request.getParameter("num"));
String username = (String)request.getSession().getAttribute("username");
goodsBean hgoods2 = goodsDao.gwcGoodsIdSel(goodsId); //從數據庫查找
hgoods2.setNum(num);
double hj = Double.parseDouble(df.format(num*hgoods2.getPrice()));
hgoods2.setTotal(hj); //格式化並放入
goodsList.add(hgoods2);
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//插入一條訂單
String orderId = sjs(); //生成訂單號
int userId = usersDao.nameIsId(username);
orderBean or = new orderBean(orderId, userId, hj, 1, "", sdf.format(d), 1);
orderDao.add(or);
//插入到商品訂單表中
for(goodsBean g : goodsList){
orderItemBean o = new orderItemBean(g.getId(), g.getName(), g.getProPic(), g.getPrice(), g.getNum(), g.getTotal(), orderId);
orderItemDao.add(o);
}
//根據用戶ID獲取地址信息
List<addressBean> addressList= addressDao.selAll(userId);
request.setAttribute("addressList", addressList);
request.setAttribute("addressId", orderId);
request.setAttribute("ze", hj);
request.setAttribute("gwcGoodsList", goodsList);
request.getRequestDispatcher("order.jsp").forward(request, response); //轉發到jsp
}
/**
* 生成訂單號 當前時間加上兩位隨機數
* @return
*/
public static String sjs() {
String sjs = "";
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
int x=(int)(Math.random()*100);
if(x<10){
x=x+9;
}else if(x==100){
x--;
}
sjs=sdf.format(d)+x;
return sjs;
}
}
今天完成了這段購物車 carServlet.java對於購物車