JaveWeb--Servlet中实现转发

时间:2021-10-06 21:04:45

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接口的实例化对象。