这与此question几乎完全相同,但解决方案对我的servlet映射不起作用。
假设我有一个映射到/*
的servlet,因此所有请求都被分派到该servlet。现在对于某些请求,我想要包含一个JSP页面WEB-INF/mypage.jsp
。
规范的解决方案是使用RequestDispatcher
并包含JSP页面:
@WebServlet(value = "/*")
public class MyServlet extends HttpServlet
{
private RequestDispatcher dispatcher_;
public void init() throws ServletException {
dispatcher_ = getServletContext().getRequestDispatcher("/WEB-INF/mypage.jsp");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
// include the jsp page for some requests
dispatcher_.include(request, response);
}
}
不幸的是,由于映射/*
优先于JSP servlet的映射*.jsp
,因此调度将路由到MyServlet
,从而导致无限递归。
请注意,如果将servlet映射为默认servlet(使用映射/
),则不会发生此调度问题。不幸的是,在我的特殊情况下,我无法使用默认的servlet映射。
那么有没有其他方法可以在与/*
映射的servlet中包含JSP页面?
答案 0 :(得分:0)