2014-01-13 7 views
1

Я пишу приложение localhost web/websocket, входящее в состав uber jar.Может ли HttpServlet внутри uber jar отправить страницу, расположенную внутри банки?

Это одностраничный сайт, и HttpServlet отправит html, который связывается с сервером WebSocket. Я хотел бы, чтобы страница оставалась внутри банки и имела возможность загружать ее оттуда и отправлять ее клиенту.

Возможно ли это? Если да, то как?

+0

Вы не должны отправить страницу, если вы на один -страничный сайт ... Кроме того, что такое uber jar? –

+0

@ ElliottFrisch Спасибо, что посмотрели Эллиот Фриш! Мое приложение - автономный webapp. «HttpServlet» отправляет пользователю только html-файл со всеми css, javascript и т. Д., Чтобы пользователь мог подключаться и взаимодействовать со стороной WebSocket сервера. Другими словами, мы надеемся, что пользователь сможет выполнить банку, открыть браузер и перейти к 'https: // localhost' (или, если необходимо, к другому порту) и сделать все за один снимок. Это uber jar: http://stackoverflow.com/questions/11947037/what-is-an-uber-jar –

ответ

0

HttpServlet может вернуть все, что захочет, все, что вам нужно сделать, это установить, что вы хотите в ответ.

Я предполагаю, что ответ на самом деле вы ищете выглядит примерно так, хотя

public class MyServlet extends HttpServlet { 
    public void doGet(HttpServletRequest request, HttpServletResponse response) { 
     PrintWriter out = response.getWriter(); 
     InputStream input = this.class.getResourceAsStream("/path/to/this.html"); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(input)); 
     String line; 
     while ((line = reader.readLine()) != null) { 
      out.println(line); 
     } 
    } 
} 
+0

Это была основная часть ответа. Вы можете получить доступ к любому файлу внутри JAR в качестве ресурса, строка 4/5 ответа имеет соответствующий код для этого (getResourceAsStream и размещение его в BufferedReader). –

+1

@ Gracchus Он фактически ссылается на classpath, а не на определенный JAR. Вы можете иметь /path/to/this.html в любом JAR внутри вашего пути к классам, и это будет загружать его. Вы можете найти http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getResourceAsStream%28java.lang.String%29 полезным. –

0

Это не ясно, что вы просите.

Если вы пытаетесь загрузить файл из пути к классам (например, в банке), вы можете сделать это таким образом

public class Test { 

    public static void main(String[] args) { 
     InputStream resourceAsStream = Test.class.getResourceAsStream("/test.html"); 
     // use the stream here... 
     System.out.println(resourceAsStream); 
    } 
}