是servlet写的 web里面配置好拉可以用的
数据库:数据库里面有2个表。
1:用户表存放用户信息的。登陆验证什么的。
2:商品表,用户登陆就会读这表里面的内容。思路:我写拉
DateBaseConnection 连接数据库
ShoppingCar 购物车(里面有Map,Collection放物品)
User,存放用户信息
Product,商品信息
Items:封装Product类,里面还有变量保存商品的数量,用户结帐用的
LogServlet 用户登陆时连接数据库,然后在这里面读取商品的信息,用out发送到客户端
另外还有2个PutinShoppingCar,ReadShoppingCar是放入和查看购物车用的
问题就是:session我是用servlet的方法得到的是一样的,
为什么2个用户的时候,放入购物车的内容变成一起用的呢?A用户放入,B可以看到自己的购物车多拉东西,A用户清空,B用户购物车里面的也都没拉,是什么原因啊

解决方案 »

  1.   

    是不是购物车用了静态成员变量来存放
    like this 
    private static ShoppingCar xxx=new ShoppingCar ();
      

  2.   

    1:2台电脑 怎么可能 一个浏览器打开呢?
    2。我的ShoppingCar里面 封装拉Items类,Items里面封装有Product类,我定义的是全局变量
    但是我没有用static啊!而且定义的全局ShoppingCar的只是一个引用而已,是在doPost(xx,xx)里面初始化的
      

  3.   

    你每次要保证向Session传的是新建立的ShoppingCar而不是声明时已实例好的那个
      

  4.   

    是否是同一个用户名登录?
    Items是appplication级的话,是否有分离用户的参数?应当是user--shoppingcar--items这样的结构逻辑更好吧。
      

  5.   

    数据库 里面 我不知道怎么建立,表间的联系,我总是想不通
    现在我只是用拉session
    用户我没分离,但是我登陆的是不同的用户名,而且我没有写入数据库,都是放入session里面的
    ,这样的话,只要客户端不同,应该没什么问题啊?
    to:tiger(哈哈鱼)可以帮我 解释一下你的那结构 在数据库的表里面怎么联系呢?
    to:welshem(天堂客)我在用户登陆的servlet里面先声明的是 ShoppingCar x = null;
    然后在service(xx,xx)里面才初始话的,然后放入session,
      

  6.   

    你再创建一个全局的集合products 把每个用户操作的product放进去 每个用户操作时用shoppingcart和products进行比较再返回session中的shoppingcart
      

  7.   

    因为没有看到你代码,所以只能猜测了.
    如果购物车对象是在servlet的实例变量的话,所有用户是共享.
    因为servlet通常是多线程的, 某个用户访问时,只会有新线程被创建(他们共享servlet的实例数据),不会有另一个servlet实例被创建.
      

  8.   

    我认为
    你没有弄清楚servlet和jsp生命周期的区别
    jsp的确是对每一个用户都会新打开一个页面,也就是说用户A和用户B的数据绝对不会共享
    但是servlet只要第一次被load就会长驻内存,直到被垃圾收集
    因此,很多成员,不能共享(不管静态不静态)。
    也就是说
    如果
    public class Sservlet extends HttpServlet{
    Vector vec=new Vector();
    public void doPost(...)...
    {}
    }
    就会出现你说的问题,数据共享。
    如果
    public class Sservlet extends HttpServlet{
    public void doPost(...)...
    {Vector vec=new Vector();
    }
    }
    应该就不会。
    等待你的回答,如果不是这个原因,请再把具体表现描述的更清楚。
      

  9.   

    把你的相关代码铁出来,初步估计是线程同步的问题。在你的方法(可能引起线程不安全)上,加上同步。synchronized,这样,就可以了!
      

  10.   

    还是应该放到数据表里好,我以前做过一个网络购物应用就是把用户ID及选择的商品放到表里,查询、合计、删除、结帐等都很方便,用户中途退出的话可以在SESSION的生命期结束时删除。
      

  11.   

    今天回家拉 恩 到学校一看果然是 全局里面 初始化的,改到server(x,x)里面初始化就好拉谢谢
    我还作好拉 
    1:只允许同一个帐号,不可以重复登陆,
    2:用户如故直接关浏览器,在一个线程里面,检验没操作的session,把session失效(失效时间是30分钟),
    请问第2个 我的方法对吗?
    我发现,因为登陆我是改变user_info表里面的一个isLog变量,
    来判断帐号是否登陆(0没登陆,1登陆),但是如果用户直接关浏览器的话,在30分钟后,user_info里面的那个isLog才会在线程里面恢复到‘0’。这样的话,用户如果直接关浏览器后,在登陆那个帐号,就必须等30分钟才可以,否则会显示,帐号已经登陆。
    请问我的这算法对吗?上面的问题怎么解决