Java-сервлет генерирует исключение при ответе на запрос с файлом - PullRequest
0 голосов
/ 19 января 2019

Я довольно новичок в серверных приложениях 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)

@ РЕДАКТИРОВАТЬ Я добавил фрагмент трассировки стека, который изначально игнорировал, так как не видел его начальную часть и думал, что это что-то параллельное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...