Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这个表达式语言${pageContext.request.contextPath}在JSP EL中到底做了什么?_Java_Jsp_El - Fatal编程技术网

Java 这个表达式语言${pageContext.request.contextPath}在JSP EL中到底做了什么?

Java 这个表达式语言${pageContext.request.contextPath}在JSP EL中到底做了什么?,java,jsp,el,Java,Jsp,El,我有一个web应用程序,其中我有不同的导航锚标签,如主页、个人资料等 我想要的是: 当我按下锚定标记时,如home或profile。我只想确保当前用户在Tags/JSP页面中获取其信息 我正在尝试的示例: 页面上下文是JSP中可用的隐式对象。说 JSP页面的上下文。提供对各种对象的访问,包括: servletContext:… 会话:… 请求:… 答复: 因此,此表达式将获取当前的HttpServletRequest对象,并获取当前请求的属性,并向其追加/JSPAddress.jsp,以创建链

我有一个web应用程序,其中我有不同的导航锚标签,如主页、个人资料等

我想要的是:

当我按下锚定标记时,如home或profile。我只想确保当前用户在Tags/JSP页面中获取其信息

我正在尝试的示例:



页面上下文是JSP中可用的隐式对象。说

JSP页面的上下文。提供对各种对象的访问,包括:
servletContext:…
会话:…
请求:…
答复:

因此,此表达式将获取当前的
HttpServletRequest
对象,并获取当前请求的属性,并向其追加
/JSPAddress.jsp
,以创建链接(即使在更改访问此资源的上下文路径时,该链接也会起作用)

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


例如,如果在
http://myhost.com/myWebApp/thisJSP.jsp
,上下文路径将是
myWebApp
。因此,生成的链接href将是
/myWebApp/JSPAddress.jsp


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

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

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

out.println(contextPath);
输出:将PrintMyProjectContextPath包含在jsp页面顶部。

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


${pageContext.request.contextPath}
${request.contextPath}
之间有什么区别?@MeBigFatGuy我不相信
request
是EL中的隐式对象(不过有一个
requestScope
)-获取请求实例引用的方法是通过OPs片段中的
pageContext
。将鼠标放在
[el]
标记上方,然后单击popbox上的“info”链接。不鼓励使用片段,不应再使用片段。表达式语言是实现这一点的正确方法,并且已经存在很长时间了。@Kjetilnodin从脚本中知道您必须执行
request.getContextPath()
,而不是
pageContext.getRequest().getContextPath()
这将是从JSP到scriptlet的简单翻译。答案并没有回答问题的标题。接受的答案已经声明pageContext在JSP中是隐式的。这个答案是没有用的,它是噪音,并参考不鼓励的编码方式。它也比公认的答案早了三年,而且根本不需要提及非常过时的做法。所以我尊重地不同意你的评论@MarcusJuniusBrutusDhanywaada,对我来说,expressionlanguage被忽略了。
<%
String contextPath = request.getContextPath();
%>
out.println(contextPath);