EL的隐含对象(三)【访问环境信息的隐含对象】
EL中提供了6个访问环境信息的隐含对象。分别是:
(1)param对象
param对象用于获取请求参数的值,应用在参数值只有一个的情况。在应用param对象时,返回的结果为字符串。
例:在JSP页面中,放置一个名称为user的文本框。首先新建一个index.jsp页面,关键代码如下;
<html>
<head>
<title>通过param对象访问文本框中的name值</title>
</head>
<body>
<form action="index.jsp" method="post">
<input type="text" name="name"/>
<input type="submit" value="提交"/>
</form>
获取到的值是:${param.name}<br>
</body>
</html>
注意:如果name文本框中可以输入中文,那么在应用EL输出其内容前,还需要应用“request.setCharacterEcoding("GB18030");”语句设置请求的编码为支持中文的编码,否则将产生乱码。
(2)paramValues对象
当一个请求参数名对应多个值时,则需要使用paramValues对象获取请求参数的值。在应用paramValues对象时,返回的结果是数组。
例:在JSP页面中,放置一个名称为affect的复选框组。关键代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>通过paramValues对象获取组件值</title>
</head>
<body>
<form action="index_paramValues.jsp" method="post">
<input type="checkbox" id="affect" name="affect" value="登山 ">登山
<input type="checkbox" id="affect" name="affect" value="游泳 ">游泳
<input type="checkbox" id="affect" name="affect" value="慢走 ">慢走
<input type="checkbox" id="affect" name="affect" value="晨跑 ">晨跑
<br><input type="submit" value="提交"> </form>
<br>
<% request.setCharacterEncoding("UTF-8"); %>
<p>
<label>爱好为:</label>
${ paramValues.affect[0] }
${ paramValues.affect[1] }
${ paramValues.affect[2] }
${ paramValues.affect[3] }
</p>
</body>
</html>
运行结果是:

注意:在应用param和paramValues对象时,如果指定的参数不存在,则返回空的字符串,而不是返回null。
(3)header和headerValues对象
header用于获取HTTP请求的一个具体的header的值,但在有些情况下,可能存在同一个header拥有多个不同的值的情况,这时候就必须用到headerValues对象。
例:要获取HTTP请求的header的connection(是否需要持久连接)属性,可以应用如下代码:
${ header.connection }或 ${ header["connection"] }
以上代码输出如下结果:

如果要获取HTTP请求的header的user-agent属性,则必须应用以下EL表达式:
${ header["user-agent"] }
输出结果如下:

(4)initParam对象
initParam对象用于获取Web应用初始化参数的值
例:在Web应用的web.xml文件中设置一个初始化参数author,用于指定作者。
具体代码如下:
index_initParam.jsp中的代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>initParam对象</title>
</head>
<body>
<label>现居住地:</label>
${ initParam.address }
</body>
</html>
在web.xml文件中的</web-app>标记上方添加如下代码:
<context-param>
<param-name>address</param-name>
<param-value>中国江苏省常州市</param-value>
</context-param>
代码运行结果如下:

(5)cookie对象
EL中并没有提供向cookie中保存值的方法,但是可以通过cookie隐含对象实现。如果在cookie中已经设置了一个名称为username的值,那么可以使用${cookie.username}来获取该cookie对象。但是如果要获取cookie中的值,需要使用cookie对象的value属性。
例:使用response对象设置一个请求有效的cookie对象,然后再使用EL获取该cookie对象的值。
代码如下:
<%
Cookie cookie = new Cookie("user","mrbccd");
response.addCookie(cookie);
%>
${ cookie.user.value }
运行上面代码结果显示:mrbccd
EL的隐含对象(三)【访问环境信息的隐含对象】的更多相关文章
- springmvc:BeanNameViewResolver访问内部资源视图对象和访问外部资源视图对象
<!-- 处理器映射器 --> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerM ...
- block没那么难(三):block和对象的内存管理
本系列博文总结自<Pro Multithreading and Memory Management for iOS and OS X with ARC> 在上一篇文章中,我们讲了很多关于 ...
- 第三章 JavaScript操作BOM对象
第三章 JavaScript操作BOM对象 一.window对象 浏览器对象模型(BOM)是javascript的组成之一,它提供了独立与浏览器窗口进行交换的对象,使用浏览器对象模型可以实现与HT ...
- jvm学习记录-对象的创建、对象的内存布局、对象的访问定位
简述 今天继续写<深入理解java虚拟机>的对象创建的理解.这次和上次隔的时间有些长,是因为有些东西确实不好理解,就查阅各种资料,然后弄明白了才来做记录. (此文中所阐述的内容都是以Hot ...
- JSP总结(三)——JSP中九大内置对象(汇总)
注:后缀为汇总的基本上是整理一些网上的. 一.九大内置对象分类: 1. request 请求对象 类型 javax.servlet.ServletRequest 作用域 Request ...
- 【2】JVM-JAVA对象的访问
Java中对象的访问 JAVA是面向对象的语言,那么在JAVA虚拟机中,存在非常多的对象,对象访问是无处不在的.即时是最简单的访问,也会涉及到JAVA栈.JAVA堆.方法区这三个非常重要的内存区域之间 ...
- Java内存区域与内存溢出异常---对象的内存布局和对象的访问定位
对象的内存布局 在HotSpot虚拟机中,对象在内存中的存储布局可以划分为三个区域:对象头,实例数据,对齐填充. 对象头包括两部分信息:第一部分用于存储对象自身的运行时数据,如哈希码,GC分代 ...
- Django 08 Django模型基础3(关系表的数据操作、表关联对象的访问、多表查询、聚合、分组、F、Q查询)
Django 08 Django模型基础3(关系表的数据操作.表关联对象的访问.多表查询.聚合.分组.F.Q查询) 一.关系表的数据操作 #为了能方便学习,我们进入项目的idle中去执行我们的操作,通 ...
- MOOC C++笔记(三):类和对象提高
第三周:类和对象提高 this指针 作用 this指针作用就是指向成员函数所作用的对象. 非静态成员函数中可以直接使用this来代表指向该函数作用的指针. 成员函数中默认有一个this指针指向当前对象 ...
随机推荐
- angularjs 在 iframe 里面无法正确显示 src 指定的内容
原 controller : $scope.myURL = URL; 页面: <iframe ng-src='{{myURL}}' class="width-100 height-10 ...
- 使用Sqlserver事务发布实现数据同步(sql2008)_Mssq l数据库教程
事务的功能在sqlserver中由来已久,因为最近在做一个数据同步方案,所以有机会再次研究一下它以及快照等,发现还是有很多不错的功能和改进的.这里以sqlserver2008的事务发布功能为例,对发布 ...
- windows hook 钩子
windows hook 钩子 场景: 1.打印机 Ctrl+P弹出支付窗口,付款成功后打印
- go install and go captcha
https://blog.csdn.net/liuhongwei123888/article/details/8512815 [gocaptcha] http://www.cnblogs.co ...
- [development][tcp/ip][ids] 一个简单有参考价值的库 libnids
libhtp 中的例子, 可以通过libnids快速使用. 或者可以快速的写个sniffer. 支持三个功能 ip分片重组, tcp乱序重排, 端口扫描发现. 工程: https://github.c ...
- [skill] C语言数组名到底是个啥
1. 正常情况下,数组名是个地址常量. 2. sizeof(数组名)的时候,数组名就代表数字名,其类型为 type array[], 返回数组元素个数. 3. 除了2的情况以外,可以理解为一个指针常量 ...
- 【Python基础】json.dumps()和json.loads()、json.dump()和json.load()的区分
json文件处理涉及的四个函数json.dumps()和json.loads().json.dump()和json.load()的区分 一.概念理解 1.json.dumps()和json.loads ...
- 【pyqtgraph绘图】Qt速成课程
解读官方API-Qt速成课程 参考:http://www.pyqtgraph.org/documentation/qtcrashcourse.html Qt速成课程 PyQtGraph广泛使用Qt来生 ...
- tr 命令
[root@localhost .txt abcdefg [root@localhost .txt |tr [a-z] [A-Z] ABCDEFG // 把文件小写字母变成大写字母
- 016-插件使用-head
一.安装以及概览 elasticsearch-head将是一款专门针对于elasticsearch的客户端工具 elasticsearch-head配置包,下载地址:https://github.co ...