Jetty 7.6 не компилирует файлы JSP
Я новичок в 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>
И вот результат:
Я не использую 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 ответ
С 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, как указано в ссылке выше.