Servlet之间可以互相跳转,从一个Servlet跳转到另一个Servlet。现在的MVC框架中都使用了Servlet跳转。MVC分为三个独立模块:业务处理(Model)、试图模块(View)、控制模块(Control)。在Struts框架中,这三个模块分为3个Servlet,程序在三个Servlet之间跳转。
1.转向(Forward)
转向通过RequestDispatcher对象的forward(HttpServletRequest req,HttpServletResponse res)方法实现。下面便实现了跳转到另一个Servlet:
RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/web.xml");
dispatcher.forward(request, response);
Forward是MVC中的常用技术,不仅可以跳转到Servlet,JSP,还可以跳转到另一个文件,甚至是WEB-INF下的文件。
当执行Forward动作的时候,不能有任何输出到客户端,否则会抛出IllegalStateException异常。
2.重定向(Redirect)
重定向是利用服务器返回的状态码来实现的。服务器通过setStatus(int status)方法设置状态码。状态码301和302表示重定向,其中301为永久性重定向,302为临时性重定向。
response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
response.setHeader("Location","http://www.baidu.com");
3.自动刷新(Refresh)
自动刷新可以实现本页面的自动刷新,也能实现页面跳转。
response.setHeader("Refresh","1000;URL=http://www.baidu.com");
URL换为本页面的URL便是本页面刷新,换为另一个网页的URL便是跳转。