Подключение CSS к простому Java-серверу HTTPS и загрузка файла JNLP - PullRequest
0 голосов
/ 11 июня 2019

У меня есть проект Java-сервера Maven со следующей структурой:

enter image description here

HTTPS код сервера:

public class HTTPSServer {

public static void main(String[] args) throws Exception {
    System.out.println(Inet4Address.getLocalHost().getHostAddress());
    HttpsServer server = HttpsServer.create(new InetSocketAddress(8080), 1);
    server.createContext("/", new IndexHandler());

    char[] storepass = "mystorepass".toCharArray();
    char[] keypass = "mykeypass".toCharArray();

    KeyStore ks = KeyStore.getInstance("JKS");
    ks.load(HTTPSServer.class.getClassLoader().getResourceAsStream("vision.jks"), storepass);

    KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
    kmf.init(ks, keypass);

    SSLContext sslContext = SSLContext.getInstance("TLS");

    TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
    tmf.init(ks);

    sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);

    server.setHttpsConfigurator(new HttpsConfigurator(sslContext) {

       @Override
       public void configure (HttpsParameters params) {
           try
           {
               // initialise the SSL context
               SSLContext c = getSSLContext();
               SSLEngine engine = c.createSSLEngine();
               params.setNeedClientAuth(false);
               params.setCipherSuites(engine.getEnabledCipherSuites());
               params.setProtocols(engine.getEnabledProtocols());

               // get the default parameters
               SSLParameters defaultSSLParameters = c.getDefaultSSLParameters();
               params.setSSLParameters(defaultSSLParameters);
           }
           catch ( Exception ex ) {
               System.out.println(ex.getMessage());
           }
       }
   });

    ExecutorService executor = Executors.newFixedThreadPool(1);
    server.setExecutor(executor); // creates a default executor
    server.start();
    executor.awaitTermination(Integer.MAX_VALUE, TimeUnit.DAYS);
}

static class IndexHandler implements HttpHandler {
    public void handle(HttpExchange t) throws IOException {
        URL res = getClass().getClassLoader().getResource("index.html");
        try {
            File file = Paths.get(res.toURI()).toFile();
            t.sendResponseHeaders(200, file.length());
            try (OutputStream os = t.getResponseBody()) {
                Files.copy(file.toPath(), os);
            }
        } catch (URISyntaxException e) {
            System.out.println("index.html not found");
        }
    }
}

Выдержка index.html:

<a href="//10.155.26.68:8080/vision.jnlp" class="VisionStart" download="">Run Vision!</a>

Когда я запускаю сервер, я загружаю index.html, но файл main.css в папке css не подключен. В index.html также есть кнопка для скачивания файла с сервера. Подскажите, как при таком подходе вы можете подключить внешний файл CSS и загрузить файл с сервера. Я знаю, что для этого нужно создать отдельные обработчики, но, увы, я только начал знакомиться с веб-разработкой.

...