关于jsp中路径的问题

本文探讨了在JSP中处理路径问题的方法。通过创建三个JSP文件,作者分析了相对路径、绝对路径以及在MyEclipse环境下路径的写法。在删除默认的配置语句后,展示了如何正确地在页面间进行跳转。此外,还提到了在Servlet中进行重定向和请求转发时路径的规范写法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

讨论这个问题,先建立3个.jsp文件,文件位置如图


为了对比,首先使用myeclipse创建.jsp文件时把下面这几句话删掉。

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<base href="<%=basePath%>">

(1)按照之前一些路径的知识,此时如果我们想从1.jsp跳转到a.jsp或者b.jsp路径应该是

<body>
    	<a href="a/a.jsp">a.jsp</a><br>
    	<a href="a/b/b.jsp">b.jsp</a>
  </body>

反过来,如果想从a.jsp或者b.jsp跳转到1.jsp,我们得这样写

<body>
   		 我是a.jsp<br>
   		 <a href="../1.jsp">1.jsp</a>
  </body>
<body>
    	我是b.jsp<br>
    	<a href="../../1.jsp">1.jsp</a>
  </body>
这种写法是使用相对路径,就是当前文件去目标文件需要经过的路径,如果将a.jsp文件移动一下,这个路径就需要变化,而且使用需要../完成跳转,如果文件夹一层套一层,写起来就很繁琐。

位置改变后的写法:

<body>
    	<a href="a/b/a.jsp">a.jsp</a><br>
    	<a href="a/b/b.jsp">b.jsp</a>
  </body>
<body>
   		 我是a.jsp<br>
   		 <a href="../../1.jsp">1.jsp</a>
  </body>
<body>
    	我是b.jsp<br>
    	<a href="../../1.jsp">1.jsp</a>
  </body>

(2)这时可以使用绝对路径。/虚拟项目名/文件路径,比如此时各路径写法:

 <body>
    	<a href="/jsp/a/b/a.jsp">a.jsp</a><br>
    	<a href="/jsp/a/b/b.jsp">b.jsp</a>
  </body>
<body>
   		 我是a.jsp<br>
   		 <a href="/jsp/1.jsp">1.jsp</a>
  </body>
<body>
    	我是b.jsp<br>
    	<a href="/jsp/1.jsp">1.jsp</a>
  </body>
这次,再把a.jsp的位置改回原位置,只要改变下一个路径就可以。
<body>
    	<a href="/jsp/a/a.jsp">a.jsp</a><br>
    	<a href="/jsp/a/b/b.jsp">b.jsp</a>
  </body>

(3)再把使用myeclipse创建.jsp文件时删掉的那两句话添加到jsp文件中,此时,路径写起来就很轻松了。直接写资源路径就可以。

<body>
    	<a href="a/a.jsp">a.jsp</a><br>
    	<a href="a/b/b.jsp">b.jsp</a>
  </body>
<body>
   		 我是a.jsp<br>
   		 <a href="1.jsp">1.jsp</a>
  </body>
<body>
    	我是b.jsp<br>
    	<a href="1.jsp">1.jsp</a>
  </body>
所以,myeclipse创建.jsp文件时删掉的那两句话,其实相当于给我们写了一个   /项目名/  

最后,在servlet中重定向时,路径最好写为:/虚拟项目名/资源路径

请求转发时,路径写为:   /资源路径








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值