JSP和servlet中的页面路径概念

3
这两者之间有什么区别?
在JSP中:
${pageContext.request.contextPath} 

如果不使用表达式语言和servlet编码,如何实现相同的结果?

request.getServletPath() 

如果使用JSP编码,如何实现同样的结果?


对我来说,这个API调用和这个API调用之间似乎有所不同... this API callthis API call - Makoto
我需要掌握其含义的细节。 - kevin
3个回答

5

${pageContext.request.contextPath}:返回请求URI的一部分,指示请求的上下文。实际上,它与request.getContextPath()完全相同,因为${pageContext.request}是指当前请求的HttpServletRequest

例如:

http://localhost:80/myapplication/path/servlet

  • ${pageContext.request.contextPath}返回/myapplication

  • request.getServletPath()返回调用servlet的此请求URL的部分,例如/path/servlet

  • ${pageContext.request.servletPath}返回/path/servlet


很好。在表达式语言或JSTL中,request.getServletPath()的相应代码是什么? - kevin
"${pageContext.request.servletPath} 返回 /path/servlet" - 不是的!它将返回您的JSP页面所在的路径,例如/WEB-INF/view/home.jsp。 - Oleksii Morenets

2
作为对你问题的第二部分的回答:

request.getServletPath()是什么以及如何使用表达式语言在JSP中实现相同的效果?


这里是使用表达式语言等价于request.getServletPath()的方式:

${pageContext.request.servletPath}

如果您想通过表达式语言使用其他ServletRequest/HttpServletRequest方法,只需使用${pageContext.request.method},其中method是适当方法之一。


1
在由JSP处理的视图中,${pageContext.request.servletPath}返回JSP的路径,而不是来自web.xml的servlet路径。
要获取它,我使用了:${requestScope['javax.servlet.forward.servlet_path']}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接