Servlet之间的跳转分为两种:
1.转向(转发)
转向是通过RequestDispatcher对象的forward(HttpServletRequest req,HttpServletResponse res) 方法来实现的。RequestDispatcher可以通过HttpServletRequest的getRequestDispatcher()方法获得。例如:
RequestDispatcher dispatcher = request.getRequestDispatcher("/servlet/LifeCycleServlet");
dispatcher.forward(request,response);
getRequestDispatcher()方法的参数必须以"/"开始,"/"表示本Web应用程序的根目录。如果要跳转到Servlet为http://localhost:8080/servlet/servlet/LifeCycleServlet,则参数应为"/servlet/LifeCycleServlet"
Forward不仅可以跳转到本应用的另一个Servlet,Jsp也main也可以跳转到另一个文件,甚至跳转到WEB-INF文件夹下的文件,框架中常用一个Servlet来集中处理请求,然后跳转到相应的Servlet,或者在Servlet中处理业务逻辑,然后跳转到JSP页面中显示处理的结果
2.重定向
重定向是利用服务器返回的状态码来实现的,客户端浏览器请求服务器的时候,服务器端会返回一个状态码,服务器端通过HttpServletResponse的setStatus(int status)方法设置状态码,如果服务器返回的是301或者302,则浏览器回到新的网址重新请求该资源
301、302都表示重定向,区别是301是永久性重定向,302是临时性重定向,重定向到另一个网址:
response.setStatus(HttpServletResponse.SC_MONED_TEMPORAILY);//设置状态码为302
response.setHeader("Location","http://www.baidu.com");//新网址