JSP页面脚本路径

学Web开发没多久,这些路径问题就搞得很头大,今天遇到了一个问题,解决了,记录下来,方便之后查看!

MyWeb的目录结构:
1.首先在Servlet中,我想要转发到 test.jsp , 这里就需要一个路径的问题了

这时候只要把 当前目录当成是 WebContent这个目录

request.getRequestDispatcher("/jsp/test.jsp").forward(request, response);


这样就可以完成jsp的转发了
Servlet转发到jsp是简单,但是真正棘手的问题是JSP里面引用 JS,CSS,Images等的问题了

这个弄得我晕头转向的
比如:现在我们要在jsp中引用 js目录下的jquery.js文件

在讲问题之前分析几种错误的方法:

错误1:

有的网友可能使用相对路径(因为转发后是test.jsp, 所以想当然):以为会是” ../js/jquery.js “

用:<script src="../js/jquery.js" type=text/javascript></script>
错误2:

居然相对路径不行,那么能不能用绝对路径呢,像Servlet转发的时候那样子呢

用:<script src="/js/jquery.js" type=text/javascript></script>

这几种方法都是错误的!!!!
原因来跟大家掰和一下:
test.jsp是保存在Server中的/jsp/test.jsp目录中


但从Servlet转发过来浏览器是不知道/jsp/目录的存在(转发的时候,浏览器上的地址栏路径是不是没有改变)

所以服务器端/jsp/目录并不会对相对路径产生影响

所以你如果要使用相对路径来的话,那么我们必须找到该web工程的当前在服务器中的根目录(WebContent)
那么如何表示WebContent目录呢?

Scheme://ServerName:ServerPort/ContextPath/


(如: http://localhost:8080/Context Path/)

这个就是我们想要的WebContent根目录的表达形式,那么怎么在JSP中得到这个路径呢
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

然后我们就可以把该JSP的base设置成这个basePath了

在<head></head>标签中加入

<base href="<%=basePath%>">

就行了
这时候我们就可以通过

<script src="js/jquery.js" type=text/javascript></script>

这种方式在JSP中引用JS了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值