【发布时间】:2011-01-07 23:16:06
【问题描述】:
每当我研究 JSP 和 Servlet 时,我都会遇到隐式对象这个词,这个词是什么意思?
如何在我的程序中调用它们而不实例化对象?谁实例化隐式对象?请详细说明。
谢谢
【问题讨论】:
每当我研究 JSP 和 Servlet 时,我都会遇到隐式对象这个词,这个词是什么意思?
如何在我的程序中调用它们而不实例化对象?谁实例化隐式对象?请详细说明。
谢谢
【问题讨论】:
那些是已经被 servlet 容器放置在作用域中的对象,以便可以被 EL(表达式语言)访问,例如 PageContext、HttpServletRequest#getParameter()、HttpServletRequest#getHeader() 等。这些只是为了方便,因此您不需要使用老式的 scriptlet 来获取它们。
所以而不是例如
<%= pageContext.getSession().getMaxInactiveInterval() %><br>
<%= request.getParameter("foo") %><br>
<%= request.getHeader("user-agent") %><br>
<% for (Cookie cookie : request.getCookies()) { // Watch out with NPE!
if (cookie.getName().equals("foo")) {
out.write(cookie.getValue());
}
}
%><br>
你可以这样做
${pageContext.session.maxInactiveInterval}<br>
${param.foo}<br>
${header['user-agent']}<br>
${cookie.foo}<br>
您会看到它们遵循要访问的 JavaBean 约定(即,您可以通过 JavaBean 方式调用 getter)。你看我使用大括号符号[] 来得到user-agent,那是因为- 是EL 中的保留字符,所以${header.user-agent} 不起作用,它会尝试返回结果request.getHeader("user") - pageContext.findAttribute("agent") 这显然行不通。
有关它们的概述,请查看 Java EE 教程中的 Implicit Objects 章节。
【讨论】:
JSP 中的隐式对象是 由创建的对象 容器自动和 容器使它们可供 开发商,开发商不 需要明确地创建它们。自从 这些对象被创建 由容器自动执行,并且是 使用标准变量访问; 因此,它们被称为隐式 对象。
隐式对象由 容器并插入 生成的 servlet 代码。他们是 仅在 jspService 中可用 方法而不是在任何声明中。 隐式对象用于 不同的目的。我们自己的方法 (用户定义的方法)无法访问 他们是服务的本地人 方法并在 jsp到a的转换时间 小服务程序。但我们可以将它们传递给我们的 如果我们想使用他们自己的方法 在这些函数中本地化。
【讨论】:
JSP 隐式对象是 JSP 容器在每个页面中提供给开发人员的 Java 对象,开发人员可以直接调用它们而无需显式声明。 JSP 隐式对象也称为预定义变量。
JSP 支持九种下面列出的隐式对象:
【讨论】:
隐式对象是 JSP 容器在每个页面中为开发人员提供的一组 Java 对象。这些对象可以通过脚本元素作为内置变量访问,也可以通过 JavaBeans 和 Servlet 以编程方式访问。
有关详细概述和使用,请参阅下面的页面。
http://www.gulland.com/courses/JavaServerPages/jsp_objects.jsp
【讨论】:
隐式对象是自动创建的,可供您使用。您不能使用这些对象创建具有相同名称的其他变量。
【讨论】:
JSP隐式对象是由容器在将JSP页面翻译成Servlet源时创建的,以帮助开发者
【讨论】:
隐式对象有九种类型,隐式对象也称为预定义变量。
1) 请求
2) 响应
3) 应用
4) 会话
5) 页面
6) 页面上下文
7) 出
8) 异常
9) 配置
【讨论】: