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. UILabel中NSAttributedString和其LinebarkModel等属性之间的关系

    如果设置了一个富文本给一个UILabel,那么后续改变这个UILabel的属性时将会同时改变UILabel.attributedText的属性描述,此时若改变了其它的大小.换行模式(如果在显示时我们可 ...

  2. Exception 02 : java.lang.ClassNotFoundException: Could not load requested class : com.mysql.jdbc.Driver

    异常名称 java.lang.ClassNotFoundException: Could not load requested class : com.mysql.jdbc.Driver 异常详细信息 ...

  3. 2016年蓝桥杯省赛A组c++第8题(暴力求解)

    /* 四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和. 如果把0包括进去,就正好可以表示为4个数的平方和. 比如: 5 = 0^2 + 0^2 + 1^2 + 2^2 ...

  4. 适配ipad Pro

    买了个新款ipad pro 11寸的,发现我们的ipad项目. 上下左右都有黑边 使用info.plist设置启动图,不用asset和launch storyboard 图片用如下格式命名,拖到项目中 ...

  5. Servlet重写init(ServletConfig config)还是init()

    原文地址:Servlet重写init(ServletConfig config)还是init() 写一个Servlet时,有时需要我们重写该Servlet的初始化方法,然后,究竟是重写init(Ser ...

  6. Java之旅_面向对象_多态

    参考并摘自:http://www.runoob.com/java/java-polymorphism.html 多态 多态是一个行为具有多个不同表现形式的能力. 多态就是同一个接口,使用不同的实例而执 ...

  7. zedboard上首个驱动实践——Led

    // led驱动 *myled.c*//头文件 #include<linux/module.h> //最基本的文件,支持动态添加和卸载模块 #include<linux/kernel ...

  8. wps去广告

    彻底解决WPS弹出热点广告.WPS购物图标的办法 方法一:(一定有效) https://www.cnblogs.com/ytaozhao/p/5654149.html 一直用WPS,但一直有一个问题迟 ...

  9. dedecms站内搜索页面调用最新文章

    在页面中调用最新文章列表可以使新发布的文章更快被收录,如何在dedecms站内搜索页面调用最新文章呢? 1.登陆系统后台,进入“模板——模板管理——自定义宏标记”,点击“智能标记向导”进入智能标记生成 ...

  10. Win7各版本功能对比