JSP中转发和重定向的区别?

lingkaijlgs 2008-05-15 05:35:00
<jsp:forward page="xx.jsp"/>
<%response.sendRedirect("xx.jsp");%>


具体的区别是什么 ?请大家帮一下忙!非常争急!!!!
...全文
1846 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
curtguo 2010-04-14
  • 打赏
  • 举报
回复 1
我就说一点,也是比较重要的。
转发是同一个请求。由服务器端帮你跳转。
而重定向是一个新的请求。相当于浏览器重新访问一个新的页面,之前请求中的值也没有了。
希望对你有帮助。
licip 2010-04-14
  • 打赏
  • 举报
回复
大家说的太好了。
  • 打赏
  • 举报
回复
面试总有这样的问题,转发与重定向的区别。
xihui912 2010-04-14
  • 打赏
  • 举报
回复
你发出一次请求  相当于一次重定向
请求之内 可以进行跳转
lixingqiang123 2010-04-14
  • 打赏
  • 举报
回复
jsp:forward 是在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到另外一个Servlet,JSP 或普通HTML文件,也即你的form提交至a.jsp,在a.jsp用到了forward()重定向至b.jsp,此时form提交的所有信息在 b.jsp都可以获得,参数自动传递.
但forward ()无法重定向至有frame的jsp文件,可以重定向至有frame的html文件,同时forward()无法在后面带参数传递,比如 servlet?name=frank,这样不行,可以程序内通过response.setAttribute("name",name)来传至下一个页面.重定向后浏览器地址栏URL不变.

response.sendRedirect()是在用户的浏览器端工作,sendRedirect()可以带参数传递,比如servlet?name=frank传至下个页面,同时它可以重定向至不同的主机上,且在浏览器地址栏上会出现重定向页面的URL.sendRedirect()可以重定向有frame的jsp文件.

1、jsp:forward动作执行的是强制性跳转,写在其后面的语句不会执行。而sendRedirect()方法跳转至页面后,还会执行后面的代码;
2、jsp:forward动作是将page的值指定的页面直接送给IE。sendRedirect()方法是告诉IE要跳转页面,IE再自动调用其参数指定值的页面,其间经过三趟通讯;
3、jsp:forwart动作切断了本面与跳转页的上下文联系,而sendRedirect()方法执行跳转后,还能使用上页传递过来的信息。
jdlsfl 2008-05-15
  • 打赏
  • 举报
回复
网上搜搜很多的

jsp:forward 是在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到另外一个Servlet,JSP 或普通HTML文件,也即你的form提交至a.jsp,在a.jsp用到了forward()重定向至b.jsp,此时form提交的所有信息在 b.jsp都可以获得,参数自动传递.
但forward ()无法重定向至有frame的jsp文件,可以重定向至有frame的html文件,同时forward()无法在后面带参数传递,比如 servlet?name=frank,这样不行,可以程序内通过response.setAttribute("name",name)来传至下一个页面.重定向后浏览器地址栏URL不变.

response.sendRedirect()是在用户的浏览器端工作,sendRedirect()可以带参数传递,比如servlet?name=frank传至下个页面,同时它可以重定向至不同的主机上,且在浏览器地址栏上会出现重定向页面的URL.sendRedirect()可以重定向有frame的jsp文件.

1、jsp:forward动作执行的是强制性跳转,写在其后面的语句不会执行。而sendRedirect()方法跳转至页面后,还会执行后面的代码;
2、jsp:forward动作是将page的值指定的页面直接送给IE。sendRedirect()方法是告诉IE要跳转页面,IE再自动调用其参数指定值的页面,其间经过三趟通讯;
3、jsp:forwart动作切断了本面与跳转页的上下文联系,而sendRedirect()方法执行跳转后,还能使用上页传递过来的信息。
w111222j 2008-05-15
  • 打赏
  • 举报
回复
转发使用的是同一直请求对像

你向request对像里面存放的attribute到另外一个页面去了,可以用request.getAttribute取出来
而且转发,只能转发到你当前WEB工程下面的页面


而重定向不是使用的同一个请求对像,不过可以转发到所有的URL
如可以转发到新浪www.sina.com
renxiaoyao868 2008-05-15
  • 打赏
  • 举报
回复
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。
fuyou001 2008-05-15
  • 打赏
  • 举报
回复
<jsp:forward page="xx.jsp>是服务器做出反应,客户端不知道,所以不是第一次的URL
相返,response.sendRedirect("xx.jsp");是客户端处理的,所以URL要改变成对应的URL
dracularking 2008-05-15
  • 打赏
  • 举报
回复
这个网上搜搜很多的
forward是服务器内部的跳转 不经由客户端 而重定向则相反 对客户端而言是可探知的 表现在URL上 且属于第二次请求 第一次的request等信息会丢失
等等

sendRedirect

Sends a temporary redirect response to the client using the specified redirect location URL. This method can accept relative URLs; the servlet container must convert the relative URL to an absolute URL before sending the response to the client. If the location is relative without a leading '/' the container interprets it as relative to the current request URI. If the location is relative with a leading '/' the container interprets it as relative to the servlet container root.
If the response has already been committed, this method throws an IllegalStateException. After using this method, the response should be considered to be committed and should not be written to.



jiatai416 2008-05-15
  • 打赏
  • 举报
回复
比如你有jsp1,jsp2。从1到2的重定向,你的地址栏中的地址是jsp1的。转发的话地址是jsp2的。

81,095

社区成员

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

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