每当我学习JSP和Servlets时,我会遇到隐式对象这个词,它是什么意思?
在我的程序中如何调用它们而无需实例化对象?是谁实例化隐式对象?请详细说明。
谢谢
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对象,JSP容器在每个页面中都提供给开发人员使用。这些对象可以通过脚本元素作为内置变量访问,并且还可以通过JavaBeans和Servlets以编程方式访问。
有关详细概述和用法,请参见下面的页面。
http://www.gulland.com/courses/JavaServerPages/jsp_objects.jsp
隐式对象会自动创建并准备好供您使用。您不能使用这些对象的名称创建其他变量。
有九种隐式对象,隐式对象也称为预定义变量。
1)请求
2)响应
3)应用程序
4)会话
5)页面
6)页面上下文
7)输出
8)异常
9)配置