Servlet中实现转发
在servlet中,一般是获取RequestDispatcher,然后调用forward方法进行转发。
方法一
用request获取。
RequestDispatcher r = request.getRequestDispatcher("目标页面");
方法二
用ServletContext获取。
1. 直接获取ServletContext
ServletContext sct = getServletContext(); RequestDispatcher r = sct.getRequestDispatcher("目标页面");或
RequestDispatcher r = getServletContext().getRequestDispatcher("目标页面");
( request获取ServletContext : ServletContext application = request.getSession().getServletContext(); )
2. 通过ServletConfig获取ServletContext
ServletContext sct = getServletConfig().getServletContext(); RequestDispatcher r = sct.getRequestDispatcher("目标页面");或
RequestDispatcher r = getServletConfig().getServletContext().getRequestDispatcher("目标页面");
在底层,getServletContext()就是就是通过SerletConfig得到。
public ServletContext getServletContext() { return getServletConfig().getServletContext(); }
函数名getServletContext()是抽象类HttpServlet中的函数。
函数体中的getServletContext()是接口ServletConfig中的函数。
即它们不是同一个函数。
最后通过RequestDispatcher的forward函数进行转发
r.forward(request, response);
在jsp中,除了<jsp:forward>,还可以利用application转发。
application.getRequestDispatcher("/2.jsp").forward(request, response);
因为applicaton就是ServletContext接口的实例化对象。