Jetty 7.6 не компилирует файлы JSP - PullRequest
0 голосов
/ 24 января 2019

Я новичок в Jetty и JSP.Сейчас я пытаюсь создать простой сервер с Embedded Jetty и JSP для генерации html.

Что я должен сказать в первую очередь, что я ограничен версией Jetty.Я должен использовать версию Jetty 7.6.xx

. Мне нужно создать несколько сервлетов, где я мог бы отправить запрос / ответ в файл JSP.Дело в том, что файл JSP, похоже, не компилируется, и вместо оценки выражений он выдает весь скрипт в виде обычного текста в браузере.Давайте посмотрим.

public void start() throws Exception {
    server = new Server();
    SelectChannelConnector connector = new SelectChannelConnector();
    connector.setPort(port);
    server.addConnector(connector);

    // Base URI to webapp, where jsp files are located
    URI baseUri = getWebRootResourceUri();

    // Create Servlet context
    ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
    context.setContextPath("/");
    context.setResourceBase(baseUri.toASCIIString());

    // Default Servlet (always last, always named "default")
    ServletHolder holderDefault = new ServletHolder("default", DefaultServlet.class);
    holderDefault.setInitParameter("resourceBase", baseUri.toASCIIString());
    holderDefault.setInitParameter("dirAllowed", "true");
    context.addServlet(holderDefault, "/");
    server.setHandler(context);

    server.start();

}

Это файл JSP

    <!DOCTYPE html>
<html>
    <head>
        <title>Coin Flipper</title>
    </head>
    <body>
        <h1>Coin Flipper</h1>
        <p>Flipping a coin...</p>
        <% if(Math.random() < .5){ %>
            <p>Heads!</p>
        <% }
        else{ %>
            <p>Tails!</p>
        <% } %>
        <hr />
        <p>Refresh to flip again.</p>
    </body>
</html>

И вот результат:

enter image description here

Я не использую web.xml, но я не возражаю против его использования, если это решит мою проблему.

Также вот мои зависимости maven:

<dependencies>
        <!-- Embedded web server -->
        <!-- https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-server -->
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-server</artifactId>
            <version>7.6.21.v20160908</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-servlet -->
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-servlet</artifactId>
            <version>7.6.21.v20160908</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/org.glassfish.web/jsp-impl -->
        <dependency>
            <groupId>org.glassfish.web</groupId>
            <artifactId>jsp-impl</artifactId>
            <version>2.1.3-b10</version>
        </dependency>

    </dependencies>

1 Ответ

0 голосов
/ 24 января 2019

С https://wiki.eclipse.org/Jetty/Howto/Configure_JSP

В версиях Jetty до 7.5.0 инфраструктура JSP использовала Java-компилятор Eclipse (ecj.jar), который поставляется в $ JETTY_HOME / lib / jsp. Для jetty-7.5.0 мы обновили версию JSP до jsp-impl-2.1.3.b10 (от Glassfish). В этой версии инфраструктура JSP ВСЕГДА пытается получить компилятор Java от JVM, если версия Java - 1.6 или выше. Поэтому, если вы используете JRE, JSP не могут компилироваться, поэтому вы должны использовать полный JDK. Кроме того, вы можете предварительно скомпилировать ваши JSP (что в любом случае предпочтительно в производственном развертывании). Плагин Jetty JSPC Maven полезен для предварительной компиляции.

Это звучит так же, как ваша проблема. Либо используйте JDK, либо прекомпилируйте свои JSP, как указано в ссылке выше.

...