关于路径<%=request.getContextPath()%>和${pageContext.request.contextPath}的问题

本文探讨了使用EL表达式(${pageContext.request.contextPath}

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目出现了很奇怪的问题,在引入css文件时,发现:




1、${pageContext.request.contextPath}

 <link href="${pageContext.request.contextPath}/resource/css/bootstrap.css" rel="stylesheet">
 <link href="${pageContext.request.contextPath}/resource/css/bootstrap-theme.css" rel="stylesheet">
 <link href="${pageContext.request.contextPath}/resource/css/login.css" rel="stylesheet">

会导致页面无法引入文件。下图是html源码显示

2、改用<%=request.getContextPath()%>后,就可以正常引入了

 <link href="<%=request.getContextPath()%>/resource/css/bootstrap.css" rel="stylesheet">
 <link href="<%=request.getContextPath()%>/resource/css/bootstrap-theme.css" rel="stylesheet">
 <link href="<%=request.getContextPath()%>/resource/css/login.css" rel="stylesheet">

下图是html源码显示

对比2者发现完全没有区别,目前也没有发现原因是什么。


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

${pageContext.request.contextPath}是el表达式版

<%=request.getContextPath()%>是javascript版

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

${pageContext.request.contextPath}, <%=request.getContextPath()%><br/> 获取到具体值到底是什么,他没有获取我想要的http://localName.com:port/项目名称(上下文)吗??通过实验我发现,只是简单做个测试,代码不规范:

  

?
1
2
"request.getContextPath()的值是   "<%=request.getContextPath()%>< br />
"pageContext.request.contextPath的值是"${pageContext.request.contextPath}< br />

  

通过运行我们发现了<%=request.getContextPath()%>和${pageContext.request.contextPath}获取的结果都是项目名(上下文),而不是我们想要的那个结果,可是如果我们想要获取项目的绝对路径和端口号我们有什么办法呢

  

<%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

通过运行结果可知<%=basePath%>可知结果是

  

 我们获取了我们想要的结果又完整的路径和端口号还有项目的上下文环境。推荐把项目中的${pageContext.request.contextPath}都替换成了<%=basePath%>。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值