JSP如何处理并发请求?

时间:2011-03-22 20:16:19

标签: java jsp jsp-tags

我想我的问题是,JSP被编译成一个服务于多个请求的servlet实例。如何使其线程安全?

4 个答案:

答案 0 :(得分:4)

Servlet是不可变的。在方法调用之外不存在任何状态(servlet是无状态的),或者任何这样的状态永远不会改变(因此每个线程看到的状态总是相同的)。

编写线程安全的servlet非常简单:从不使用实例变量。使用方法局部变量。

答案 1 :(得分:2)

不要将请求/会话特定数据分配为全局/静态变量。因此,只要您不使用您为请求/会话特定数据分配的 scriptlet 声明<%! %>,并且您不将请求/会话数据放在应用程序范围内(即作为属性ServletContext),那你就安全了。

另见:

答案 2 :(得分:1)

试试这个:&lt;%@ page isThreadSafe =“true”%&gt;

答案 3 :(得分:1)

将JSP编译为servlet。所有JSP变量都是方法本地(堆栈)变量,因此它们是线程安全的。

如果直接向servlet类添加一个thread-unsafe属性,它将不再是线程安全的。