我正在处理的项目(不是我的代码)遇到了情况。我是JSP的初学者,所以很高兴了解发生了什么。

所以我有这样的代码(简化了很多):

<jsp:useBean id="accessManager" scope="session" class="AccessManager" />
<%! Object x = accessManager %>
<% Object y = accessManager %>


第二行不起作用,它不知道什么是accessManager。第三行(y)起作用。

我知道声明脚本会转换为Java类属性或方法,这些属性或方法在初始化jsp时将执行一次,而普通脚本()会转换为_jspService方法。但是两者的范围是什么?还是为什么我不能从声明脚本中访问bean?

谢谢!

最佳答案

!用于指定无上下文。

如果使用<%! Object x = accessManager; %>,它将产生如下代码。

class Index {
  Object x = accessManager;
}


如果使用<% Object x = accessManager; %>,它将产生如下代码:

class Index {
  public void foo(){
    Object x = accessManager;
  }
}


C:\Program Files\apache-tomcat-*\work\Catalina\localhost\*\org\apache\jsp\中查看生成的.java文件。

(这个例子很简单。)

关于java - JSP声明scriptlet访问bean,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18720488/

10-09 16:46