补充:有两种页面跳转方式;
服务器端跳转:<jsp:forward> 特点:无条件的跳转,只要执行到语句就跳转,可以传递response范围的属性.
//request.getRequestDispatcher("../index.jsp").forward(request,response);这是在Servlet中的页面跳转。
客户端跳转:response.sendRedirect()、setHeader();特点:所有页面执行完在跳转,不能传递response范围的属性。
总结:如果一个页面中使用了JDBC,则应该在forward跳转之前关闭数据库。使用客户端的跳转可以任意的位置关闭数据库。
***********
1.request.getRequestDispatcher()是请求转发,前后页面共享一个request ;
response.sendRedirect()是重新定向,前后页面不是一个request。
request.getRequestDispather();返回的是一个RequestDispatcher对象。
2.RequestDispatcher.forward()是在服务器端运行;
HttpServletResponse.sendRedirect()是通过向客户浏览器发送命令来完成.
所以RequestDispatcher.forward()对于浏览器来说是“透明的”;
而HttpServletResponse.sendRedirect()则不是。
3.ServletContext.getRequestDispatcher(String url)中的url只能使用绝对路径; 而
ServletRequest.getRequestDispatcher(String url)中的url可以使用相对路径。因为
ServletRequest具有相对路径的概念;而ServletContext对象无次概念。
4.使用response.sendRedirect()地址栏将改变
使用request.getRequestDispatcher().forward(request,response)地址栏中的信息保持不变.
****************