java.lang.StackOverflowError错误:
20-Mar-2020 00:07:33.707 严重 [http-nio-8080-exec-5] org.apache.catalina.core.ApplicationDispatcher.invoke Servlet[addUserServlet]的Servlet.service()抛出异常
java.lang.StackOverflowError
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:304)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:304)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:304)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:304)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:304)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:304)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:304)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:304)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:304)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:304)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:304)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:304)
at org.apache.catalina.core.ApplicationHttpRequest.setAttribute(ApplicationHttpRequest.java:304)
错误的原因,进行了递归调用,导致堆栈耗尽。
错误的web配置:
前台跳转时需要一个充满数据的页面,链接的地址:${pageContext.request.contextPath}/jsp/useradd.jsp,我直接在web配置直接写了/jsp/useradd.jsp,而转发的地址为/jsp/useradd.jsp,导致递归调用,可以修改前台的跳转页面解决问题。
req.getRequestDispatcher("/jsp/useradd.jsp").forward(req,resp);
<servlet>
<servlet-name>addUserServlet</servlet-name>
<servlet-class>com.smbms.servlet.addUserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>addUserServlet</servlet-name>
<url-pattern>/jsp/useradd.jsp</url-pattern>
</servlet-mapping>