我有一个java Web应用程序。这里我有一些javascript文件,我想在jar文件中。我希望有一个servlet将从jar传递javascript文件。该功能类似于DWR库。他们有一些javascript文件,不包含在文件系统中。相反,他们从罐子里传递javascripts。 DWRServlet班级做到了。但路径包含在html标头中。我想实现这样一个功能。你能不能给我一些想法如何实现
答案 0 :(得分:2)
JAR中的资源是类路径的一部分。您可以通过InputStream
获取ClassLoader#getResourceAsStream()
类路径资源。所以,让你的Servlet完全这样做。
假设您在JAR的/META-INF/resources
中拥有这些JS资源:
@WebServlet("/resources/*")
public class ResourceServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String path = request.getPathInfo();
ClassLoader loader = Thread.currentThread().getContextClassLoader();
InputStream input = loader.getResourceAsStream("/META-INF/resources" + path);
if (input != null) {
response.setContentType(getServletContext().getMimeType(path));
OutputStream output = response.getOutputStream();
// Now just write input to output the usual way.
} else {
response.sendError(404);
}
}
}
然后,您可以通过http://localhost:8080/contextname/resources/some.js获取/META-INF/resources/some.js
JAR。