- 请求转发
将客户端发送过来的请求信息转发出去,并将转发页面返回的信息返回到客户端。
代码实现:
继承HttpServlet类,重写doGet和doPost方法,二者可以互相调用,使用getRequestDispatcher()方法进行转发
public class test extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.getRequestDispatcher("/login.jsp").forward(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
- 重定向
收到客户端发送过来的请求信息,并告诉客户端去请求另一个服务。
继承HttpServlet类,重写doGet和doPost方法,二者可以互相调用,使用sendRedirect()方法进行重定向
public class test extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.sendRedirect("/response/login.jsp");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
二者区别
页面都会实现跳转,请求转发跳转之后url不会发生变化,而重定向url会变成真实访问的服务的地址。
Status Code:
请求转发:307
重定向:302
成功:200
找不到页面:404
服务器发生错误:500