getRequestDispatcher地址问题!!在线!!!急用!!!

fyumin 2008-07-11 03:06:09
我有两个目录 image /图片
page /jsp页面
我在Servelt里用到
request.getRequestDispatcher("/page/regedit.jsp").forward(request,response);
但我regedit.jsp里面的图片的路径全丢了!!!
对此小弟十分郁闷,特请高手指点。

在线等待答复。速回!!!
...全文
465 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengzi_shen 2008-11-25
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 zhengbr 的回复:]
因为你在显示图片的页面的图片路径是针对你现在这个页面的,你提交后是转发,而不是重定向,所以就请求不到你的图片,也许我说的不太清楚,但意思就是转发过来后可能会找不到你的图片,因为在地址栏上的路径不是你网页的路径,而是
action的路径.
[/Quote]
原来是这样啊!说的非常好,我理解了
那我们应该怎么解决呢?
hemaily 2008-07-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 heliangtai 的回复:]
我认为解决的办法是:将项目跑起来,在图片显示的地方看属性,看看这儿的图片道底是处于什么位置。知道位置后处理起来就容易了。jsp路径很烦人的。使用绝对路径可能会好点。本人刚从事java开发,对这个问题不太了解,只是给出自己的看法。
[/Quote]
B1977 2008-07-12
  • 打赏
  • 举报
回复
因为你在显示图片的页面的图片路径是针对你现在这个页面的,你提交后是转发,而不是重定向,所以就请求不到你的图片,也许我说的不太清楚,但意思就是转发过来后可能会找不到你的图片,因为在地址栏上的路径不是你网页的路径,而是
action的路径.
heliangtai 2008-07-12
  • 打赏
  • 举报
回复
我认为解决的办法是:将项目跑起来,在图片显示的地方看属性,看看这儿的图片道底是处于什么位置。知道位置后处理起来就容易了。jsp路径很烦人的。使用绝对路径可能会好点。本人刚从事java开发,对这个问题不太了解,只是给出自己的看法。
StanleyChi 2008-07-12
  • 打赏
  • 举报
回复
request.getRequestDispatcher("/page/regedit.jsp").forward(request,response);
该称不用request获取委托对象改用
getServletContext().getRequestDispatcher("/page/regedit.jsp").forward(request,response);
这种方法要传入的参数是第二个资源相对于servlet上下文根的路径即从“/”开始的
toraji 2008-07-11
  • 打赏
  • 举报
回复
。。。。。。。。
放在page下的页面需要使用的图片都在pic下,那么html代码应该写img src="../pic/xxx.jpg"
。。。。。。。。。。
应该就是这里的问题
你把所有的"../pic/xxx.jpg",换成“/context/pic/xxx.jpg”
保证没问题
chjx1982 2008-07-11
  • 打赏
  • 举报
回复
肯定是图片路径的问题,你把图片路径写成相对项目路径,比如,你的WebRoot下面有一个文件夹是img放图片的,那图片的路径写成/img/xxx.jpg,就能显示出来了。
fyumin 2008-07-11
  • 打赏
  • 举报
回复
那这样。假如说:
我的web项目目录结构为
/context/page/存放页面
/context/pic/存放图片
放在page下的页面需要使用的图片都在pic下,那么html代码应该写img src="../pic/xxx.jpg"
这样的话,直接打开这个页面是没问题。
可是我用servlet里的request.getRequestDispatcher forward到这个页面,页面上的图片路径就不对了。servlet路径是直接映射为context下的,比如/context/LoginServlet

我看用request.getRequestDispatcher之后那些图片的路径就都变成/context/pic/xxx.jpg了
http://localhost:8080/pic/xxx.jpg了,感觉forward后的页面都以context为相对路径了,于是“..”就到了根目录....
是不是request.getRequestDispatcher的关系?

但是用response.sendRedirect的话就没有这个问题了。
我清楚sendRedirect和forward的区别,但不知道forward后的页面里的元素怎么路径会有这个问题
toraji 2008-07-11
  • 打赏
  • 举报
回复
另外建议引用图片的时候
尽量使用绝对路径
即:
/site/image/...jpg
这样的话是不可能出现问题的
toraji 2008-07-11
  • 打赏
  • 举报
回复
不清楚你的目录结构:
还不行把/去掉
request.getRequestDispatcher("regedit.jsp").forward(request,response);
toraji 2008-07-11
  • 打赏
  • 举报
回复
改成
request.getRequestDispatcher("/regedit.jsp").forward(request,response);
再试一下。
Ant 2008-07-11
  • 打赏
  • 举报
回复
那么你直接访问 "page/regedit.jsp" 页面的时候图片能正常显示么?

建议用在Jsp中可以用<%=request.getContextPath()%>来检查当前的路径是否正确
zhbking 2008-07-11
  • 打赏
  • 举报
回复
这大概是跟你的Servlet的Url-pattern有关.

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧