🚀 大家好,我是小康。

今天给大家分享一个 TCP 面试题 :forward 和 redirect 的区别?

小技巧:在面试中,可以参考下面的示例回答,这样回答简洁明了。详细介绍部分则是为了帮助大家系统学习,以便应对面试官深入提问。

示例回答

forward 和 redirect 的区别在于,forward 是服务器内部的跳转,用户看不到 URL 变化,而 redirect 是浏览器的重定向,用户会看到 URL 变化。


详细解释

forward(转发):

  • 服务器内部跳转:forward 是服务器内部的跳转,服务器接收到请求后,将请求转发到另一个页面或资源(如 JSP、Servlet)。
  • URL 不变:用户浏览器的地址栏 URL 不会发生变化,因为请求没有离开服务器。
  • 数据共享:在转发过程中,原请求中的数据可以直接传递到新页面。

使用场景:适用于在服务器内部传递请求,例如在处理表单提交时转发到处理结果页面。
示例

1
2
// 转发到新的页面 newPage.jsp
request.getRequestDispatcher("/newPage.jsp").forward(request, response);

redirect(重定向):

  • 浏览器重定向:redirect 是服务器告诉浏览器重新请求一个新的 URL,浏览器会向新 URL 发起请求。
  • URL 变化:用户浏览器的地址栏 URL 会变化,因为这是一个新的请求。
  • 数据不共享:原请求中的数据不会传递到新页面,新的请求会丢失原有的数据。

使用场景:适用于用户操作后需要引导到新页面,例如用户登录成功后跳转到主页。
示例

1
2
// 服务器告诉浏览器重新请求一个新的 URL
response.sendRedirect("newPage.jsp");

总结

  • forward:服务器内部跳转,URL 不变,数据共享。
  • redirect:浏览器重定向,URL 变化,数据不共享。

最后:

欢迎大家关注我的微信公众号「跟着小康学编程」!本号致力于分享C/C++/Go/Java 语言学习、计算机基础原理、Linux 编程、数据库、微服务、容器技术 等内容。文章力求通俗易懂,并配有代码示例,方便初学者理解。如果您对这些内容感兴趣,欢迎关注我的公众号「跟着小康学编程」。

后续,我还会陆续分享各个方向的编程面试题,包括C/C++、Java、Go,以及操作系统、计算机网络、数据结构、数据库和微服务等领域,为大家的面试提供帮助。

此外,小康最近创建了一个技术交流群,专门用来讨论技术问题和解答读者的疑问。在阅读文章时,如果有不理解的知识点,欢迎大家加入交流群提问。我会尽力为大家解答。期待与大家共同进步!