在使用EL时,其实EL是先看标识符是否是其隐式对象之一,如果不是,才从四个域(page、request、session、application)中顺序搜索(使用pageContext.findAttribute方法)。

EL总共有如下隐式对象:
而这里,EL和JSP一样拥有pageContext对象,通过在EL中使用pageContext对象,能获取JSP中其它几个隐式对象,然后再获得这些对象中的属性。例如获取当前web工程的名称的经典EL表达式:${ pageContext.request.contextPath },就是由pageContext先获取request对象(因为在JSP的API中,我们可以看到pageContext有getRequest方法),获取到request对象后,因为request中含有getContextPath方法,因此我们还可以获得request对象中contextPath属性的值。
pageScope、requestScope、sessionScope、applicationScope这四个EL隐式对象分别代表了各自域中的Map对象(每个域以关键字来保存数据或对象,肯定是使用Map集合),这Map对象保存了存在这些域中的键值对。通过EL表达式和这些隐式对象,我们可以直接从指定的域中获取存储的数据。
例1:
<%
User u = new User();
u.setUsername("fjdingsd");
session.setAttribute("user", u);
%>
欢迎您:${sessionScope.user.username}
在浏览器中观察:
对于用户登录这样的案例来说,我们检查用户是否登录肯定只需要从session域中查询,这样使用EL表达式的sessionScope隐式对象就足够了。
param隐式对象:表示所有请求参数的Map集合对象。例如表单提交,那么在请求参数中的数据就以键值对存储在param对象所代表的Map集合中,下面的例子我以get方式来替代post方式来模拟表单请求参数:
例2:
${param.username}
在地址栏上添加URL参数,可以看到:
使用param隐式对象同样也能作为数据回显功能,在以前JSP页面提交的表单如果想做出数据回显功能,必须创建一个form的bean对象,当表单校验失败时,重新将这个bean对象通过转发(forward)传回JSP页面再取出。而使用param对象,不需要新建form的bean对象,只需要在表单校验失败时转发回表单所在的JSP页面,通过param对象就可以从请求中取出之前的表单数据。
例3:表单验证失败的数据回显demo
在JSP页面beantag.jsp中:
<form action="${pageContext.request.contextPath}/servlet/FormHandler" method="post">
用户名 <input type="text" name="username" value="${param.username}" />
<input type="submit" value="提交" >
</form>
在处理表单的Servlet中:
//省略表单验证过程,验证失败重新转发到表单页面
request.getRequestDispatcher("/beantag.jsp").forward(request, response);
刚进入表单注册页面:
假设表单验证失败,则转发请求到表单注册页面,并回显数据:
paramValues隐式对象:也是表示一个保存所有的请求参数的Map集合对象,但是paramValues对象和param对象的区别是,对任何一个参数,paramValues都是以字符串数组(String[])作为保存数据的类型,因此paramValues对象适合在有同名参数的情况下使用。
例4:
${paramValues.name[0]}
浏览器中观察:
例5:
${paramValues.name[1]}
浏览器中观察:
header隐式对象:表示一个保存了该JSP页面发出请求的请求头字段的Map集合对象。
注意:这个对象只能获取请求头字段的信息,不能获取响应头字段的信息。另外如果头字段中含有小横线的”-”,例如”Accept-Encoding”,则要使用中括号加引号的EL取数据形式,例如 ${ header[‘accept-encoding'] }。
例6:
${header.connection}
在浏览器中观察:
例7:
${header['accept-encoding']}
在浏览器中观察:
headerValues隐式对象功能类似于header隐式对象,但以字符串数组封装每个保存的请求头字段信息,这点跟paramValues隐式对象是一样的。
cookie隐式对象:表示一个保存了该请求中所有的Cookie的Map集合对象。
假设在请求中有一个cookie,cookie的键值对为:
JSESSIONID=E9546AE9C86FB722BDBD7AF947157379
例8:
${cookie.JSESSIONID}
在浏览器中观察:
可以看到,cookie隐式对象的名称(cookie)是Map集合的名称,而在这个Map集合中,有一个键值对的key命名为JSESSIONID,而通过${cookie.JSESSIONID}获取到的是一个Cookie对象,那么我们如何获取该Cookie的值呢?
之前说过EL表达式都是通过对象的具有的属性来获取属性值,能被称为属性的都有getXXX方法,而Cookie正是具有getName()方法和getValue()方法,因此在EL表达式中获取了Cookie对象后可以再获取这两个属性:
例9:
${cookie.JSESSIONID.name} <br>
${cookie.JSESSIONID.value} <br>
在浏览器中观察:
initParam隐式对象:表示一个保存了所有web应用初始化参数(context-param)的Map集合对象。
<context-param>标签用于配置全局性的web参数,在Servlet中可以使用 ServletContext.getInitParameter方法获取指定参数的值。
而在JSP页面中,我们可以同EL表达式的initParam方法来获取为web应用配置的全局性参数。
例10:
在web.xml文件中配置:
<context-param> <param-name>username</param-name> <param-value>fjdingsd</param-value> </context-param>
在JSP页面中:
${initParam.username }
在浏览器中观察:
# el的隐式对象
# EL表达式的隐式对象
# El表达式使用问题javax.el.ELException:Failed to parse the
# EL表达式简介_动力节点Java学院整理
# JSP中EL表达式用法_动力节点Java学院整理
# 浅谈java里的EL表达式在JSP中不能解析的问题
# JAVA JSP页面技术之EL表达式整理归纳总结
# Javaweb El表达式实例详解
# Java后端用EL表达式改进JSP
# 表单
# 隐式
# 器中
# 键值
# 可以看到
# 存了
# 而在
# 我们可以
# 象中
# 的是
# 都是
# 几个
# 都有
# 还可以
# 不需要
# 欢迎您
# 是由
# 也能
# 中有
# 只需
相关文章:
如何用花生壳三步快速搭建专属网站?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
javascript中对象的定义、使用以及对象和原型链操作小结
深圳网站制作培训,深圳哪些招聘网站比较好?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
专业网站建设制作报价,网页设计制作要考什么证?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
建站之星CMS建站配置指南:模板选择与SEO优化技巧
建站之星免费版是否永久可用?
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
如何在建站主机中优化服务器配置?
大连网站制作公司哪家好一点,大连买房网站哪个好?
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
建站VPS配置与SEO优化指南:关键词排名提升策略
如何登录建站主机?访问步骤全解析
如何在阿里云购买域名并搭建网站?
如何基于云服务器快速搭建网站及云盘系统?
七夕网站制作视频,七夕大促活动怎么报名?
宝塔新建站点为何无法访问?如何排查?
广州营销型建站服务商推荐:技术优势与SEO优化解析
建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析
家具网站制作软件,家具厂怎么跑业务?
已有域名如何免费搭建网站?
电商网站制作公司有哪些,1688网是什么意思?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
济南专业网站制作公司,济南信息工程学校怎么样?
建站之星如何实现网站加密操作?
制作证书网站有哪些,全国城建培训中心证书查询官网?
北京企业网站设计制作公司,北京铁路集团官方网站?
XML的“混合内容”是什么 怎么用DTD或XSD定义
实惠建站价格推荐:2025年高性价比自助建站套餐解析
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
建站主机选购指南与交易推荐:核心配置解析
如何在新浪SAE免费搭建个人博客?
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
完全自定义免费建站平台:主题模板在线生成一站式服务
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
jQuery 常见小例汇总
如何有效防御Web建站篡改攻击?
网站设计制作公司地址,网站建设比较好的公司都有哪些?
在线制作视频网站免费,都有哪些好的动漫网站?
Python如何创建带属性的XML节点
独立制作一个网站多少钱,建立网站需要花多少钱?
制作宣传网站的软件,小红书可以宣传网站吗?
如何快速上传自定义模板至建站之星?
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
html制作网站的步骤有哪些,iapp如何添加网页?
网站制作壁纸教程视频,电脑壁纸网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。