从另一个servlet或过滤器转发到servlet

时间:2017-04-03 04:00:01

标签: jsp servlets servlet-filters

通常我从servlet转发到jsp或映射的URL,并且互联网上充满了这样的例子。但我需要将请求转发给内部servlet。例如,通过使用其完整的类名,而不将该servlet映射到URL。如何将请求从另一个servlet或过滤器转发到内部servlet?

2 个答案:

答案 0 :(得分:0)

正如Shadab评论的那样,我认为你应该使用@WebServlet注释(和RequestDispatcher),例如:

@WebServlet(urlPatterns = { "/sample" })
public class SampleServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
    RequestDispatcher dispatch = req.getRequestDispatcher( "/forwardpath");
    dispatch.forward(req, res);
}

SampleServlet - > ForwardedServlet

@WebServlet(urlPatterns = { "/forwardpath" })
public class ForwardedServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
    ...
}

答案 1 :(得分:0)

您需要的方法是RequestDispatcher getNamedDispatcher(String name);,它返回一个RequestDispatcher对象,该对象充当命名servlet的包装器。

ServletConfig.getServletName()的javadoc说:

  

名称可以通过服务器管理提供,在Web应用程序部署描述符中指定,或者对于未注册(因此未命名)的servlet实例,它将是servlet的类名。

你必须这样做:

getServletContext().getNamedDispatcher("full.class.name.for.new.servlet");