Servlet的转发与重定向

简单汇总下 Servlet 的转发与重定向。

定义

  1. 重定向:服务器收到客户端请求后,通知浏览器去访问另外一个资源进行处理,状态码:302。
  2. 转发:服务器收到客户端请求后去调用另外一部份资源进行处理,关态码:307。

    两者区别

  3. 访问次数不同
    • 重定向访问服务器两次,是两条不同的请求(request)。
    • 转发访问服务器只有一次,是同一条请求(request),可以共享 request级别的信息。
  4. URL表现不同
    • 重定向会发生 URL 的改变。
    • 转发的 URL 不会改变。
  5. 执行者行为不同
    • 重定向是客户端行为,服务器告知客户端重新发起另一个链接请求,可以访问应用以外的资源。
    • 转发是服务器行为,是在服务器内部执行,对用户来说是感觉不到的。

两者使用方式

  1. 后台实现
    • 转发:request.getRequestDispatcher("new.jsp").forward(request, response);
    • 重定向:response.sendRedirect("new.jsp");
  2. JSP页面实现
    • 转发:<jsp:forward page="new.jsp" />
    • 重定向:<%response.sendRedirect("new.jsp");
作者

光星

发布于

2018-01-03

更新于

2022-06-17

许可协议

评论