【JSP】JSP项目相对路径与绝对路径问题

    很多人写网页的时候都会用相对路径,也不知道是不是习惯问题吧,其实我以前也一直都是用相对路径的,直到最近做项目的时候出现路径问题。我想应该有不少人遇到过这样的情况:当使用服务器跳转,例如:forward指令的时候,会发现,页面的样式没了。其实这就是路径的问题。

    同样一个页面,客户端跳转服务器跳转的相对路径是不一样的。服务器的跳转都是相对于http://localhost:8080/项目名/,而客户端的跳转是相对于页面所在文件夹的位置。举个例子:


    如果login.jsp是通过客户端跳转到personInfo.jsp,那么personInfo.jsp里面引用CSS的相对路径是../css/personInfo.css。但是如果login.jsp是通过服务器跳转到personInfo.jsp,那么personInfo.jsp里面应用css的相对路径是css/personInfo.css,而这个时候personInfo.jsp页面中其它用到URL的相对路径也会改变,这是因为服务器跳转是相对http://localhost:8080/项目名/而言的。因此会引起很多麻烦,为了解决这个问题,可以使用绝对路径。

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

    在页面的<html>中使用<base>标签,这样就可以解决服务器跳转与客户端跳转引起的问题。这方法其实就是使用了绝对路径,那么页面中的所有URL路径都要根据它的所在位置来写,举个例子:personInfo.jsp的链接URL是jsp/personInfo.jsp,这样子页面的URL也就统一了,也方便阅读。但是有一点需要注意的,CSS中的引用的URL路径不需要进行任何修改,还是使用原来的相对路径,例如../images/login.jpg,但是JS中的URL需要修改,也是使用images/login.jpg这样相对http://localhost:8080/项目名/的路径。

    我个人觉得在项目中通过上面那段代码来使用绝对路径是比较好的,这样子无论JSP页面怎么放,CSS样式都不会出问题,而且修改了项目的名也没关系,这样子部署项目很方便。即使JSP页面是放在WEB-INF里面,它链接的CSS和JS也不会有问题。这样之后就不用再考虑服务器跳转和客户端跳转之后相对路径不一致的问题了。

Author:立礼

Sign:人生不要有太多的幻想,而要有更多的行动。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值