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名称
------其他解决方案--------------------
应该不是这个关系,我试了一下绝对路径,也是这个效果。
关键在于RequestDispatcher rd = request.getRequestDispatcher不好使,而request.getRequestDispatcher却可正常加载
------其他解决方案--------------------我认为95%概率就是绝对路径问题,如果你觉得不是绝对路径问题的话,可以注意观察下:
你用 sendRedirect进行页面跳转后,IE浏览器的地址栏是啥;(是跳转后JSP页面的位置,后续所有资源的相对路径访问以此为基础)
你用 forward 进行跳转后,IE浏览器的地址栏是啥;(是Servlet的位置,后续所有资源的相对路径访问以该Servlet路径为基础)
------其他解决方案--------------------可以查看网页源代码,通过图片链接查看图片路径,楼上答案正解。
------其他解决方案--------------------你所说的绝对路径是D:/XXX/XXX/XXXX 这样?
?
------其他解决方案--------------------是绝对路径问题 感谢二楼 解答的这么详细
------其他解决方案--------------------
那么我的context.xml文件里应该怎么配置? 这个路径的读取我没接触过,麻烦解答一下
------其他解决方案--------------------不需要你对context.xml做啥特殊配置。
request.getContextPath() 这个中间件自身提供支持。。。
------其他解决方案--------------------我用了这个request.getContextPath() 仍然不能显示,后来发现request.getContextPath()只能获得根目录的绝对路径,但是我要像正常显示网页的话,需要将整个项目的绝对路径写出来,类似于:
------其他解决方案--------------------类似于:H:/eclipse_workplace/smkt/WebContent/jsp/css/style.css 我应该如何写?
------其他解决方案--------------------
现在运行项目,图片可以正常加载,但是js文件仍然没反应,无论绝对路径还是相对路径我都试过了,这个跟eclipse的版本有关系还是我的代码有问题啊?
------其他解决方案--------------------
绝对不是这样的地址。。。。。。我十分不理解你的应用是怎么发布出去的。。。
HTML上的绝对地址,一般指从服务器根开始的地址,比如一个完整地址是:
http://localhost:8080/myapp/jsp/css/style.css
那么在HTML页面中,绝对路径就是:
/myapp/jsp/css/style.css