日期:2014-05-17  浏览次数:20953 次

RequestDispatcher rd = request.getRequestDispatcher跳转页面出现问题
我使用RequestDispatcher rd = request.getRequestDispatcher跳转页面的时候,css样式,图片以及js均不会加载,这是为什么?
如果用response.sendRedirect就不会出现此问题。
那么我要使用request.getRequestDispatcher跳转页面,还需要页面正常显示,需要怎么做呢?
新手求详细解答。在线等答案。

------最佳解决方案--------------------
在页面中引用样式和其它资源的时候,尽量不要用相对路径,因为“当前路径”这个概念在J2EE中是不稳定的。

所以最好都是绝对路径,类似于:
  <% String cp = request.getContextPath();%>  这句放JSP页面开头
  <img src="<%=cp%>/images/xxoo.jpg" />  后面都类似这么写

其中前面的<% %>这段文字主要是得到你应用发布的Context名称
------其他解决方案--------------------
引用:
在页面中引用样式和其它资源的时候,尽量不要用相对路径,因为“当前路径”这个概念在J2EE中是不稳定的。

所以最好都是绝对路径,类似于:
  <% String cp = request.getContextPath();%>  这句放JSP页面开头
  <img src="<%=cp%>/images/xxoo.jpg" />  后面都类似这么写

其中前面……

应该不是这个关系,我试了一下绝对路径,也是这个效果。
关键在于RequestDispatcher rd = request.getRequestDispatcher不好使,而request.getRequestDispatcher却可正常加载
------其他解决方案--------------------
我认为95%概率就是绝对路径问题,如果你觉得不是绝对路径问题的话,可以注意观察下:

你用 sendRedirect进行页面跳转后,IE浏览器的地址栏是啥;(是跳转后JSP页面的位置,后续所有资源的相对路径访问以此为基础)
你用 forward 进行跳转后,IE浏览器的地址栏是啥;(是Servlet的位置,后续所有资源的相对路径访问以该Servlet路径为基础)
------其他解决方案--------------------
可以查看网页源代码,通过图片链接查看图片路径,楼上答案正解。
------其他解决方案--------------------
你所说的绝对路径是D:/XXX/XXX/XXXX 这样?
?
------其他解决方案--------------------
是绝对路径问题 感谢二楼 解答的这么详细
------其他解决方案--------------------
引用:
引用:在页面中引用样式和其它资源的时候,尽量不要用相对路径,因为“当前路径”这个概念在J2EE中是不稳定的。

所以最好都是绝对路径,类似于:
  <% String cp = request.getContextPath();%>  这句放JSP页面开头
  <img src="<%=cp%>/images/xxoo.jpg" />……

那么我的context.xml文件里应该怎么配置?  这个路径的读取我没接触过,麻烦解答一下
------其他解决方案--------------------
不需要你对context.xml做啥特殊配置。

request.getContextPath() 这个中间件自身提供支持。。。
------其他解决方案--------------------
我用了这个request.getContextPath() 仍然不能显示,后来发现request.getContextPath()只能获得根目录的绝对路径,但是我要像正常显示网页的话,需要将整个项目的绝对路径写出来,类似于:
------其他解决方案--------------------
类似于:H:/eclipse_workplace/smkt/WebContent/jsp/css/style.css  我应该如何写?
------其他解决方案--------------------
引用:
不需要你对context.xml做啥特殊配置。

request.getContextPath() 这个中间件自身提供支持。。。

现在运行项目,图片可以正常加载,但是js文件仍然没反应,无论绝对路径还是相对路径我都试过了,这个跟eclipse的版本有关系还是我的代码有问题啊?
------其他解决方案--------------------
引用:
类似于:H:/eclipse_workplace/smkt/WebContent/jsp/css/style.css  我应该如何写?


绝对不是这样的地址。。。。。。我十分不理解你的应用是怎么发布出去的。。。

HTML上的绝对地址,一般指从服务器根开始的地址,比如一个完整地址是:
    http://localhost:8080/myapp/jsp/css/style.css
那么在HTML页面中,绝对路径就是:
    /myapp/jsp/css/style.css