${pageContext.request.contextPath} 表达式的分析及作用

我们在web项目中会遇到很多的路径分配问题,尤其是部署项目时,相对路径会较为不方便,有时我们需要获取应用属性名,部署绝对路径,以下EL表达式便可以获取:

${pageContext.request.contextPath} 


作用:取出部署的应用程序名


表达式的分析:

adminCode -> request.getAttribute("adminCode")
cost.name - > request.getAttribute("cost").getName()

默认情况下EL为调用getAttribute(),获得对象后再访问bean属性(get方法)。

因此若EL为contextPath则等价于request.getAttribute("contextPath")。那么就需要先获取request,然后访问它的属性(contextPath)

-> request.getContextPath();


但request是隐含对象,EL表达式中不能直接使用${requset.contextPath }  这种方式获取,因为这个表达式会被拆成两步:

1. 先获取request -> request.getAttribute("request");
2. 再获取contextPath -> request.getAttribute("request").getContextPath();


此时很明显第一步很奇怪,EL表达式中没有这种表达式(自己获取自己),所以要将这个request当做普通bean来获取,这样另一个隐含对象pageContext提供方法可以获取
request对象,所以使用

${pageContext.request.contextPath }

该表达式可以分成以下两步:


1. 先获取request: pageContext.request -> pageContext.getRequest();
2. 再获取contextPath:pageContext.request.contextPath -> pageContext.getRequest().getContextPath()

要想访问4个隐含对象的bean属性(get方法),那么都需要把他们当做普通的bean获取到并调用。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值