从一个页面跳转另一个页面可以通过转发和重定向两种方法来实现
在Servlet跳转页面
请求重定向:
1)重定向的地址栏会发生改变
2)可以跳转项目内的资源,也可以跳转项目外的资源
3)浏览器向服务器发送两次请求(返回302+location),那么就不能使用请求作为域对象来共享数据。
请求转发:
1)转发的地址栏不发生改变
2)可以跳转项目内的资源,不可以跳转项目外的资源
3)浏览器向服务器发送一次请求,然后通过Servlet转到请求的资源中,那么可以使用请求作为域对象来共享数据。
证明前两条的程序:
重定向程序:
public class SendDemo extends HttpServlet {
/**
* 重定向到其他项目
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.sendRedirect("../Http/downing.html");
}
}
请求转发:
public class DispatherDemo extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/**
* 1)获取ServletContext对象
* 2)转发到指定路径
* 3)调用forword()方法
*/
RequestDispatcher rd = this.getServletContext().getRequestDispatcher("/index.jsp");
rd.forward(request, response);
}
}