java - JSP 声明 scriptlet 访问 bean

标签 java jsp

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

所以我有一个像这样的代码(它已经简化了很多):

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

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

我知道声明 scriptlet 会转换为 java 类属性或方法,这些属性或方法在 jsp 初始化时执行一次,而普通 scriptlet (<% %>) 会转换为 _jspService 方法。但这两者的范围是什么?或者为什么我无法从声明 scriptlet 访问 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/

相关文章:

java - 为什么默认情况下不包含 JCE Unlimited Strength?

java - Spring MVC 表单静态文本

java - EWS 和 Exchange 2010 流通知 - 看到双重

java - JSP 表中的拆分数组值

java/scala Web 应用程序和 psexec

java - 无法停止线程

Java JSP - 删除 .DS_Store 并显示正确的文件夹名称

jsp - 如何在 Wildfly 10 中预编译 JSP 文件?

javascript - jqplot 图表的多维数组

java - Struts 2 - 禁用操作类中的提交按钮