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

2025-03-18 22:18:31
推荐回答(5个)
回答1:

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

二、区别
1.转发在服务器端完成的;重定向是在客户端完成的
2.转发的速度快;重定向速度慢
3.转发的是同一次请求;重定向是两次不同请求
4.转发不会执行转发后的代码;重定向会执行重定向之后的代码
5.转发地址栏没有变化;重定向地址栏有变化
6.转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成

回答2:

转发是向服务器请求了一次,在这个过程中request都有效,而重定向就不一样了,重定向其实是向服务器请求了两次,第一次向服务器请求,服务器给客户端一个响应码,客户端带着这个响应码再向服务器请求一次,request在第一次请求时有效,在第二次请求时request已被销毁,所以无效。

回答3:

为啥是request.getRequestDispatcher("../ok.html").forward(request, response);
是同一个request请求,可以把request里面的东西带过去新页面,url地址栏不会改变。
为啥是response.sendRedirect("../error.html");直接跳转,不能将request里面的东西带过去,url地址栏会改变。

回答4:

转发的页面上的返回按钮可以返回上一页,而重定向的不可以返回上个页面,原先的页面不存在了

回答5:

session
的生命周期默认是半个小时,如果你不清空缓冲,不重启服务器,会在浏览器端存放30分钟。所以你第二次访问也可以查看到用户信息。