Я довольно новичок в серверных приложениях Java. Я пытаюсь создать простой сервлет, возвращающий файл HTML. Я попытался распечатать выходные данные из сервлета (закомментированная часть кода ниже), который работал нормально, но файловый подход сразу падает.
Ниже кода я разместил полученные исключения, однако они не очень описательны ни для меня, ни для Google.
Может быть, это какой-то jar-файл, который мне не хватает на каком-то этапе развертывания?
@ РЕШЕНО: Через пару часов и отжиманий я обнаружил, что '/' не является приемлемым субурлом, и изменение на '/ 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: выполнение сервлета вызвало исключение
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)
исключение затмения (повторяется много раз)
19 января 2019 г. 14:40:28 org.apache.catalina.core.StandardWrapperValve
вызвать SEVERE: Servlet.service () для сервлета [Логин] в контексте с
path [/ cache] вызвала исключение [сервлет выполнил исключение]
с первопричиной 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)
@ РЕДАКТИРОВАТЬ Я добавил фрагмент трассировки стека, который изначально игнорировал, так как не видел его начальную часть и думал, что это что-то параллельное.