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

来源:互联网 发布:iuu免费短信软件 编辑:程序博客网 时间:2024/05/22 06:35

前言

在自己写项目的时候,肯定会遇到的,尤其是在写jsp文件时,发现<%=request.getContextPath()%>和${pageContext.request.contextPath}混写,看起来很乱,学习起来就很乱,使用的时候发现两个都可以用,但还是觉得要弄明白,到底有什么区别?

正文

${pageContext.request.contextPath}属于EL表达式的写法,<%=request.getContextPath()%>属于jsp的写法,作用都是取出部署的应用程序名,比如说一个地址http//:localhost:8080/hotel/login.jsp,如果我们需要用EL表达式写就是${pageContext.request.contextPath}/hotel/login.jsp,也可以写成<%=request.getContextPath()%>/hotel/login.jsp,这样都是没与问题的。
通常情况下,我们所写项目考虑到维护性,采用MVC思想,针对JSP主要是表现层代码,其他的代码最好不出现在其中,因此,我们习惯在项目jsp中采用EL表达式。

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


<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
然后下文都将引用改成<%=basePath%>就可以了。

这样我们就获取了我们想要的结果又完整的路径和端口号还有项目的上下文环境。

推荐把项目中的${pageContext.request.contextPath}都替换成了<%=basePath%>。
阅读全文
0 0
原创粉丝点击