首先,我们先来了解一下EL表达式中的11大隐含对象有哪些:
变量 | 类型 | 作用 |
pageContext | PageContextImpl | 它可以获取jsp中的九大内置对象 |
pageScope | Map<String,Objexct> | 它可以获取pageContext域中的数据 |
requestScope | Map<String,Objexct> | 它可以获取Request域中的数据 |
sessionScope | Map<String,Objexct> | 它可以获取Session域中的数据 |
applicationScope | Map<String,Objexct> | 它可以获取servletContext域中的数据 |
param | Map<String,String> | 它可以获取请求参数 |
paramValues | Map<String,String> | 它可以获取请求参数的值,获取多个值使用 |
header | Map<String,String> | 它可以获取请求头的信息 |
headerValues | Map<String,String> | 可以获取请求头的信息,可以获取多个值的情况 |
cookie | Map<String,Cookie> | 它可以获取当前请求的Cookie信息 |
initParam | Map<String,String> | 它可以获取在web.xml中配置的<context-param>上下文参数 |
1.我们首先分析pageContext对象:(这里直接上代码来演示)
<body>
1.协议:<br/>
用表达式脚本来表示:<%= request.getScheme() %> <br/>
用EL表达式来表示:${pageContext.request.scheme} <br/>
2.服务器ip:<br/>
用表达式脚本来表示:<%= request.getServerName()%> <br/>
用EL表达式来表示:${pageContext.request.serverName }<br/>
3.服务器端口:<br/>
用表达式脚本来表示:<%= request.getServerPort() %><br/>
用EL表达式来表示: ${pageContext.request.serverPort}<br/>
4.获取工程路径:<br/>
用表达式脚本来表示:<%= request.getContextPath() %><br/>
用EL表达式来表示: ${pageContext.request.contextPath}<br/>
5.获取请求方式:<br/>
用表达式脚本来表示:<%= request.getMethod() %><br/>
用EL表达式来表示: ${pageContext.request.method}<br/>
6.获取客户端ip地址:<br/>
用表达式脚本来表示:<%= request.getRemoteHost() %><br/>
用EL表达式来表示: ${pageContext.request.remoteHost}<br/>
7.获取会话的id编号:<br/>
用表达式脚本来表示:<%= session.getId() %><br/>
用EL表达式来表示: ${pageContext.session.id}<br/>
</body>
结果演示:
2.通过pageScope、requestScope、sessionScope、appicationScope来获取域中的数据。
<%
pageContext.setAttribute("key3","pageContext");
request.setAttribute("key3","request");
session.setAttribute("key3","session");
application.setAttribute("key3","application");
%>
${pageScope.key3} <br>
${requestScope.key3} <br>
${sessionScope.key3} <br>
${applicationScope.key3} <br>
</body>
3.param和paramValues对象:
<body>
用param对象来输出参数的值:<br/>
输出参数:${param} <br/>
输出username的值:${param.username } <br/>
输出password的值:${param.password } <br/>
用paramValues对象来输出参数的值:<br/>
输出参数:${paramValues} <br/>
输出username的值:${paramValues.username[0] } <br/>
输出password的值:${paramValues.password[0] } <br/>
如果一个键中有多个值:<br/>
用param输出参数:${param.hobby}<br/>
用paramValues输出参数:${paramValues.hobby[0]}<br/>
${paramValues.hobby[1]}<br/>
${paramValues.hobby[2]}<br/>
</body>
结果演示:
由此可发现,如果一个键中有多个值,比如获取多选框参数,param对象无法获取全部的内容,此时就需要用paramValues对象来获取。
4.用header和headerValues来获取请求头信息
输出请求头信息:<br/>
${header}<br/>
输出header中的Connection的值:${header.Connection }<br/>
输出header中的User-Agent的值:${header["User-Agent"] }<br/>
用headerValues来输出和paramValues输出基本一样,这里就不演示了<br/>
结果:
5.获取cookie信息
获取cookie的名称:${cookie.JSESSIONID.name }<br/>
获取cookie的值:${cookie. JSESSIONID.value}<br/>
结果:
cookie后面我会详细介绍,这里就不详细演示了。
6.通过initParam来获取web.xml中配置的上下文参数。
我们先在web.xml中配置context-param参数:
<context-param>
<param-name>username</param-name>
<param-value>lisi</param-value>
</context-param>
<context-param>
<param-name>password</param-name>
<param-value>123456</param-value>
</context-param>
通过initParam来获取:
通过initParam来获取web.xml中的context-param参数:${initParam}<br>
获取usrname的值:${initParam.username}<br>
获取password的值:${initParam.password}<br>
结果: