JSP默认是线程安全的,但是当我们说
时是什么意思JSP是线程安全的
答案 0 :(得分:2)
当jsp创建时,它将成为应用程序服务器中的servlet。所有逻辑都从jspService方法运行,你在jsp中拥有的所有引用或变量都成为局部变量,这就是为什么默认情况下jsp可以被认为是线程安全的。
选中此link以查看jsp生命周期。
最后,jsp中的所有代码都在_jspService方法中。 JSP的所有内容都在里面。
public void _jspService(HttpServletRequest request,
HttpServletResponse response)
throws java.io.IOException, ServletException {
答案 1 :(得分:1)
JSP一般不是线程安全的! JSP被编译成servlet,一个实例可用于提供多个请求,因此每个类字段(在请求执行期间修改)都被认为不是线程安全的。如何在JSP中声明类字段?使用JSP声明:
<%! private Object notThreadSafe = new Object(); %>
(顺便说一句,你甚至可以在JSP声明中声明方法)。
如果不使用这些JSP声明,JSP可以是线程安全的。正如Koitoer所提到的那样,其他所有内容(html / jsp标记,scriptlet代码<% /* some code*/ %>
,jsp表达式<%= "some expression" %>
,...)都被编译成jspService方法。