关于web访问路径

  今天突然被同学问到关于web的访问路径问题,很简单的他需要从一个jsp文件链接到另外的一个文件,可是一直报404

在getUserInfo.jsp中写了test链接报404.

假如此项目是直接部署到web的ROOT目录下面的话,那么这个问题并不会出现,可是我们要想到他部署是另外的一个项目,那么也许在我们常用的http://localhost:8080/webname/index.jsp  正确的目录也许是这样 但是如果直接用 /index.jsp 的话,tomcat会默认为http://localhost:8080/index.jsp “/”对应的是tomcat的ROOT目录,所以导致访问的页面不正确,其实在很多的web项目中都会遇到一些路径问题,如何解决了?

把下面部分写到path.jsp

String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
request.setAttribute("basePath",basePaht);

可以在需要的页面导入<%@ include file="/path.jsp" %>

然后采用

<a href="${basePath}/index.jsp"></a>
或者<a href="${basePath}/jsp/getUserInfo.jsp"></a>
顺便记下各种获取路径的方式:
getScheme:<%=request.getScheme() %><br/>
ContextPath:<%=request.getContextPath() %><br/>
getServerName:<%=request.getServerName() %><br/>
getServerPort:<%=request.getServerName() %><br/>
getContextPath: <%=request.getContextPath() %><br/>
getRealPath: <%=request.getSession().getServletContext().getRealPath("/WEB-INF") %><br/>
getRequestURI:<%=request.getRequestURI() %><br/>
getScheme:http
ContextPath:/webname
getServerName:localhost
getServerPort:localhost
getContextPath: /webname
getRealPath:D:\soft\Tomcat\apache-tomcat-6.0.16\webapps\webname\WEB-INF
getRequestURI:/urlDemo/jsp/test.jsp

 

request.getContextPath() 等同于 request.getSession().getServletContext().getContextPath() 
request.getRealPath("/filename") 等同于 request.getSession().getServletContext().getRealPath("/filename")
但是request.getRealPath这个方法已经不推荐使用了。


 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值