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的隐含对象(三)【访问环境信息的隐含对象】的更多相关文章

  1. springmvc:BeanNameViewResolver访问内部资源视图对象和访问外部资源视图对象

    <!-- 处理器映射器 --> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerM ...

  2. block没那么难(三):block和对象的内存管理

    本系列博文总结自<Pro Multithreading and Memory Management for iOS and OS X with ARC> 在上一篇文章中,我们讲了很多关于 ...

  3. 第三章 JavaScript操作BOM对象

    第三章   JavaScript操作BOM对象 一.window对象 浏览器对象模型(BOM)是javascript的组成之一,它提供了独立与浏览器窗口进行交换的对象,使用浏览器对象模型可以实现与HT ...

  4. jvm学习记录-对象的创建、对象的内存布局、对象的访问定位

    简述 今天继续写<深入理解java虚拟机>的对象创建的理解.这次和上次隔的时间有些长,是因为有些东西确实不好理解,就查阅各种资料,然后弄明白了才来做记录. (此文中所阐述的内容都是以Hot ...

  5. JSP总结(三)——JSP中九大内置对象(汇总)

    注:后缀为汇总的基本上是整理一些网上的. 一.九大内置对象分类: 1. request  请求对象 类型 javax.servlet.ServletRequest        作用域 Request ...

  6. 【2】JVM-JAVA对象的访问

    Java中对象的访问 JAVA是面向对象的语言,那么在JAVA虚拟机中,存在非常多的对象,对象访问是无处不在的.即时是最简单的访问,也会涉及到JAVA栈.JAVA堆.方法区这三个非常重要的内存区域之间 ...

  7. Java内存区域与内存溢出异常---对象的内存布局和对象的访问定位

    对象的内存布局   在HotSpot虚拟机中,对象在内存中的存储布局可以划分为三个区域:对象头,实例数据,对齐填充.   对象头包括两部分信息:第一部分用于存储对象自身的运行时数据,如哈希码,GC分代 ...

  8. Django 08 Django模型基础3(关系表的数据操作、表关联对象的访问、多表查询、聚合、分组、F、Q查询)

    Django 08 Django模型基础3(关系表的数据操作.表关联对象的访问.多表查询.聚合.分组.F.Q查询) 一.关系表的数据操作 #为了能方便学习,我们进入项目的idle中去执行我们的操作,通 ...

  9. MOOC C++笔记(三):类和对象提高

    第三周:类和对象提高 this指针 作用 this指针作用就是指向成员函数所作用的对象. 非静态成员函数中可以直接使用this来代表指向该函数作用的指针. 成员函数中默认有一个this指针指向当前对象 ...

随机推荐

  1. [tcpreplay] tcpreplay高级用法--使用tcpreplay-edit进行循环动态发包

    tcpreplay-edit提供了可对包进行修改的高级用法: --unique-ip Modify IP addresses each loop iteration to generate uniqu ...

  2. fastreport好象将想合并哪个单元就将那一列的TEXT控件的Merge的属性设成True就可以了

    好象将想合并哪个单元就将那一列的TEXT控件的Merge的属性设成True就可以了 可以用FASTREPORT中的分组打印,你看一下里面的DEMO,里面都有的, 高版本的有suppressRepeat ...

  3. 《Nginx - 指令》- Rewrite/If/Set

    一:Rewrite - 概述 - flag 作用 - last / break 实现对 Url 的重写. - redirect / permanent 实现对 Url 的重定向. - 使用范围 - s ...

  4. excel之导出

    1.Maven依赖的jar包 <dependency>     <groupId>org.apache.poi</groupId>     <artifact ...

  5. kubernetes有状态集群服务部署与管理

    有状态集群服务的两个需求:一个是存储需求,另一个是集群需求.对存储需求,Kubernetes的解决方案是:Volume.Persistent Volume .对PV,除了手动创建PV池外,还可以通过S ...

  6. 【PyQt5-Qt Designer】QMessageBox 弹出框总结

    QMessageBox QMessageBox类中常用方法 方法  描述 information(QWdiget parent,title,text,buttons,defaultButton) 弹出 ...

  7. 经典影响力传播模型LT模型、IC模型

    一.LT模型:线性阈值模型 思想:当一个已经激活的节点去试图激活邻居节点而没有成功时,其对邻居节点的影响力被累积而不是被舍弃,这个贡献直到节点被激活或传播过程结束为止.该过程称为‘影响累积’. 过程: ...

  8. css盒子模型之边框

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. WARNING: firstResult/maxResults specified with collection fetch; applying in memory!

    QueryTranslatorImpl @Override public List list(SessionImplementor session, QueryParameters queryPara ...

  10. UVA 1379 - Pitcher Rotation(DP + 贪心)

    题目链接:option=com_onlinejudge&Itemid=8&page=show_problem&problem=4125" rel="nofo ...