关与servlet中dispatcherURL转向的疑问

Dekn 2004-12-20 01:31:27
我在程序中使用了dispatcher来进行页面的转向,但感觉总是不太方便,即他是服务器端的转向,而用户在浏览器中看到的,还是那个servlet的页面,并不能看到URL中也更新到了新页面,这样可就麻烦了,我的/do这个servlet在根目录,而我转向的页面在/hello/test/abc.htm,这时,我在这个abc.htm的图片引用路径是相对路径,即../images这样的路径,而这时,由于 URL 中还是/do?action=heelo,就这样,这个abc.htm的所有图片就看不到了。  除非我把abc.htm的所有图片路径改成绝对路径。

我说的问题,其实是这个dispatcher自身的问题,如果我用JSP中的forward,我就不知道,我从A.jsp转到b.jsp,我如果把a.jsp中的各变量(attribute、param)带到b.jsp中,但是我用dispatcher,我可以使用request.setAttribute();

以上问题,请赐教。谢谢
...全文
144 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
pmaster 2004-12-23
  • 打赏
  • 举报
回复
不清楚,但给你顶上去!
形印声传 2004-12-23
  • 打赏
  • 举报
回复
楼上的,我有疑问,如果放在session里的话,很多情况下不合适
只有整个应用中都可能用到的全局的信息我才会放到session里,如果页面间的传值都用session 的话,那么session里的东西就太多了,而且,大多数情况下,操作只在一个request之间,过了这个request,就不需要了,在这 种情况下,还是用request.setAttribute()比较好。
jFresH_MaN 2004-12-23
  • 打赏
  • 举报
回复
放在session里面啊
request.sendRedirect()是不能通过request.getAttribute()来传值的
Dekn 2004-12-23
  • 打赏
  • 举报
回复
up
Dekn 2004-12-21
  • 打赏
  • 举报
回复
我现在是这样的,目前,我在我的WEB程序中,利用dispatch进行页面的转向,但dispatch是容器内的转向,客户端URL并没有发生变化。但是,由与种种需要,我必须要使客户端的URL也跟着变化。请问,在使用dispatch时,我应该如何处理

如果使用request.sendRedirect()的方法,则客户端的URL会变,但是,我这时,就有一疑问,就是我如何将一个数据对象传给那个转向的页面?如有一个list对象,要传到目标URL中显示.
louisbadbad 2004-12-20
  • 打赏
  • 举报
回复
搂主的变量更换问题可以用session来实现,至于图片的问题我觉得是你设计方面的问题。最好的方法就像楼上所说得你应该在主目录下设置图片。另外就是servlet其实是在web.xml下设置你的url-pattern,这样来控制你的url方式,hj821003(荒原小草)说得没错。楼主说的意思,我说实话是没怎么看明白!!
hj821003 2004-12-20
  • 打赏
  • 举报
回复
你也可以在web.xml中把servlet映射到和所要转发的jsp的同一目录下面,这样当转发过去以后前url位置就是jsp文件的当前位置,image和css引用不用变。
eg:
站点墟拟路径:http://localhost/test,
a.jsp的位置:http://localhost/test/manage/a.jsp
servlet映射:
<servlet-mapping>
<servlet-name>testservlet</servlet-name>
<url-pattern>/manage/testservlet</url-pattern>
<servlet-mapping>

servlet转发:
RequestDispatcher dis=request.getRequestDispatcher("a.jsp");
dis.forward(request,response);
现在地址栏的url虽然没有变,但实际路径已经在http://localhost/test/manage/下。

请求servlet的链接:<a href="/manage/testservlet">click me</a>
jFresH_MaN 2004-12-20
  • 打赏
  • 举报
回复
forward也就是dispatch是转发请求,但地址不变的
如果你要改变地址的话就使用request.redirect(url);

还有你说路径问题,一般图片这样的公用的东西最好是在根目录下面建一个文件夹放进去,以后只要用绝对路径就行了
"/folder/img"
eureka0891 2004-12-20
  • 打赏
  • 举报
回复
大概明白楼主说的forward里的路径的问题,
可以用绝对的,这些大部分是common的,或者是图片,js等,
一般放在一个固定的目录下来组织就没问题了
Dekn 2004-12-20
  • 打赏
  • 举报
回复
up

81,091

社区成员

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

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