学科分类
目录
Java Web

Web域相关对象

在Web开发中,PageContext、HttpRequest、HttpSession和ServletContext这四个对象之所以可以存储数据,是因为它们内部都定义了一个Map集合,这些Map集合是有一定作用范围的,例如,HttpRequest对象存储的数据只在当前请求中可以获取到。习惯性的,我们把这些Map集合称为域,这些Map集合所在的对象称为域对象。在EL表达式中,为了获取指定域中的数据,提供了pageScope、requestScope、sessionScope和applicationScope四个隐式对象,示例代码如下:

${pageScope.userName} 

${requestScope.userName} 

${sessionScope.userName} 

${applicationScope.userName} 

需要注意的是EL表达式只能在这四个作用域中获取数据。为了让初学者更好的学习这四个隐式对象,接下来通过一个案例来演示这四个隐式对象如何访问JSP域对象中的属性,如例1所示。

例1 scopes.jsp

 1  <%@ page language="java" contentType="text/html; charset=utf-8"

 2    pageEncoding="utf-8"%>

 3  <html>

 4  <head></head>

 5  <body>

 6    <% pageContext.setAttribute("userName", "itcast"); %>

 7    <% request.setAttribute("bookName", "Java Web"); %>

 8    <% session.setAttribute("userName", "itheima"); %>

 9    <% application.setAttribute("bookName", "Java 基础"); %>

 10   表达式\${pageScope.userName}的值为:${pageScope.userName} <br> 

 11   表达式\${requestScope.bookName}的值为:${requestScope.bookName} <br> 

 12   表达式\${sessionScope.userName}的值为:${sessionScope.userName} <br>

 13   表达式\${applicationScope.bookName}的值为:${applicationScope.bookName} 

 14    <br> 

 15   表达式\${userName}的值为:${userName}

 16 </body>

 17 </html>

启动Tomcat服务器,在地址栏中输入http://localhost:8080/chapter07/scopes.jsp访问scopes.jsp页面,此时,浏览器窗口中显示的结果如图1所示。

图1 scopes.jsp

从图1可以看出,使用pageScope、requestScope、sessionScope和applicationScope这四个隐式对象成功的获取到了相应JSP域对象中的属性值。需要注意的是,使用EL表达式获取某个域对象中的属性时,也可以不使用这些隐式对象来指定查找域,而是直接引用域中的属性名称即可,例如表达式${userName}就是在page、request、session、application这四个作用域内按顺序依次查找userName属性。

点击此处
隐藏目录