Topic: 请问这样写servlet是否有问题?

  Print this page

1.请问这样写servlet是否有问题? Copy to clipboard
Posted by: program2000
Posted on: 2003-07-06 17:02

我在我的许多servlet里都含有域变量。
如下面这个String变量。我想用这个变量来接收web传过来的的参数。

public class HelloClientServlet extends HttpServlet {

private String username ; //我的老板说把变量设在类里可能有隐患,认为如果有多个servlet并发的话可能会互相影响,请教高手这样设是否有问题?

protected void doGet() {
...........
}

}

2.Re:请问这样写servlet是否有问题? [Re: program2000] Copy to clipboard
Posted by: Jove
Posted on: 2003-07-06 17:14

似乎是不大好,改写成局部变量吧

3.Re:请问这样写servlet是否有问题? [Re: program2000] Copy to clipboard
Posted by: program2000
Posted on: 2003-07-06 17:23

楼上的,能说说理由吗?

4.Re:请问这样写servlet是否有问题? [Re: program2000] Copy to clipboard
Posted by: jfml
Posted on: 2003-07-06 17:28

你的老板说的对

Servlet的生命周期是Servlet容器管理的

一般情况下Servlet对象从被第一次请求时生成

到Servlet容器关闭(也就是webapp关闭或者重起)时被销毁

因此,不推荐使用member成员

因为Servlet的member是大家共用的

比如说一个网上银行,通过登陆后会弹出一个对话框“XX先生,你好,你的账户上还有XXXXRMB”

加入这个对话框的信息是从Servlet.member里读取来的

那么在该Servlet的访问量比较大的情况下(多线程)

极有可能出现A先生登陆后看到了“B先生,您好,你的账户上还有XXXXRMB”这种情况

你可能会问那么就把Servlet里的方法同步掉或者加上SingleThreadModel

但是SUN非常不鼓励这么做,至于原因嘛,呵呵,我忘记了

所以变通的方法是不在Serlvet中设置任何的member

5.Re:请问这样写servlet是否有问题? [Re: program2000] Copy to clipboard
Posted by: floater
Posted on: 2003-07-07 01:16

username will be modified by several threads, potentially.

read java servlet programming book(hunter).


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923