繁体   English   中英

JSP如何处理并发请求?

[英]How does JSP process concurrent requests?

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

Servlet是不可变的。 在方法调用之外不存在任何状态(该Servlet是无状态的),或者任何此类状态都将永远不会改变(因此每个线程看到的状态始终是相同的)。

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

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

也可以看看:

尝试以下操作:<%@页面isThreadSafe =“ true”%>

JSP被编译成servlet。 所有JSP变量都是方法局部(堆栈)变量,因此它们是线程安全的。

如果您直接将线程不安全属性添加到Servlet类,它将不再是线程安全的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM