全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

EL表达式的隐式对象_动力节点Java学院整理

在使用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  # 表单  # 隐式  # 器中  # 键值  # 可以看到  # 存了  # 而在  # 我们可以  # 象中  # 的是  # 都是  # 几个  # 都有  # 还可以  # 不需要  # 欢迎您  # 是由  # 也能  # 中有  # 只需 


相关文章: 制作销售网站教学视频,销售网站有哪些?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  家庭建站与云服务器建站,如何选择更优?  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  建站主机选哪种环境更利于SEO优化?  如何在Ubuntu系统下快速搭建WordPress个人网站?  IOS倒计时设置UIButton标题title的抖动问题  代购小票制作网站有哪些,购物小票的简要说明?  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  XML的“混合内容”是什么 怎么用DTD或XSD定义  如何用好域名打造高点击率的自主建站?  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  香港服务器租用每月最低只需15元?  如何用已有域名快速搭建网站?  如何访问已购建站主机并解决登录问题?  如何快速辨别茅台真假?关键步骤解析  昆明网站制作哪家好,昆明公租房申请网上登录入口?  如何在Golang中引入测试模块_Golang测试包导入与使用实践  广州建站公司哪家好?十大优质服务商推荐  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  制作营销网站公司,淘特是干什么用的?  如何打造高效商业网站?建站目的决定转化率  宝华建站服务条款解析:五站合一功能与SEO优化设置指南  小型网站制作HTML,*游戏网站怎么搭建?  常州自助建站工具推荐:低成本搭建与模板选择技巧  如何选择高效稳定的ISP建站解决方案?  如何高效搭建专业期货交易平台网站?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?  高端建站如何打造兼具美学与转化的品牌官网?  子杰智能建站系统|零代码开发与AI生成SEO优化指南  如何通过.red域名打造高辨识度品牌网站?  建站主机选虚拟主机还是云服务器更好?  建站之星导航菜单设置与功能模块配置全攻略  如何选择服务器才能高效搭建专属网站?  北京网站制作网页,网站升级改版需要多久?  建站之星备案是否影响网站上线时间?  如何通过免费商城建站系统源码自定义网站主题与功能?  如何通过商城免费建站系统源码自定义网站主题?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  ui设计制作网站有哪些,手机UI设计网址吗?  相册网站制作软件,图片上的网址怎么复制?  建站之星如何实现PC+手机+微信网站五合一建站?  定制建站流程步骤详解:一站式方案设计与开发指南  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  电商网站制作价格怎么算,网上拍卖流程以及规则?  如何快速上传自定义模板至建站之星?  网站制作需要会哪些技术,建立一个网站要花费多少? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。