【发布时间】: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