Servlet的转发与重定向
简单汇总下 Servlet
的转发与重定向。
定义
- 重定向:服务器收到客户端请求后,通知浏览器去访问另外一个资源进行处理,状态码:302。
- 转发:服务器收到客户端请求后去调用另外一部份资源进行处理,关态码:307。
两者区别
- 访问次数不同
- 重定向访问服务器两次,是两条不同的请求(
request
)。 - 转发访问服务器只有一次,是同一条请求(
request
),可以共享request
级别的信息。
- 重定向访问服务器两次,是两条不同的请求(
- URL表现不同
- 重定向会发生 URL 的改变。
- 转发的 URL 不会改变。
- 执行者行为不同
- 重定向是客户端行为,服务器告知客户端重新发起另一个链接请求,可以访问应用以外的资源。
- 转发是服务器行为,是在服务器内部执行,对用户来说是感觉不到的。
两者使用方式
- 后台实现
- 转发:
request.getRequestDispatcher("new.jsp").forward(request, response);
- 重定向:
response.sendRedirect("new.jsp");
- 转发:
- JSP页面实现
- 转发:
<jsp:forward page="new.jsp" />
- 重定向:
<%response.sendRedirect("new.jsp");
- 转发: