在JSP EL中,这个expression式语言$ {pageContext.request.contextPath}究竟做了什么?
我有一个networking应用程序,我有不同的导航定位标记,如家庭,个人资料等。
我想要的是:
当我按像主页或configuration文件的锚标签。 我只是想确保当前用户在标签/ JSP页面中获取它的信息。
示例我正在尝试的示例:
<a href="${pageContext.request.contextPath}/JSPAddress.jsp">Profile</a>
pageContext
是JSP中可用的隐式对象。 EL文件说
JSP页面的上下文。 提供访问各种对象,包括:
servletContext:…
会议:…
请求:…
回应:…
因此,这个expression式将得到当前的HttpServletRequest
对象,并获取当前请求的上下文path ,并附加/JSPAddress.jsp
来创build一个链接(即使在更改时访问该资源的上下文path也是可行的)。
这个expression式的主要目的是保持链接与应用程序上下文的“相对”,并将它们与应用程序path的变化隔离。
例如,如果您的JSP(名为thisJSP.jsp
)在http://myhost.com/myWebApp/thisJSP.jsp
上访问,则myWebApp
path将为myWebApp
。 因此,生成的链接href将是/myWebApp/JSPAddress.jsp
。
如果有一天,您决定在另一台服务器上部署corpWebApp
上下文path的corpWebApp
,则为链接生成的href将自动更改为/corpWebApp/JSPAddress.jsp
而无需任何工作。
在jsp页面的顶部添加<%@ page isELIgnored="false"%>
。
在JSPexpression式语言中使用request.getContextPath()
而不是${pageContext.request.contextPath}
。
<% String contextPath = request.getContextPath(); %> out.println(contextPath);
输出:willPrintMyProjectcontextPath