【问题标题】:jakarta.servlet.ServletException: Exceeded maximum depth for nested request dispatches: 20jakarta.servlet.ServletException:超过嵌套请求调度的最大深度:20
【发布时间】:2022-01-04 21:37:22
【问题描述】:

我的应用程序使用 Servlet 5.0 和 JSP。一切都很好,只要我使用 url 模板 urlPatterns = {"/sample"}(不带 (*))并且正在捕获这个 url /sample?col=20

但是当我更改它urlPatterns = {"/sample/*"} 并更改了网址/sample/Tom-Sawyer?col=20 我收到异常“超过嵌套请求调度的最大深度:20”

我的小服务程序

@WebServlet(name = "Sample",  urlPatterns = {"/sample/*"})
public class SampleController extends HttpServlet {
   @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        long col =Integer.parseInt(request.getParameter("col"));

    ... some Business logic ...

       RequestDispatcher requestDispatcher = request.getRequestDispatcher("WEB-INF/sample.jsp");
        requestDispatcher.forward(request, response);
    }
}

可能与我的过滤器冲突


@WebFilter(filterName = "EndsWith", urlPatterns = {"/*"})
public class TypeFilter implements Filter {

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws ServletException, IOException {

        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;

        if (request.getRequestURI().endsWith("/book")) {
            request.getRequestDispatcher("/book").forward(request, response);
        }
        else {
            chain.doFilter(request, response);
        }
    }
}

【问题讨论】:

    标签: java jsp servlets jakarta-ee


    【解决方案1】:

    您需要在WEB-INF request.getRequestDispatcher("/WEB-INF/sample.jsp"之前加上一个斜杠

    奇怪,如果模式类似于urlPatterns = {"/sample"},它可以不带斜线request.getRequestDispatcher("WEB-INF/sample.jsp"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-13
      • 1970-01-01
      • 2018-04-14
      • 1970-01-01
      • 2018-09-24
      • 1970-01-01
      • 2021-01-18
      相关资源
      最近更新 更多