jsp文件里面跳转时的路径问题

在jsp里面经常会有跳转,就涉及到绝对路径和相对路径的问题。

绝对路径一般的表示

“./”表示的是当前目录

“../”表示上级目录,"../.../"表示上级目录的的上级目录

举一个例子

WebContent下面有index.jsp,即WebContent/inde.jsp.

WebContent下面有个jsp子目录,jsp子目录下面有个hello.jsp.


在12行 Say Hello是一个链接,即index.jsp要跳转到hello.jsp。

浏览器中的访问路径:http://localhost:8080/SpringMVC/

这样就返回了index.jsp页面,

但是浏览器中的地址是不变的,还是http://localhost:8080/SpringMVC/


index.jsp是默认的拦截页面,所有的跳转都是相对SpringMVC而言

跳转的方式有两种:

1.相对路径:

就是上图中展示的  href="./jsp/hello.jsp"这是相对路径,“./”代表的是当前根目录,

这样的表示方式就可以顺利跳转到hello.jsp页面,






再看一种情况,

index.jsp跳转到hello.jsp页面

此时浏览器中的路径变为:

http://localhost:8080/SpringMVC/jsp/hello.jsp


创建的目录结构如上图

现在浏览器展示的hello.jsp页面,浏览器中的地址为:http://localhost:8080/SpringMVC/jsp/hello.jsp.

跳转的链接为:<a href="../successful/success.jsp">success.jsp</a>,"../successful"就返回到它的上级目录,浏览器的地址会变为:http://localhost:8080/SpringMVC/

浏览器会接着执行路径:successful/success.jsp,完整的路径变为http://localhost:8080/SpringMVC/successful/success.jsp,这也是页面跳转完成后浏览器中的路径显示。



再看绝对路径:

只要我们每次在访问的路径前面加上basePath=http://localhost:8080/SpringMVC/,就不能考虑到底有几层目录,

假设一个jsp有两层目录比如index.jsp页面,那么一个页面要跳转到index.jsp的跳转链接就可以表示为basePath+/index/myindex/index.jsp,

这样就不用考虑文件的位置问题了

在jsp中获得basePaht的方式:

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


request.getScheme()获取的是协议名称,即http

request.getServerName H获取的是域名,本地服务器域名就是localhost

request.getServerPort()获取端口号

request.getContextPath()返回站点的根目录 就是SpringMVC

跳转链接就可以写成

 <a href="<%=basePath %>/jsp/hello.jsp">Say Hello</a>  
     <a href="<%=basePath %>/successful/success.jsp">success</a>

这样的形式












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值