<%@ page language="java" import="java.util.*, cn.hncu.domain.User" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>EL表达式</title>
<%
User user = new User();
user.setName("Tom");
user.setAge(22);
user.setPwd("1234");
//pageContext.setAttribute("user", user);
//request.setAttribute("user", user);
session.setAttribute("user", user);
//application.setAttribute("user", user);
%>
</head>
<body>
<h2>EL表达式作用3: 获得web开发常用对象(9个隐含对象)</h2>
1) 4个容器隐含对象: pageScope,requestScope,sessionScope,applicationScope <br/>
通过指定的容器去获取,效率更高!<br/>
1:${pageScope.user},
2:${requestScope.user},
3:${sessionScope.user},
4:${applicationScope.user} <br/>
2) 1个pageContext隐含对象<br/>
<a href="<%=request.getContextPath()%>/index.jsp">访问主页1</a> <br/>
<a href="${pageContext.request.contextPath}/index.jsp">访问主页2</a> <br/>
3) 5个http请求头相关数据的隐含对象:header,cookie<br/>
${header} <!-- 把请求头中的所有信息封装成map,整体显示出来 --><br/>
${header.host} <!-- 只输出请求头中host-key的value --> <br/>
${header.cookie} <!-- 只输出请求头中cookie-key的value --> <br/>
<%-- ${header.cookie.JSESSIONID} --%>
<!-- 如果想输出JSESSIONID,不能用header.cookie.JSESSIONID,
因为后者整个字符串中的一部分,并不是属性(有对应getter方法)。
应该用一个独立的cookie隐含对象 -->
<br/>
${cookie.JSESSIONID.value } <br/>
<!-- 通过param隐含对象获取 页面提交过来的参数, 演示如下面的超链接 -->
<a href="http://localhost:8080/elWeb/jsps/demo3.jsp?name=Jack&age=21&addr=abc"> 演示提交参数</a><br/>
${param} <!-- 获取页面提交的参数 --> <br/>
${param.age} <!-- 获取页面提交的某一个参数 --> <br/>
<h3>paramValues和headerValues一般只在某参数有多个值时才使用。如果仅仅是单个值,用前面的隐含对象header或param更简单</h3>
<!-- 通过paramValues隐含对象获取页面提交过来的所有参数值,每个值以String[]的方式输出,因为有的参数有多个值如hobby -->
${paramValues} <!-- 输出所有参数值 --> <br/>
${paramValues.addr[0] } <!-- 输出其中某一个参数如addr的第一个值 --> <br/>
<!-- 通过headerValues隐含对象获取请求头中的所有参数值,每个值以String[]的方式输出,因为有的参数有多个值 -->
${headerValues.accept[0] } <!-- 输出其中某一个参数如accept的第一个值 --> <br/>
4) 1个initParam <!-- 读取web.xml中的初始化参数 --> <br/>
</body>
</html>