使用JSP进行转发时出现的路径问题

问题描述

今天在公司测试使用一个新框架时出现了一个奇怪的问题,当在浏览器中直接访问jsp页面时一切正常,但是在servlet进行转发到这个页面时,框架的JS就无法正确执行了,但是使用重定向一切正常。当时困扰了好久,后来和同事一起排查才发现是由于servlet在进行转发时使用的上下文路径还是servlet路径,而不是jsp的路径,所以只要改下路径就行了。

解决方案

将相对路劲变为决定路径,如:

             以前错误的引用格式(相对路径)

<script src="../js/jquery.min.js"></script>

            改为正确的格式(绝对路径)

<script src="<%=request.getContextPath()%>/js/jquery.min.js"></script>

问题背后

其实这个问题的解决方案很简单,但是在我们应该看到问题背后的一些东西,比如下面这句话的效果

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

其实是servlet 去读取 jsp/demo.jsp文件,然后使用response.getOutputStream()将文件数据输出到浏览器中,所以这里的路径依旧是servlet的路径,而不是jsp/demo.jsp的路径,其实通过浏览器上面的路径也可以看出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值