`
liwenshui322
  • 浏览: 518939 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

XML购物车的实现(测试版)

阅读更多

序言:

       这篇文章会比较长,真正想了解的就得泡上一杯茶,慢慢阅读了!呵呵...

 

     1.添加商品页面  add_goods.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
 <form action="cartAddGoodsRequest.do" method="post">
 购物(添加商品)
 <br>
 <table>
 <tr>
 <td align="right" style="width">商品ID:</td>
 <td><input type="text" name="goodsId"></td>
 </tr>
 <tr>
 <td align="right">商品所属分类:</td>
 <td><input type="text" name="goodsCatalog">(填数字:0 1 2)</td>
 </tr>
 <tr>
 <td align="right">商品价格:</td>
 <td><input type="text" name="goodsPrice"></td>
 </tr>
 <tr>
 <td align="right">购买件数:</td>
 <td><input type="text" name="purchaseNumber"></td>
 </tr>
 <tr>
 <td align="right">所属店主昵称:</td>
 <td><input type="text" name="shopkeeper" ></td>
 </tr>
 <tr>
 <td align="right">所属店铺名称:</td>
 <td><input type="text" name="shop"></td>
 </tr>

 </table>
 <input type="submit" value="提交" align="center">
 </form>

</body>
</html>
 

说明:就是填写一些商品信息,后台是用struts处理的。至于struts的配置问题就不描述了。

 

2.添加商品请求由下面这个类进行处理:    CartAddGoodsRequest

package cn.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.dom4j.Document;
import org.dom4j.io.SAXReader;

import cn.struts.formbean.PurchaseGoodsBean;
/**
 * 购物车添加商品请求处理类
 * @author LI
 *
 */
public class CartAddGoodsRequest extends Action {
	
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		System.out.println("购物车添加商品处理类");
		//参数对象(商品属性)
		PurchaseGoodsBean pgb=(PurchaseGoodsBean)form;
		System.out.println("id----"+pgb.getGoodsId()+"---shop---"+pgb.getShop());
		//获得session对象
		javax.servlet.http.HttpSession session=request.getSession();
		//获得购物车对象
		String cartString=(String)session.getAttribute("cart");
		Document cartXml=null;
		if(cartString!=null)
		 cartXml = org.dom4j.DocumentHelper.parseText(cartString);
		
		//添加商品
		Document cart=cn.netjava.utils.XMLCart.getInstance()
		.addGoods(pgb, cartXml);
		//购物车放入session中存放
		session.setAttribute("cart", cart.asXML());
		return null;
	}
}

 

说明:1.首先从session中获得购物车对象,因为session里面存放的购物车是字符串形式(为什么,后面会讲),需要转换成Document对象 。

         2.添加商品处理,这里调用的是一个叫做XMLCart类的一个addGoods方法。稍等,下面我们就来看这个类!

         3.将添加了新商品的购物车重新以字符串形式保存在session当中。

 

 

3.购物车操作类(往购物车里面添加商品,修改商品数量,删除商品,清空购物车):XMLCart

package cn.netjava.utils;

import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import cn.struts.formbean.PurchaseGoodsBean;

/**
 * XML实现的购物车
 * @author LI
 *
 */
public class XMLCart {
	
	//私有构造器
	private XMLCart(){};
	//单实例
	private static XMLCart instance=null;
	//获得该实例
	public static synchronized XMLCart getInstance()
	{
		//如果还没有被初始化
		if (instance==null){
			instance=new XMLCart();
		}
		return instance;
	}
	
	//创建购物车
	public Document createCart(){
		//使用DocumentHelper类创建一个文档实例,购物车对象
		Document cart=DocumentHelper.createDocument();
		//创建根元素cart
		org.dom4j.Element cartRoot=cart.addElement("cart");
		//给根节点加子节点,代表购物车总金额
		Element totalMoney=cartRoot.addElement("totalMoney");
		totalMoney.setText("0");
		//给根节点加子节点,代表店主昵称
		@SuppressWarnings("unused")
		Element shopkeeper =cartRoot.addElement("shopkeeper");
		//给根节点加子节点,代表店铺名称
		@SuppressWarnings("unused")
		Element shop =cartRoot.addElement("shop");
		//商品列表
		@SuppressWarnings("unused")
		Element goodsList=cartRoot.addElement("goodsList");
		//返回购物车对象
		return cart;
	}
	
	/**
	 * 清空购物车
	 * @param cart:购物车对象
	 */
	public Document emptyCart(Document cart){
		//获得根节点
		Element root=cart.getRootElement();
		//清空总资金
		Element totalMoneyNode=root.element("totalMoney");
		totalMoneyNode.setText(0+"");
		//清空店铺和店主
		Element shopNode=root.element("shop");
		shopNode.setText("");
		Element shopkeeperNode=root.element("shopkeeper");
		shopkeeperNode.setText("");
		
		//获得商品列表节点
		Element goodsListNode=root.element("goodsList");
		//遍历商品列表
		java.util.List<Element>goodList=goodsListNode.elements();
		for(int i=0;i<goodList.size();i++){
			//得到商品节点
			Element goodNode=goodList.get(i);
			goodsListNode.remove(goodNode);
		}
		return cart;
	}
	/**
	 * 添加商品
	 * @param pgb:要添加的商品
	 * @param cart:购物车对象
	 */
	public Document addGoods(PurchaseGoodsBean pgb,Document cart){
		//如果购物车为NULL
		if(cart==null){
			//新建购物车对象
			cart=createCart();
		}
		if(pgb==null){
			return cart;
		}
		//获得根节点
		Element root=cart.getRootElement();
		//判断是否为同一店铺的商品
		boolean  sameShop=isSameShop(pgb,cart);
		//如果为不同店铺
		if(!sameShop){
			//清空购物车
		cart=emptyCart(cart);
		//设置店主昵称
		Element shopkeeperNode=root.element("shopkeeper");
		shopkeeperNode.setText(pgb.getShopkeeper());
		//设置店铺名称
		Element shopNode=root.element("shop");
		shopNode.setText(pgb.getShop());
		}
		//判断这件商品是否已在购物车里面
		boolean exist=isGoodsExist(pgb.getGoodsId(),cart);
		//如果已在
		if(exist){
			return cart;
		}else{
			
			//添加商品
			Element goodsListNode=root.element("goodsList");
			Element goodsNode=goodsListNode.addElement("goods");
			goodsNode.addElement("goodsId").setText(pgb.getGoodsId());
			goodsNode.addElement("goodsNumber").setText(pgb.getPurchaseNumber()+"");
			goodsNode.addElement("goodsCatalog").setText(pgb.getGoodsCatalog()+"");
			goodsNode.addElement("goodsPrice").setText(pgb.getGoodsPrice()+"");
			
			//操作数据库,根据商品ID获得商品的图片,名称,价格。
			
			
			//这里人工生成
			goodsNode.addElement("goodsPicture").setText("image/1.jpg");
			goodsNode.addElement("goodsName").setText("精致MP3");
			//设置商品积分
			int goodsIntegral=(int) pgb.getGoodsPrice()*pgb.getPurchaseNumber();
			goodsNode.addElement("goodsIntegral").setText(goodsIntegral+"");
			//设置每样商品资金小计
			double goodsTotalMoney=pgb.getGoodsPrice()*pgb.getPurchaseNumber();
			goodsNode.addElement("goodsSubtotal").setText(goodsTotalMoney+"");
			//获得当前总资金
			double totalMoney=Double.parseDouble
			(root.element("totalMoney").getText());
			//修改总金额
			double modifyTotalMoney=goodsTotalMoney+totalMoney;
			root.element("totalMoney").setText(modifyTotalMoney+"");
		}
		System.out.println(cart.asXML());
		return cart;
	}
	
	/**
	 * 购买的商品是否属于同一店铺
	 * @param pgb:购买的商品属性
	 * @param cart:购物车
	 * @return:TRUE:属于同一店铺 FALSE:不属于同一店铺
	 */
	public boolean isSameShop(PurchaseGoodsBean pgb,Document cart){
		//获得根节点
		Element root=cart.getRootElement();
		//获得店主节点
		Element shopkeeperNode=root.element("shopkeeper");
		String shopkeeper=shopkeeperNode.getText();
		//如果没有店主
		if(shopkeeper==""){
			System.out.println("还没有店铺");
			//设置店主昵称
			shopkeeperNode.setText(pgb.getShopkeeper());
			//设置店铺名称
			Element shopNode=root.element("shop");
			shopNode.setText(pgb.getShop());
			return true;
		}else{
			System.out.println("   "+shopkeeper+"   "+pgb.getShopkeeper());
			//如果是同一个 店铺
			if(shopkeeper.equals(pgb.getShopkeeper())){
				return true;
			}
		}
		return false;
	}
	
	/**
	 * 修改商品数量
	 * @param pgb:商品对象
	 * @param cart:购物车对象
	 */
	public Document modifyPurchaseNumber(PurchaseGoodsBean pgb,Document cart){
		//获得根节点
		Element root=cart.getRootElement();
		//获得要修改的商品节点
		Element goodNode=getNode(pgb.getGoodsId(),cart);
	if(goodNode!=null){
		//得到商品數量迭代器
		Iterator goodsNumberIter=goodNode.elementIterator("goodsNumber");
		
		int goodsNumber=0;
		//获得商品数量
		if(goodsNumberIter.hasNext()){
			Element goodsNumberNode=(Element)goodsNumberIter.next();
			goodsNumber=Integer.parseInt(goodsNumberNode.getText());
			//修改商品的數量
			goodsNumberNode.setText(pgb.getPurchaseNumber()+"");
		}
		
		//商品数量的差量
		int goodsSub=pgb.getPurchaseNumber()-goodsNumber;
		
		//商品價格迭代器
		Iterator goodsPriceIter=goodNode.elementIterator("goodsPrice");
		double goodsPrice=0;
		//獲得商品價格
		if(goodsPriceIter.hasNext()){
			Element goodsPriceNode=(Element)goodsPriceIter.next();
			goodsPrice=Double.parseDouble(goodsPriceNode.getText());
		}
		//商品差价
		double goodsMoney=goodsPrice*goodsSub;
		//获得当前总资金
		double totalMoney=Double.parseDouble
		(root.element("totalMoney").getText());
		//修改总金额
		double modifyTotalMoney=goodsMoney+totalMoney;
		root.element("totalMoney").setText(modifyTotalMoney+"");
		//商品小计迭代器
		Iterator goodsSubtotalIter=goodNode.elementIterator("goodsSubtotal");
		Element goodsSubtotalNode=(Element)goodsSubtotalIter.next();
		//修改小计
		double goodsSubtotal=Double.parseDouble(goodsSubtotalNode.getText());
		double modifySubtotal=goodsSubtotal+goodsMoney;
		goodsSubtotalNode.setText(modifySubtotal+"");
		//修改获得积分
		Iterator goodsIntegralIter=goodNode.elementIterator("goodsIntegral");
		Element goodsIntegralNode=(Element)goodsIntegralIter.next();
		int goodsIntegral=(int)modifySubtotal;
		goodsIntegralNode.setText(goodsIntegral+"");
	}
	return cart;
	}

	/**
	 * 获得指定ID商品的节点
	 * @param goodsId:商品ID
	 * @param cart:购物车对象
	 * @return:指定ID的商品节点 NULL:没有这个节点
	 */
	@SuppressWarnings("unchecked")
	public Element getNode(String goodsId,Document cart){
		//获得商品列表节点
		List goodsList=	cart.selectNodes("//goodsList/goods");
		//迭代器
		Iterator goodsIter=goodsList.iterator();
		while(goodsIter.hasNext()){
			Element goods=(Element)goodsIter.next();
			//得到商品ID迭代器
			Iterator goodsIdIter=goods.elementIterator("goodsId");
			while(goodsIdIter.hasNext()){
				Element goodsIdNode=(Element)goodsIdIter.next();
				if(goodsIdNode.getText().equals(goodsId))
					return goods;
			}
		}
		return null;
	}
	
	/**
	 * 删除指定ID的商品
	 * @param goodsId:商品ID
	 * @param cart:购物车对象
	 */
	public Document deleteGoods(String goodsId,Document cart){
		//获得根节点
		Element root=cart.getRootElement();
		//获得商品列表节点
		Element goodsListNode=root.element("goodsList");
		//获得要删除的节点
		Element goodNode=getNode(goodsId,cart);
		if(goodNode==null){
			return cart;
		}
		//获得小计
		Iterator goodsSubtotalIter=goodNode.elementIterator("goodsSubtotal");
		Element goodsSubtotalNode=(Element)goodsSubtotalIter.next();
		double goodsSubtotal=Double.parseDouble(goodsSubtotalNode.getText());
		//修改购物车总金额
		double totalMoney=Double.parseDouble
		(root.element("totalMoney").getText());
		double modifyTotalMoney=totalMoney-goodsSubtotal;
		root.element("totalMoney").setText(modifyTotalMoney+"");
		//删除节点
		goodsListNode.remove(goodNode);
		
		System.out.println(cart.asXML());
		return cart;
	}
	
	/**
	 * 判断商品是否已经存在
	 * @param goodsId:商品ID
	 * @param cart:购物车对象
	 * @return TRUE:存在 FALSE:不存在
	 */
	@SuppressWarnings("unchecked")
	public boolean isGoodsExist(String goodsId,Document cart){
		//获得根节点
		Element root=cart.getRootElement();
		//获得店主节点
		Element shopkeeperNode=root.element("shopkeeper");
		String shopkeeper=shopkeeperNode.getText();
		//如果没有店主
		if(shopkeeper==""){
			System.out.println("还没有店铺");
			
			return false;
		}
		
		//获得商品列表节点
		Element goodsListNode=root.element("goodsList");
		//遍历商品列表
		java.util.List<Element>goodList=goodsListNode.elements();
		for(int i=0;i<goodList.size();i++){
			//得到商品节点
			Element goodNode=goodList.get(i);
			//得到商品ID
			Iterator goodsIdIter=goodNode.elementIterator("goodsId");
			Element goodsIdNode=(Element)goodsIdIter.next();
			String goodsID=goodsIdNode.getText();
			//如果存在这样的商品
			if(goodsId.equals(goodsID)){
				return true;
			}
		}
		return false;
	}
}
 

 说明:1.首先你得有dom4j这个解析XML文档的东东,如果感兴趣,到我的附件里面去下载

 

          2.里面有的地方可能要操作数据库,比如根据商品的ID获得商品的图片,名称,价格等等,我这里就手工模拟了!

 

 

4.展示购物车商品信息的jsp页面  show_goods.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@page import="org.dom4j.Document"%><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!--引入外部js文件-->
	<script src="js/jquery-1.3.2.min.js" type="text/javascript"></script>
	<script src="js/detailInfo.js" type="text/javascript"></script>
	
	<style TYPE="text/css">
<!--
A:link{text-decoration:none}
A:visited{text-decoration:none}
A:hover {color: #ff0000}
 -->
</style>

<title>Insert title here</title>
</head>
<body>
<c:out value="商品列表展示" /><br>   
<x:parse varDom="cartDoc">
${cart}
</x:parse>
<c:out value="总金额"/>
     <x:out select="$cartDoc/cart/totalMoney"/><br>  
     <c:out value="店铺:"/>
     <x:out select="$cartDoc/cart/shop"/><br>  
     <c:out value="店主昵称:"/>
     <x:out select="$cartDoc/cart/shopkeeper"/><br>   
     
     <table border="1">
     <tr>
     <td>商品图片</td>
     <td>商品名称</td>
     <td>商品ID</td>
     <td>商品购买数量</td>
     <td>商品所属分类</td>
     <td>商品价格</td>
     <td>可获得积分</td>
     <td>小计</td>
     <td>操作</td>
     </tr>
     <x:forEach select="$cartDoc//goods" varStatus="status">
     <tr>
     <td>
     <img alt="" src="<x:out select="goodsPicture"/>">
     </td>
     <td><x:out select="goodsName"/></td>
     <td><x:out select="goodsId"/></td>
     <td align="center">
     <a href="" class="subNumber" id="<x:out select="goodsId"/>"
     name="<x:out select="goodsNumber"/>">-</a>
     
     <input id="goodsNumber" size="2" type="text" 
     name="<x:out select="goodsId"/>" value="<x:out select="goodsNumber"/>">
     
     <a href="" class="addNumber" id="<x:out select="goodsId"/>" 
     name="<x:out select="goodsNumber"/>">+</a>
     </td>
     <td align="center"><x:out select="goodsCatalog"/></td>
     <td><x:out select="goodsPrice"/></td>
     <td><x:out select="goodsIntegral"/></td>
     <td><x:out select="goodsSubtotal"/></td>
     <td>
     <a id="<x:out select="goodsId"/>" href=""onclick="" name="delete">删除</a>
     </td>
     </tr>
     </x:forEach>
     
     </table>
     
     
     
     
     
</body>
</html>
 

说明:1. 这个页面用到了JSTL(用来展示商品信息)与jquery(用来发送异步请求,比如删除商品,修改商品数量)

想下载JSTL与jquery的 到附件下载

     2.看看这段代码:<x:parse varDom="cartDoc"> ${cart} </x:parse>   ${cart}:是从session当中取出购物车对象,在<x:parse>当中只能够为xml文件的字符串形式,这就是我为什么把购物车以字符串形式保存在session当中。

     3.jquery处理异步请求,请参考下面的js文件

 

 

5.jquery AJAX发送异步请求(修改商品数量,删除商品)  detailInfo.js

$(document).ready(function() {
	// 删除商品请求处理
$("a[name='delete']").click(
	function(){
		alert($(this).attr("id"));
		//AJAX请求
		$.ajax({
			type:"post",
			url:"DeleteCartGoodsRequest.do",
			data:"goodsId="+$(this).attr("id"),
			success:function(msg){
			alert(msg);
		}
		});
	}
);

//商品数量加一处理
$("a[class='addNumber']").click(
		function(){
			//获得商品数量
			var goodsNumber=$(this).attr("name")*1+1;
			//获得商品ID
			var goodsId=$(this).attr("id");
			alert(goodsNumber+"---id---"+goodsId);
			//AJAX请求
			$.ajax({
				type:"post",
				url:"ModifyCartGoodsRequest.do",
				data:"purchaseNumber="+goodsNumber+"&goodsId="+goodsId,
				success:function(msg){
				alert(msg);
			}
			});
		}
);

//商品数量减一处理
$("a[class='subNumber']").click(
		function(){
			//获得商品数量
			var goodsNumber=$(this).attr("name")*1-1;
			//获得商品ID
			var goodsId=$(this).attr("id");
			alert(goodsNumber+"---id---"+goodsId);
			//AJAX请求
			$.ajax({
				type:"post",
				url:"ModifyCartGoodsRequest.do",
				data:"purchaseNumber="+goodsNumber+"&goodsId="+goodsId,
				success:function(msg){
				alert(msg);
			}
			});
		}
);

//直接修改商品数量
$("input[id='goodsNumber']").change(
		function(){
			//获得商品数量
			var goodsNumber=$(this).attr("value");
			//获得商品的ID
			var goodsId=$(this).attr("name");
			alert(goodsNumber+"  "+goodsId);
			//AJAX请求
			$.ajax({
				type:"post",
				url:"ModifyCartGoodsRequest.do",
				data:"purchaseNumber="+goodsNumber+"&goodsId="+goodsId
			});
		}
);
});
 

 

6.修改商品购买数量java后台处理类: ModifyCartGoodsRequest

package cn.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.dom4j.Document;

import cn.struts.formbean.PurchaseGoodsBean;
/**
 * 修改购物车某件商品数量处理类
 * @author LI
 *
 */
public class ModifyCartGoodsRequest extends Action {

	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		//参数类
		PurchaseGoodsBean pgb=(PurchaseGoodsBean)form;
		//获得修改后的商品数量与商品ID
		int purchaseNumber=pgb.getPurchaseNumber();
		String goodsId=pgb.getGoodsId();
		//调试信息
		System.out.println("修改后的商品数量为----->"
				+purchaseNumber+"goodsId--->"+goodsId);
		
		//获得session对象
		javax.servlet.http.HttpSession session=request.getSession();
		//获得购物车对象
		String cartString=(String)session.getAttribute("cart");
		Document cartXml=null;
		if(cartString!=null)
		 cartXml = org.dom4j.DocumentHelper.parseText(cartString);
		
		//修改商品
		Document cart=cn.netjava.utils.XMLCart.getInstance()
		.modifyPurchaseNumber(pgb, cartXml);
		//购物车放入session中存放
		session.setAttribute("cart", cart.asXML());
		return mapping.findForward("modifySucc");
	}
}
 

这个就不必多做说明了,下面一个也一样

 

7.删除商品处理类: CartDeleteGoodsRequest

package cn.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.dom4j.Document;

import cn.struts.formbean.PurchaseGoodsBean;
/**
 * 删除购物车里面的商品
 * @author LI
 *
 */
public class CartDeleteGoodsRequest extends Action {

	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		System.out.println("删除购物车里面的商品");
		//参数对象
		PurchaseGoodsBean pgb=(PurchaseGoodsBean)form;
		//调试信息
		System.out.println("goodsId---------->"+pgb.getGoodsId());
		
		//获得购物车对象
		HttpSession session=request.getSession();
		String cartString =(String)session.getAttribute("cart");
		Document cartXml=null;
		if(cartString!=null)
		 cartXml = org.dom4j.DocumentHelper.parseText(cartString);
		//删除商品
		Document cart=cn.netjava.utils.XMLCart.getInstance()
		.deleteGoods(pgb.getGoodsId(), cartXml);
		//购物车放入session中存放
		session.setAttribute("cart", cart.asXML());
		return mapping.findForward("deleteSucc");
	}
}
 

 

OK,到此一切都弄好了!我基本上是Ctrl+C与Ctrl+V。呵呵...看不懂的地方,欢迎询问!如果认为哪个地方有更好的解决方法。欢迎交流!

 

 

 

1
0
分享到:
评论

相关推荐

    购物车 Android 简单实现

    在Android平台上实现一个简单的购物车功能,涉及到许多关键知识点,包括数据存储、UI设计、网络请求和状态管理等。以下是对这些技术点的详细说明: 1. **数据存储**:在购物车应用中,我们需要存储用户添加的商品...

    jsp购物车SqlServer版

    标题"jsp购物车SqlServer版"表明这是一个使用Java Server Pages(JSP)技术实现的购物车系统,特别的是,它依赖于Microsoft的SQL Server数据库管理系统来存储和处理数据。JSP是一种在服务器端运行的脚本语言,用于...

    简单版购物车

    【简单版购物车】是一个基于Java Web技术实现的在线购物车系统,主要采用了JSP(JavaServer Pages)和Servlet技术。这两个技术是Java Web开发中常用的部分,它们结合使用可以构建动态、交互式的Web应用程序。 **JSP...

    李晗jsp购物车实例,eclipse+sqlserver2000 版本(附带数据库)

    这个实例详细展示了如何使用JSP(JavaServer Pages)技术来实现一个功能完备的在线购物车系统。 在JSP中,购物车功能的实现主要依赖于动态网页技术和后端数据库的交互。JSP是一种基于Java的服务器端脚本语言,它...

    android加入购物车动画效果

    在Android开发中,实现“加入购物车”的动画效果是一个提升用户体验的重要环节。本文将详细讲解如何创建一个类似于“乐蜂网”购物车动画的示例,帮助开发者们理解和实现这一功能。 首先,我们需要理解动画在Android...

    淘宝购物车

    10. **测试**:为了确保插件的稳定性和可靠性,开发者可能进行了单元测试、集成测试,甚至使用自动化测试工具,如Jasmine或QUnit。 综上所述,“淘宝购物车”项目是一个综合性的前端开发实践,涵盖了jQuery的使用、...

    购物车 java ee session

    5. **前端技术**:在JSP页面上,可以使用HTML、CSS和JavaScript来构建用户界面,AJAX(Asynchronous JavaScript and XML)可以用于实现无刷新更新购物车,提高用户体验。如果使用现代前端框架如React或Vue.js,还...

    利用java 做的购物车系统

    本项目是一个新豆网在线商城的购物车实现,通过Java语言进行开发,并提供了完整的源代码供学习和参考。 【描述】:“利用Java写的新豆网在线商城购物车系统,含源代码” 新豆网在线商城购物车系统是一个典型的业务...

    购物车系统Shopping

    在JSP(JavaServer Pages)技术的应用中,购物车系统的实现涉及到以下几个关键知识点: 1. **动态网页生成**:JSP是Java的一种动态网页技术,它可以将Java代码嵌入到HTML或XML文档中,服务器接收到请求后执行Java...

    购物车JAVA版本一个不错的购物车的小例子啊。有dwr,jquery.等特效

    【标题】:购物车JAVA版本实现 - 包含DWR与jQuery特效 【描述】:这个项目是一个基于JAVA实现的购物车示例,它利用Direct Web Remoting (DWR) 技术和jQuery库,提供了丰富的用户体验和动态交互功能。DWR允许在...

    Java web 购物车myeclipse工程

    9. **测试**:单元测试和集成测试是确保代码质量的重要手段,JUnit和Mockito等工具可用于编写和执行测试用例。 10. **部署**:完成开发后,应用需要部署到Web服务器如Tomcat或Jetty上,以便用户访问。MyEclipse提供...

    JSP(SQLserver).rar_JSP 购物车_Java+sqlserver_java sqlServer_jsp购物车_

    【JSP购物车(SQLserver版)】是一个基于Java和SQL Server数据库技术的Web应用程序,用于实现在线购物车功能。在这一系统中,JSP(JavaServer Pages)作为前端展示层,与用户进行交互,处理用户的请求和显示响应结果。...

    JSP购物车(SQLserver版

    【JSP购物车(SQLserver版)】是一个基于JavaServer Pages(JSP)技术的电子商务系统,主要用于实现在线购物车的功能。这个毕业设计项目涵盖了多个关键的IT知识点,包括Web开发、数据库设计、前后端交互以及文件组织...

    Android 加入购物车动画

    在Android开发中,实现一个美观且流畅的购物车加入动画能极大地提升用户体验,尤其是在电商应用中,这样的细节处理显得尤为重要。淘宝作为中国最大的电商平台之一,其应用中的购物车动画设计无疑是一个很好的参考...

    购物车系统(Java工具开发)

    - `tests`:测试代码,可能使用JUnit或其他测试框架编写,用于验证系统功能的正确性。 学习这个购物车系统,开发者可以了解到如何在实际项目中应用Java编程、设计模式、数据库操作以及软件工程的最佳实践。此外,...

    Eclipse编写的Android复选框(仿购物车)应用实例

    为了实现购物车功能,我们需要一个数据结构来存储用户的选择。可以创建一个ArrayList或者使用其他集合类来保存选中的商品。当复选框的状态改变时,根据新的状态更新这个列表。此外,还可以添加一个按钮,当用户点击...

    Android自定义控件之购物车数量加减器

    在需要使用购物车数量加减器的Activity或Fragment的XML布局文件中,通过`&lt;com.example.yourpackage.CartQuantityCounter&gt;`标签引入自定义控件,并设置相应的属性。 8. **性能优化**: 考虑到性能,避免在`onDraw...

    基于MVC模式的购物车程序.pdf

    在本篇文档中,我们将深入探讨基于MVC(Model-View-Controller)模式的购物车程序的实现。MVC模式是一种软件设计模式,常用于构建Web应用程序,它将业务逻辑、用户界面和数据模型分离,使得开发、测试和维护变得更加...

    JSP购物车(SQLserver版)

    【JSP购物车(SQLserver版)】是一个基于Java语言开发的Web应用,主要目标是实现一个在线购物车功能。这个项目使用了Java Server Pages (JSP) 技术,这是一种在服务器端运行的动态网页技术,它允许开发者将HTML代码与...

Global site tag (gtag.js) - Google Analytics