jsp&servlet相对路径总结

系统 1714 0
先定义几个替换:
http://localhost:8080/           =>  ip/
/mywar/                          =>  war/
http://localhost:8080/mywar/     =>  ip/war/
/mywar                           =>  [contextpath]  (request.getcontextpath())
总结如下:
1. 在jsp中的“/”表示的根为“ip”,不包含war路径

2. 在servlet中以forward方式使用的“/”表示的根为“ip/war/”,包含了war路径

3. 在servlet中以sendredirect方式使用的“/”表示的根为ip,不包含war路径

4. 在servlet中以forward方式跳转,则浏览器的地址栏仍然为此servlet,不会改动

5. 在servlet中以sendredirect方式跳转,则浏览器的地址栏改动为目的路径

6. 相对路径的确定是以浏览器的地址栏显示的路径为基准的,而非具体的目录结构,所以
   跳转到同目录下的某个页面使用<a href="文件名">link</a>这种方式不是永久成立的
   (做asp的人不要惊讶,这里说的jsp和servlet

7. 为了避免jsp跳jsp,servlet跳jsp,forward方式跳转,sendredirect跳转产生的路径问题, 对于jsp和使用sendredirect跳转的servlet,采用直接使用带容器路径[string request.getcontextpath()]的绝对路径就能完全解决,即:
     
    <%
          string contextpath = request.getcontextpath();
          string url = contextpath + "/user/login.jsp";
       %>
       
       <a href="<%=url%>"> login</a>
  


    
     string contextpath = request.getcontextpath();
      string targetpath = contextpath + "/user/login.jsp";
      requestdispatcher rd = request.getrequestdispatcher(targetpath);
      rd.forward(request, response);
      ......
  


   对于使用forward跳转的servlet,则不要加容器路径,否则就重复出现 容器路径,原因参见 2

8. 如果使用的“../”过多也不会出现严重问题,“../”最多使链接到达“ip/”

9. 另外,在使用
      
    <jsp:include page = "url" flush="true"/>
       <%@ include file="url" %>
       <%@ page errorpage = "url" %>
  
时, 这里url使用的“/”表示的根为“ip/war/”,包含了war路径

jsp&servlet相对路径总结


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论