以上的代码为了简化,我省去了一写东西,包括addItem方法的参数,下面是全部的代码:
CartBean:
package com.jluptown.ses.product;import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.ejb.CreateException;
import java.io.*;
import java.util.*;
import javax.naming.*;
import com.jluptown.cmp.product.ejb.*;
import com.chnnn.utils.*;
import com.product.manage.*;
import javax.rmi.PortableRemoteObject;public class CartBean
implements SessionBean {
SessionContext sessionContext;
private ProductRemote product;
private Context ctx; private Collection items;
private Map itemMap=new HashMap(); public void ejbCreate() throws CreateException {
} public void ejbRemove() {
} public void ejbActivate() {
} public void ejbPassivate() {
} public void setSessionContext(SessionContext sessionContext) {
this.sessionContext = sessionContext;
}
public ProductRemote getProduct(String pid){
ProductRemote product=null;
try{
ctx=GetContext.getInitialContext();
Object ref=ctx.lookup("ProductRemote");
ProductRemoteHome home=(ProductRemoteHome)PortableRemoteObject.narrow(ref,ProductRemoteHome.class);
product=home.findByPrimaryKey(pid);
}catch(Exception e){
e.printStackTrace();
}finally{
return product;
}
}
//添加商品
public void addItem(String pid,Integer pnum){
try{
int num=pnum.intValue();
ProductRemote item=getProduct(pid);
CartItem cartItem=null;
if(itemMap.containsKey(pid)){//若已有此商品,则把数量更新一下
cartItem=(CartItem)itemMap.get(item.getProductID());
cartItem.setQuantity(num+cartItem.getQuantity());
}else{//购物车里无此商品
cartItem=new CartItem();
cartItem.setItem(item,num);
}
if(itemMap==null)System.out.println("map");
if(item==null)System.out.println("item");
if(cartItem==null)System.out.println("cartItem");
itemMap.put(item.getProductID(),cartItem);
items=itemMap.values();
}catch(Exception e){
e.printStackTrace();
}
}
//删除某件商品
public ProductRemote removeItem(String pid){
if(itemMap.containsKey(pid)){
CartItem cartItem = (CartItem) itemMap.remove(pid);
items=itemMap.values();
return cartItem.getItem();
}
return null;
} //减少某件商品数量
public void decreaseItem(String pid,Integer pnum){
int num=pnum.intValue();
if(itemMap.containsKey(pid)){//有此商品才进行减少操作
CartItem cartItem = (CartItem) itemMap.get(pid);
if(cartItem.getQuantity()>num){
cartItem.setQuantity(cartItem.getQuantity()-num);
}else{
removeItem(pid);//减多了,就全部删除
}
}
} //清空购物车
public void clear(){
itemMap.clear();
} //计算购物车总金额
public double getCartTotal(){
double total=0;
Iterator it=itemMap.values().iterator();
int i=0;
while (it.hasNext()) {
CartItem cartItem = (CartItem) it.next();
cartItem.calculate();
total = total + cartItem.getTotal();
}
return total;
}
public Collection getCartItems(){
items=itemMap.values();
return items;
}
public Map getCartItems(String s){
return this.itemMap;
} public Collection getItems() {
return items;
} public Map getItemMap() {
return itemMap;
}
}
CartBean:
package com.jluptown.ses.product;import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.ejb.CreateException;
import java.io.*;
import java.util.*;
import javax.naming.*;
import com.jluptown.cmp.product.ejb.*;
import com.chnnn.utils.*;
import com.product.manage.*;
import javax.rmi.PortableRemoteObject;public class CartBean
implements SessionBean {
SessionContext sessionContext;
private ProductRemote product;
private Context ctx; private Collection items;
private Map itemMap=new HashMap(); public void ejbCreate() throws CreateException {
} public void ejbRemove() {
} public void ejbActivate() {
} public void ejbPassivate() {
} public void setSessionContext(SessionContext sessionContext) {
this.sessionContext = sessionContext;
}
public ProductRemote getProduct(String pid){
ProductRemote product=null;
try{
ctx=GetContext.getInitialContext();
Object ref=ctx.lookup("ProductRemote");
ProductRemoteHome home=(ProductRemoteHome)PortableRemoteObject.narrow(ref,ProductRemoteHome.class);
product=home.findByPrimaryKey(pid);
}catch(Exception e){
e.printStackTrace();
}finally{
return product;
}
}
//添加商品
public void addItem(String pid,Integer pnum){
try{
int num=pnum.intValue();
ProductRemote item=getProduct(pid);
CartItem cartItem=null;
if(itemMap.containsKey(pid)){//若已有此商品,则把数量更新一下
cartItem=(CartItem)itemMap.get(item.getProductID());
cartItem.setQuantity(num+cartItem.getQuantity());
}else{//购物车里无此商品
cartItem=new CartItem();
cartItem.setItem(item,num);
}
if(itemMap==null)System.out.println("map");
if(item==null)System.out.println("item");
if(cartItem==null)System.out.println("cartItem");
itemMap.put(item.getProductID(),cartItem);
items=itemMap.values();
}catch(Exception e){
e.printStackTrace();
}
}
//删除某件商品
public ProductRemote removeItem(String pid){
if(itemMap.containsKey(pid)){
CartItem cartItem = (CartItem) itemMap.remove(pid);
items=itemMap.values();
return cartItem.getItem();
}
return null;
} //减少某件商品数量
public void decreaseItem(String pid,Integer pnum){
int num=pnum.intValue();
if(itemMap.containsKey(pid)){//有此商品才进行减少操作
CartItem cartItem = (CartItem) itemMap.get(pid);
if(cartItem.getQuantity()>num){
cartItem.setQuantity(cartItem.getQuantity()-num);
}else{
removeItem(pid);//减多了,就全部删除
}
}
} //清空购物车
public void clear(){
itemMap.clear();
} //计算购物车总金额
public double getCartTotal(){
double total=0;
Iterator it=itemMap.values().iterator();
int i=0;
while (it.hasNext()) {
CartItem cartItem = (CartItem) it.next();
cartItem.calculate();
total = total + cartItem.getTotal();
}
return total;
}
public Collection getCartItems(){
items=itemMap.values();
return items;
}
public Map getCartItems(String s){
return this.itemMap;
} public Collection getItems() {
return items;
} public Map getItemMap() {
return itemMap;
}
}
解决方案 »
- 一个多线程的小题,请各位高手抛砖引玉
- Duplicate class/entity mapping y2.hib.entity.TblJd求救!!
- hibernate的criteria查询的问题
- 怎样取到hibernate延迟加载被cglib代理过的子类的类型
- java通过soap开发sqlxml公布的web服务!(急,如果可以解决,可以再多给1000分)
- jsp报这样的错,各位进来看下
- iBatis中通过mysql-connector-odbc访问时,出现如下错误。请问是什么原因??
- 如何从ip包中获取并修改相关信息!急急急!
- 关于RMI示例的问题!!!求救!!!
- System.out.print()和out.print()在使用时有什么区别?
- 怎么样使得多个应用使用一个数据源
- JBOSS的文件存放路径问题(急,在线等待)
import java.util.*;
import javax.naming.*;
import com.jluptown.cmp.product.ejb.*;
import com.chnnn.utils.*;public class CartItem implements Serializable{ private ProductRemote item;
private Context ctx;
private int quantity;
private double total; public CartItem() {
initial();
}
public void initial(){
try{
ctx=GetContext.getInitialContext();
}catch(Exception e){
e.printStackTrace();
} } public double getTotal(){
return this.total;
} public void setItem(ProductRemote item,int qty){
this.item=item;
setQuantity(qty);
}
public ProductRemote getItem(){
return this.item;
} public void setQuantity(int qty){
this.quantity=qty;
}
public int getQuantity(){
return this.quantity;
} public void calculate(){//计算这个项的总价
try{
if(item!=null&&item.getPrice()!=null)
total=item.getPrice().intValue()*quantity;
}catch(Exception e){ }
}
}
Collection items=cart.getCartItems();Cart是什么东东? getCartItems()不是CartBean的方法吗?