黑马程序员技术交流社区

标题: 关于request和response页面跳转 [打印本页]

作者: 孙宇    时间: 2011-8-15 20:21
标题: 关于request和response页面跳转
在servlet中经常的使用到这两个对象,在request的getRequestDisapatch("url").forward(request,response);
和response中的sendRidect()都可以实现页面跳转的功能,既然都可以实现页面跳转,那么为什么要定义2个跳转方法,还是说它们有什么很大的区别;
作者: 石宗银    时间: 2011-8-15 21:54
request的getRequestDisapatch("url").forward(request,response);
     转发,服务器端跳转,地址栏无变化,这时可以传request过去的,即可以存些东西放在request中,,传过去,,还能对
  response的响应页面作些事情,比如打印,,设置编码什么的,,

response.sendRidect();
    重定向,客户端跳转,地址栏变化,,这个相当于是一个新的会话了,,
[ 本帖最后由 石宗银 于 2011-08-15  21:59 编辑 ]
作者: 匿名    时间: 2011-8-15 21:56
有变化和无变化 有什么用啊?
作者: 匿名    时间: 2011-8-15 21:59
地址栏变不变  作用好像不大吧?
作者: 匿名    时间: 2011-8-15 22:00
forward只能重定向到同一个WEB应用中的一个资源,而sendRedirect可以重定向到任何URL
作者: 匿名    时间: 2011-8-15 22:02
怎么可能 只要URL正确   都可以做任何 页面的跳转
作者: 匿名    时间: 2011-8-15 22:03
因为在不同的请求之间request是不共享的,如果你还想在a.jsp继续用到该request,则不应该用重定向,而用转发:
request.getRequestDispatcher("a.jsp").forward(request,response)
作者: 匿名    时间: 2011-8-15 22:08
:handshake 嗯,同意楼上的意见,
作者: 匿名    时间: 2011-8-15 22:10
我也同意这个说法
作者: 匿名    时间: 2011-8-16 12:39
服务器端跳转<jsp:forward> 与客户端跳转(超链接,response.sendiRect(""))的区别:服务器端跳转地址栏不会发生变化,可以访问到request    session  application作用域中的属性,使用<jsp:param>传递参数,跳转语句后的内容不会执行。客户端跳转地址栏会发生变化,可以访问到session  application作用域中的属性,使用URL重写方式传递数据。先执行完所有的内容后再跳转。如果你使用客户端跳转,你传递的所有数据都会在地址栏中显示出来,如果你用网上银行的话,也许你输入你在银行卡密码时它就会在地址栏中显示出来,试问如果真是这样的话,你有什么感觉呢?
作者: 匿名    时间: 2011-8-18 16:32
getRequestDisapatch("url").forward(request,response)方法:
1.是在服务器端进行跳转的
2.地址栏不会改变
3.request是一样的,这样可以实现数据共享
4.客户端只发送一次请求

sendRidect()方法:
1.在客户端进行跳转
2.地址栏会改变
3.request是不一样的
4.客户端发送2次请求
作者: 匿名    时间: 2011-8-19 10:37
那位大哥,大姐给我发一份web开发视频的PPT和源码,万分感谢    这是我的邮箱[email]847805430@qq.com[/email]




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2