码迷,mamicode.com
首页 > 其他好文 > 详细

${pageContext.request.contextPath}和<%=request.getContextPath()%>区别

时间:2018-08-29 14:17:35      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:最好   等价   地址   内容   页面   结果   local   表达式   host   

${pageContext.request.contextPath}等价于<%=request.getContextPath()%>!它们的意思就是取得当前项目名称(或者是--取出部署的应用程序名,不过这么说太官方了,试问有多少人知道“取出部署的应用程序名”的义)
      那么什么是当前的项目名称呢?

      技术分享图片技术分享图片

      假定你的web应用名称为hotel,这个hotel就是当前的项目名称,不过你在浏览器中输入请求路径时,例如输入http//:localhost:8080/hotel/login.jsp 

      ${pageContext.request.contextPath}或<%=request.getContextPath()%>就是从这个请求路径(URL)上截取(是截取) /hotel ,看清楚,前面是有"/",而这个“/”代表的是"http//:localhost:8080",看清楚这里是没有"/"的!

      对应到真是的物理地址,即为图中WebContent目录!

      另外,如果你是在Tomcat的server.xml文件中配置了虚拟目录,例如

      技术分享图片

      那么我们在对应的物理目录F:\javaweb中创建test_jsp.jsp文件,内容为

      技术分享图片 

      开启Tomcat,进行测试,发现输出结果为

      技术分享图片

      可以看到,此时输出为虚拟目录,并且二者完全等价!

      因此,在表单<formaction="${pageContext.request.contextPath}/hotel/login.jsp">中,这样写路径永远对,翻译过来${pageContext.request.contextPath}/hotel/login.jsp其中的含义,就是http//:localhost:8080/hotel/login.jsp,相当于你写了一全路径!当然前提是你的JSP页面等等必须放置的位置正确才可以,所以才说明路径永远正确。

       为什么这么要做呢?因为学过一些MVC模式的程序员都知道,JSP的作用是用来显示的(表现的),其他的作用最好不要在这个页面上显示,尤其是Java代码!所以就用EL表达式来替代类似有“<%%>”这样的代码格式。

${pageContext.request.contextPath}和<%=request.getContextPath()%>区别

标签:最好   等价   地址   内容   页面   结果   local   表达式   host   

原文地址:https://www.cnblogs.com/stitchZsx/p/9553026.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!