日期:2014-05-18  浏览次数:20781 次

在servlet转向jsp页面的路径问题
在servlet中,JSP页面的路径为 "/××/××.jsp ",然后我用
requestDispatcher   rd=request.getRequestDispatcher( "/××/××jsp ");
rd.forward(request,response);
转向××.jsp页面,转向后所有的图片都无法显示了,超链接也不对了。

  我从浏览器查看源文件,发现图片的路径和超链接都是跟××.jsp文件中的一样
不知道这是怎么回事。

  本人刚注册不久,所以分少,望各位大虾帮帮忙。


------解决方案--------------------
requestDispatcher 对象可以有两中方式获得
1.通过request对象的getRequestDispatcher方法获得
2.通过ServletContext的getRequestDispatcher方法获得,但是这个方法获得的requestDispatcher 对象中的path必须以“/”开头,代表应用程序根目录,而第一中方法获得的requestDispatcher 对象则没有这种限制

不管是那种方式获得的,只要以 "/ "开头就代表应用程序根目录。你的问题出在jsp页面中链接和图片的路径使用都是相对路径,转向后的相对路径还是相对于你的Servlet所在的路径
比如你的servlet的地址是/servlet/myservlet,重定向到/aaa/bbb/myjsp.jsp后,这个jsp页面中图片的相对路径是img/aa.jpg,则此时图片的完整路径就变成了/servlet/img/aa.jpg,所以就显示不出来了。解决方案是把图片的路径写成 <img src= <%=request.getContextPath()%> "/img/aa.jpg "> 或者 <img src=${pageContext.request.contextPath} "/img/aa.jpg "> ,其它的链接也得改

------解决方案--------------------
根据情况就可以,大部分时候还是在同一个目录下进行页面跳转,相对路径就可以。跨目录时就用绝对路径。