使用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的路径,其实通过浏览器上面的路径也可以看出来。

猜你喜欢

转载自blog.csdn.net/callmev6/article/details/81185240