java web开发中的转发和重定向问题的理解,要的是理解

if("zhangsan".equals(name)&&"123".equals(pass))
{
request.getRequestDispatcher("../ok.html").forward(request, response);
//转发:地址不变;表单的数据在ok.html还可以取得;服务器跳转,相当于POST方式
}
else
{
response.sendRedirect("../error.html");
//重定向:地址改变;表单的数据在error.html不可以取得;客户端跳转,GET方式
}
为啥是request.getRequestDispatcher("../ok.html").forward(request, response);
为啥是response.sendRedirect("../error.html");
谁能解释解释。谢谢

一、使用方法
转发:request.getRequestDispatcher("success.jsp").forward(request,response);
重定向:response.sendRedirect("success.jsp");

二、区别
1.转发在服务器端完成的;重定向是在客户端完成的
2.转发的速度快;重定向速度慢
3.转发的是同一次请求;重定向是两次不同请求
4.转发不会执行转发后的代码;重定向会执行重定向之后的代码
5.转发地址栏没有变化;重定向地址栏有变化
6.转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-22
转发是向服务器请求了一次,在这个过程中request都有效,而重定向就不一样了,重定向其实是向服务器请求了两次,第一次向服务器请求,服务器给客户端一个响应码,客户端带着这个响应码再向服务器请求一次,request在第一次请求时有效,在第二次请求时request已被销毁,所以无效。本回答被提问者采纳
第2个回答  2011-04-22
为啥是request.getRequestDispatcher("../ok.html").forward(request, response);
是同一个request请求,可以把request里面的东西带过去新页面,url地址栏不会改变。
为啥是response.sendRedirect("../error.html");直接跳转,不能将request里面的东西带过去,url地址栏会改变。追问

能再详细点吗···,本人菜鸟哦
为啥不是 response.getRequestDispatcher("../ok.html").forward(request, response);

追答

两种方式都可以,只是看你需不需要用到request,需要用到request就用response.getRequestDispatcher,不需要用的话两种都可以

第3个回答  2011-04-22
转发的页面上的返回按钮可以返回上一页,而重定向的不可以返回上个页面,原先的页面不存在了
第4个回答  2020-03-15
session
的生命周期默认是半个小时,如果你不清空缓冲,不重启服务器,会在浏览器端存放30分钟。所以你第二次访问也可以查看到用户信息。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网