带有url模式“*”的servlet映射中的StackOverflowError

带有url模式“*”的servlet映射中的StackOverflowError,第1张

带有url模式“ / *”的servlet映射中的StackOverflowError

映射的servlet

/*
也将在
RequestDispatcher#forward()
调用上运行。因此,如果您在该servlet中执行转发,则每次都会在无限循环中调用自身。那解释了
StackOverflowError

毕竟,您根本不应该使用

/*
servlet。它仅在servlet过滤器上有意义。将Servlet映射放回更特定的URL模式,并创建一个过滤器,
/*
必要时将其转发到所需的servlet。您当然不希望Servlet处理例如images
/ CSS /
JS文件。假设它们都放在
/resources
文件夹中,并且前端控制器已映射到
/myservlet/*
,则在中执行以下 *** 作
doFilter()


HttpServletRequest req = (HttpServletRequest) request;String path = req.getRequestURI().substring(req.getContextPath().length());if (path.startsWith("/resources/")) {    // Just let container's default servlet do its job.    chain.doFilter(request, response);}else {    // Delegate to your front controller.    request.getRequestDispatcher("/myservlet" + path).forward(request, response);}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5600264.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-15
下一篇2022-12-15

发表评论

登录后才能评论

评论列表(0条)

    保存