Я пытаюсь создать простое приложение со встроенным сервером Jetty, которое обслуживает статические файлы из каталога «templates». Этот каталог является подкаталогом корневого каталога проекта.
В этом каталоге я использую статический файл "hello.html", который содержит строку <script src="jquery-3.3.1.js"></script>
для включения библиотеки jquery в мой проект.
Но когда я запускаю свой проект, я получаю сообщение из консоли браузера: «jquery-3.3.1.js: 1 Uncaught SyntaxError: Неожиданный токен <». Это произошло потому, что библиотека Jquery обслуживалась Jetty и возвращал текст html-страницы (см. Это в консоли браузера на вкладке сети). </p>
Как мне включить библиотеку jquery в мой проект?
HelloServer.java
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.ContextHandler;
public class HelloServer {
public static void main(String[] args) throws Exception
{
ContextHandler context = new ContextHandler();
context.setContextPath("/hello");
context.setHandler(new HelloServerHandler());
Server server = new Server(8080);
server.setHandler(context);
server.start();
server.join();
}
}
HelloServerHandler.java
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class HelloServerHandler extends AbstractHandler {
@Override
public void handle(
String target
, Request baseRequest
, HttpServletRequest request
, HttpServletResponse response) throws IOException, ServletException {
response.setContentType("text/html;charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
baseRequest.setHandled(true);
response.getWriter().println(HelloServerPageGenerator.instance().getPage("hello.html"));
}
}
HelloServerPageGenerator.java
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
public class HelloServerPageGenerator {
private static HelloServerPageGenerator helloServerPageGenerator;
private static final String HTML_DIR = "templates";
public static HelloServerPageGenerator instance() {
if (helloServerPageGenerator == null) {
helloServerPageGenerator = new HelloServerPageGenerator();
}
return helloServerPageGenerator;
}
public String getPage(String filename) {
String content = "";
try {
content = new String(Files.readAllBytes(Paths.get(HTML_DIR + File.separator + filename)), StandardCharsets.UTF_8);
} catch (IOException e) {
e.printStackTrace();
}
return content;
}
public static void main(String[] args) {
System.out.println(instance().getPage("hello.html"));
}
}
hello.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>Hello server</title>
<script src="jquery-3.3.1.js"></script>
<script type="text/javascript">
setInterval(function () {
window.location.reload(true);
}, 1000);
</script>
</head>
<body>
<p>Hello server</p>
</body>
</html>
Ошибка:
Окно с ошибкой