Java uber jar中的HttpServlet能否发送位于jar中的页面?

Java uber jar中的HttpServlet能否发送位于jar中的页面?,java,maven,servlets,uberjar,file-location,Java,Maven,Servlets,Uberjar,File Location,我正在编写一个绑定在uber jar中的localhost web/websocket应用程序 它是一个单页站点,HttpServlet将发送与WebSocket服务器通信的html。我希望页面保持在jar中,并让HttpServlet能够从那里加载页面并将其发送到客户端 这可能吗?如果是,如何返回?一个HttpServlet可以返回它想要的任何东西,您所需要做的就是在响应中设置您想要的东西 我猜你实际上在寻找的答案是这样的 public class MyServlet extends Http

我正在编写一个绑定在uber jar中的localhost web/websocket应用程序

它是一个单页站点,
HttpServlet
将发送与WebSocket服务器通信的html。我希望页面保持在jar中,并让
HttpServlet
能够从那里加载页面并将其发送到客户端


这可能吗?如果是,如何返回?

一个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);
        }
    }
}

不清楚你想要什么

如果您试图从类路径(例如在jar中)加载一个文件,您可以这样做

public class Test {

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

如果您在单页网站上,则不应发送页面。。。还有,什么是优步罐?@ElliottFrisch谢谢你找Elliott Frisch!我的应用程序是一个独立的网络应用程序。
HttpServlet
向用户发送包含所有css、javascript等的唯一html文件,以便用户可以连接服务器的WebSocket端并与之交互。换句话说,希望用户能够执行jar,打开浏览器,进入
https://localhost
(如有必要,也可以使用其他端口),一次完成所有操作。这是一个优步罐:这是大部分答案。您可以作为资源访问JAR中的任何文件,答案的第4/5行有相关的代码(getResourceAsStream并将其放入BufferedReader)。@Gracchus它实际上引用的是类路径,而不是特定的JAR。您可以在类路径中的任何JAR中拥有/path/to/this.html,这将加载它。你会发现这很有用。