Java uber jar中的HttpServlet能否发送位于jar中的页面?
我正在编写一个绑定在uber jar中的localhost web/websocket应用程序 它是一个单页站点,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
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,这将加载它。你会发现这很有用。