我对Java服务器应用程序很陌生。我正在尝试创建一个返回HTML文件的简单servlet。我已经尝试过打印servlet的输出(下面的代码的注释部分),效果很好,但是文件方法立即崩溃。 在我发布的代码下面,我收到了异常,但是这些异常对我和Google都没有很好的描述性。 也许是某些部署阶段缺少的jar文件?
@SOLVED:几个小时后,我发现俯卧撑集是不可接受的子URL,改为'/ login'即可解决此问题。
文件结构:
cache
-src
--cache
---LoginServlet.java
-WebContent
--META-INF //autogenerated
--WEB-INF
---web.xml
--index.html
LoginServlet.java
package cache;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
/*PrintWriter out = response.getWriter();
out.print("asd");*/
request.getRequestDispatcher("index.html").forward(request, response);
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>cache</display-name>
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>cache.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
浏览器异常(重复,我仅粘贴一次重复)
javax.servlet.ServletException:Servlet执行引发异常 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) cache.LoginServlet.doGet(LoginServlet.java:16) javax.servlet.http.HttpServlet.service(HttpServlet.java:634) javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
蚀异常(重复多次)
2019年1月19日2:40:28 PM org.apache.catalina.core.StandardWrapperValve 在上下文中为Servlet [Login]调用SEVERE:Servlet.service() 路径[/ cache]引发异常[Servlet执行引发异常] 根本原因是java.lang.StackOverflowError在
此行重复很多
javax.servlet.ServletRequestWrapper.isAsyncStarted(ServletRequestWrapper.java:408) 在
单个展开
org.apache.catalina.core.ApplicationDispatcher.unwrapRequest(ApplicationDispatcher.java:797) 在
并一直重复到结束
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:712) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:459) 在 org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:384) 在 org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312) 在cache.LoginServlet.doGet(LoginServlet.java:16)在 javax.servlet.http.HttpServlet.service(HttpServlet.java:634)在 javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
@EDIT我添加了一段堆栈跟踪,起初我没有看到它,因为我没有看到它的开始部分,我认为这是并发的。