其实关于java web里面的请求转发和重定向有很多博客,但是本人没有收藏,而是选择了借鉴别人的再重新写一篇,为的就是加深影响,因为好多东西你看懂了和你写出是两回事。

请求转发:

request.getRequestDispatcher().forward();

重定向:

response.sendRedirect();

例如:

请求转发:

request.getRequestDispatcher("/student_list.jsp").forward(request,response);
 

重定向:

response.sendRedirect(request.getContextPath + "/student_list.jsp")

 

请求转发的示意图:

                                      关于web请求转发和重定向

请求转发流程:首先,浏览器向ServetA发送请求,ServetA获取浏览器的请求参数或者其他资源后,没有进行处理,而是将这些参数和资源传给了给了servletB,或者jsp,或者其他web资源。接着servletB,或者jsp,或者其他web资源,对浏览器请求的参数或者资源进行处理,处理完后,将结果返回给浏览器。

重定向示意图:

                                        关于web请求转发和重定向

重定向流程:浏览器向服务器里面的ServletA请求,ServletA对请求没有处理,而是返回了一个状态码和url。浏览器在获取ServletA返回的rul后,根据该rul重新向服务器进行请求。服务里面的ServletB或者其他资源对浏览器请求进行处理,并将结果返回给浏览器。

重定向和转发的区别

  1. 重定向的地址栏会发生变化,转发不会。因为转发是在服务器内部发生的,浏览器根本不知道。
  2. 重定向是两次请求两次响应,转发是一次请求一次响应。
  3. 重定向路径需要添加工程名,转发路径不需要加工程名。
  4. 重定向可以跳转到任何网站,转发只能在服务器内部进行。

相关文章:

  • 2021-10-19
  • 2021-09-19
  • 2021-06-12
  • 2021-06-12
  • 2021-04-12
  • 2022-12-23
  • 2021-11-06
  • 2021-09-18
猜你喜欢
  • 2021-10-18
  • 2021-07-10
相关资源
相似解决方案