从jar发送javascripts

时间:2012-01-25 08:08:49

标签: servlets dwr

我有一个java Web应用程序。这里我有一些javascript文件,我想在jar文件中。我希望有一个servlet将从jar传递javascript文件。该功能类似于DWR库。他们有一些javascript文件,不包含在文件系统中。相反,他们从罐子里传递javascripts。 DWRServlet班级做到了。但路径包含在html标头中。我想实现这样一个功能。你能不能给我一些想法如何实现

1 个答案:

答案 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。