一个web资源受到客户端请求后,他会通知客户端去访问另一个web资源,这个过程就叫做重定向。
常见场景:
- 用户登录
sendRedirect(“一个请求”);
重定向就是一个地址跳转。
package servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class RedirectServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//响应重定向到另一个url上
//因为是响应重定向,所以要把前面的项目名也带上 这里也就是:FileResponse_war
resp.sendRedirect("/FileResponse_war/image");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
在web中注册重定向Servlet,同时注册一个验证码Servlet作为重定向的地址:
<servlet>
<servlet-name>image</servlet-name>
<servlet-class>servlet.ImageServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>image</servlet-name>
<url-pattern>/image</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>red</servlet-name>
<servlet-class>servlet.RedirectServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>red</servlet-name>
<url-pattern>/red</url-pattern>
</servlet-mapping>
访问/red:
跳转为:/FileResponse_war/image
重定向的拆分步骤就是:
- 设置响应头:重定向的地址“Location”重定向的地址
- 设置状态码
- 都会实现页面跳转
不同点:
- 请求转发的时候url不会产生变化,转发都是内部转发
- 重定向的时候url会跳转到重定向的url,会发生变法