1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 购物车的实现(jsp+servlet)

购物车的实现(jsp+servlet)

时间:2024-05-10 15:55:35

相关推荐

购物车的实现(jsp+servlet)

购物车包括货物bean,业务逻辑处理bean(购物车bean),控制器servlet,显示页面mycart.jsp。

货物bean的属性对应了货物的数据库表的一些字段,同时加上了购买的数量。

packagecom.xie.shop.modal;

//货物bean

publicclassCartBean{

privateString id;

privateString goodName;

privatefloatgoodsPrice;

privateintgoodsNum;

privateString buyNum;

publicString getBuyNum() {

returnbuyNum;

}

publicvoidsetBuyNum(String buyNum) {

this.buyNum = buyNum;

}

publicString getId() {

returnid;

}

publicvoidsetId(String id) {

this.id = id;

}

publicString getGoodName() {

returngoodName;

}

publicvoidsetGoodName(String goodName) {

this.goodName = goodName;

}

publicfloatgetGoodsPrice() {

returngoodsPrice;

}

publicvoidsetGoodsPrice(floatgoodsPrice) {

this.goodsPrice = goodsPrice;

}

publicintgetGoodsNum() {

returngoodsNum;

}

publicvoidsetGoodsNum(intgoodsNum) {

this.goodsNum = goodsNum;

}

}

业务逻辑处理bean(购物车bean):

主要的逻辑是:将货物编号和货物实体放入一个HashMap中,HashMap购物车bean的一个属性,同时提供了一个能返回HashMap中value所对应的货物bean

import java.sql.Connection;

import java.sql.PreparedStatement;

//购物车的业务逻辑处理

import java.sql.ResultSet;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

public class MyCartPro {

private Connection ct=null;

private PreparedStatement ps=null;

private ResultSet rs=null;

Map<String , CartBean> cMap=new HashMap<String, CartBean>();

private float totalPrice=0;

public float getTotalPrice() {

return totalPrice;

}

public Map<String, CartBean> getcMap() {

return cMap;

}

/**

* 返回选中准备购买的货物

* @author Administrator:centre

* @param id:传入选中货物的编号

* @return cb:操作成功返回一个CartBean

*/

private CartBean getGood(String id){

CartBean cb=new CartBean();

try {

ct=new ConnGood().getConn();

ps=ct.prepareStatement("select goodsid, goodsname,goodsprice,goodsnum from goods where goodsid=?");

ps.setString(1, id);

rs=ps.executeQuery();

if(rs.next()) {

cb.setId(rs.getLong(1)+"");

cb.setGoodName(rs.getString(2));

cb.setGoodsPrice(rs.getFloat(3));

cb.setGoodsNum(rs.getInt(4));

cb.setBuyNum(1+"");

}

} catch (Exception e) {

System.out.println("取得CartBean失败。");

e.printStackTrace();

}finally{

closeRs();

}

return cb;

}

/**

* 将cb放入到一个map里

* @author Administrator:centre

* @param id:商品id

*/

public void addBook(String id){

if (!cMap.containsKey(id)) {

cMap.put(id, getGood(id));

}else {

cMap.get(id).setBuyNum((Integer.parseInt(cMap.get(id).getBuyNum())+1)+"");

}

}

/**

* 返回购物车容器

* @author Administrator:centre

* @return 返回购物车的容器

*/

public Map<String , CartBean> myCart(){

return getcMap();

}

/**

* 删除选定的商品

* @author Administrator:centre

* @param id:货物的id

* @return:删除成功,返回true,否则返回false

*/

public void deleteBook(String id){

cMap.remove(id);

}

/**

* 删除购物车的所有商品

* @author Administrator:centre

*/

public void deleteAllBooks(){

cMap.clear();

}

/**

* 修改所有商品购买数量

* @author Administrator:centre

* @param id:商品id

* @param num:商品数量

*/

public void updateNum(String[] id,String[] num){

for (int i = 0; i < id.length; i++) {

if (cMap.containsKey(id[i])) {

if (num[i].equals("0")||num[i].equals("")) {

cMap.remove(id[i]);

}else {

cMap.get(id[i]).setBuyNum(num[i]);

}

}

}

}

/**

* 返回所有购买的货物

* @author Administrator:centre

* @return:无返回值

*/

public List<CartBean> showMyCart(){

List<CartBean> al=new ArrayList<CartBean>();

Iterator<String> it=cMap.keySet().iterator();

totalPrice=0;

while (it.hasNext()) {

CartBean cb=cMap.get(it.next());

totalPrice+=Integer.parseInt(cb.getBuyNum())*cb.getGoodsPrice();

al.add(cb);

}

return al;

}

/**

* @author Administrator:centre

* 关闭相关的数据库资源

*/

private void closeRs(){

try {

if (rs!=null) {

rs.close();

rs=null;

}

if (ps!=null) {

ps.close();

ps=null;

}

if (ct!=null) {

ct.close();

ct=null;

}

} catch (Exception e) {

System.out.println("关闭资源失败。");

e.printStackTrace();

}

}

}

控制器servlet:

如何让每个IE进程都只有唯一的一个购物车呢?我用了session。

importjava.io.IOException;

importjava.util.List;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importcom.xie.shop.modal.CartBean;

importcom.xie.shop.modal.MyCartPro;

publicclassMyCartServletextendsHttpServlet {

/**

* The doGet method of the servlet. <br>

*

* This method is called when a form has its tag value method equals to get.

*

*@paramrequest the request send by the client to the server

*@paramresponse the response send by the server to the client

*@throwsServletException if an error occurred

*@throwsIOException if an error occurred

*/

publicvoiddoGet(HttpServletRequest request, HttpServletResponse response)

throwsServletException, IOException {

String cartop=request.getParameter("cartop");

if(cartop.equals("add")) {

String id=request.getParameter("id");

String pageNow=request.getParameter("pageNow");

MyCartPro mcp=(MyCartPro)request.getSession().getAttribute("mycart");

if(mcp==null) {

//第一次购物,创建一个购物车,同时加入session

mcp=newMyCartPro();

request.getSession().setAttribute("mycart", mcp);

}

if(id!=null) {

mcp.addBook(id);

}

List<CartBean> al=mcp.showMyCart();

request.setAttribute("alist", al);

request.setAttribute("pageNow", pageNow);

request.getRequestDispatcher("jsps/mycart.jsp").forward(request, response);

}elseif(cartop.equals("delete")) {

MyCartPro mcp=(MyCartPro)request.getSession().getAttribute("mycart");

String id=request.getParameter("id");

String pageNow=request.getParameter("pageNow");

mcp.deleteBook(id);

List<CartBean> al=mcp.showMyCart();

request.setAttribute("alist", al);

request.setAttribute("pageNow", pageNow);

request.getRequestDispatcher("jsps/mycart.jsp").forward(request, response);

}elseif(cartop.equals("deleteall")) {

String pageNow=request.getParameter("pageNow");

MyCartPro mcp=(MyCartPro)request.getSession().getAttribute("mycart");

if(mcp==null) {

request.setAttribute("pageNow", pageNow);

request.getRequestDispatcher("index.jsp").forward(request, response);

}else{

mcp.deleteAllBooks();

request.setAttribute("pageNow", pageNow);

request.getRequestDispatcher("index.jsp").forward(request, response);

}

}elseif(cartop.equals("chagenum")) {

String pageNow=request.getParameter("pageNow");

String[] id=request.getParameterValues("goodId");

String[] newNum=request.getParameterValues("newNum");

/*for (int i = 0; i < id.length; i++) {

System.out.println("id=="+id[i]+" "+"num=="+newNum[i]);

}*/

MyCartPro mcp=(MyCartPro)request.getSession().getAttribute("mycart");

if(mcp==null) {

request.getRequestDispatcher("jsps/mycart.jsp").forward(request, response);

}else{

mcp.updateNum(id, newNum);

List<CartBean> al=mcp.showMyCart();

request.setAttribute("alist", al);

request.setAttribute("pageNow", pageNow);

request.getRequestDispatcher("jsps/mycart.jsp").forward(request, response);

}

}

}

/**

* The doPost method of the servlet. <br>

*

* This method is called when a form has its tag value method equals to post.

*

*@paramrequest the request send by the client to the server

*@paramresponse the response send by the server to the client

*@throwsServletException if an error occurred

*@throwsIOException if an error occurred

*/

publicvoiddoPost(HttpServletRequest request, HttpServletResponse response)

throwsServletException, IOException {

this.doGet(request, response);

}

}

显示页面mycart.jsp

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。