这个表达式语言$ {pageContext.request.contextPath}在JSP EL中的作用是什么?

时间:2011-05-01 18:13:58

标签: java jsp el

我有一个网络应用,我有不同的导航锚标签,如家庭,个人资料等。

我想要的是什么:

当我按下主页或个人资料等锚标签时。我只想确保当前用户在Tags / JSP页面中获取其信息。

我正在尝试的示例:

<a  href="${pageContext.request.contextPath}/JSPAddress.jsp">Profile</a>

4 个答案:

答案 0 :(得分:64)

pageContext是JSP中可用的隐式对象。 The EL documentation

  

JSP页面的上下文。提供对各种对象的访问,包括:
  servletContext:...
  会话:...
  要求:...
  回应:......

因此,此表达式将获取当前HttpServletRequest对象并获取当前请求的context path并向其附加/JSPAddress.jsp以创建链接(即使上下文 - 在更改时访问此资源的路径。)

此表达式的主要目的是使您的链接与应用程序上下文保持“相对”,并使它们与应用程序路径的更改隔离开来。


例如,如果在thisJSP.jsp访问您的JSP(名为http://myhost.com/myWebApp/thisJSP.jsp),则路径路径为myWebApp。因此,生成的链接href将为/myWebApp/JSPAddress.jsp

如果有一天,您决定在上下文路径为corpWebApp的另一台服务器上部署JSP,则为该链接生成的href将自动更改为/corpWebApp/JSPAddress.jsp,而无需您做任何工作。< / p>

答案 1 :(得分:2)

在JSP表达式语言中使用request.getContextPath()而不是${pageContext.request.contextPath}

<%
String contextPath = request.getContextPath();
%>
out.println(contextPath);

输出:willPrintMyProjectcontextPath

答案 2 :(得分:1)

在您的jsp页面上添加<%@ page isELIgnored="false"%>

答案 3 :(得分:0)

对于我的项目设置,“ $ {pageContext.request.contextPath}” =表示“ src / main / webapp”。另一种告诉方法是在Eclipse中右键单击您的项目,然后转到“属性”:

enter image description here