我正在处理的项目(不是我的代码)遇到了情况。我是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/