簡體   English   中英

Jetty 7.6無法編譯JSP文件

[英]Jetty 7.6 does not compile JSP files

我是Jetty和JSP的新手。 我現在正在嘗試使用Embedded Jetty和JSP創建簡單的服務器來生成html。

我首先要提到的是,Jetty版本限制了我的工作。 我必須使用的版本是Jetty 7.6.xx

我需要創建幾個servlet,在其中可以將請求/響應分派到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>

結果如下:

在此處輸入圖片說明

我沒有使用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>

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

在7.5.0之前的Jetty版本中,JSP基礎結構使用$ JETTY_HOME / lib / jsp中提供的Eclipse Java編譯器(ecj.jar)。 對於jetty-7.5.0,我們將JSP的版本升級為jsp-impl-2.1.3.b10(來自Glassfish)。 在此版本中,如果Java的版本為1.6或更高版本,則JSP基礎結構始終嘗試從JVM獲取Java編譯器。 因此,如果您使用的是JRE,則JSP無法編譯,因此您必須使用完整的JDK。 或者,您可以預編譯您的JSP(在任何情況下在生產部署中都更可取)。 Jetty JSPC Maven插件有助於進行預編譯。

這聽起來完全像您的問題。 按照上面的鏈接說明,使用JDK或預編譯JSP。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM