从 jar 中交付 javascript

发布于 2024-12-29 05:47:48 字数 407 浏览 1 评论 0原文

我有一个java网络应用程序。这里我有一些 javascript 文件,我想将它们放在 jar 文件中。我希望有一个 servlet 可以从 jar 中传递 javascript 文件。该功能类似于 DWR 库。他们有一些未包含在文件系统中的 javascript 文件。相反,他们从 jar 中传递 javascript。 DWRServlet 类可以做到这一点。但该路径包含在 html 标头中。我想实现这样一个功能。你们能给我一些如何实现的想法吗

I have a java web application. Here I have some javascript files which I want to be inside a jar file. I want there will be a servlet which will deliver the javascript files from the jar. The feature is like DWR library. They have some javascript files which is not included in the file system. Rather they deliver the javascripts from the jar. DWRServlet class do that. But the path is included in the html header. I want to implement such a feature. Could you guys give me some idea how to implement that

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

故事未完 2025-01-05 05:47:48

JAR 中的资源是类路径的一部分。您可以通过ClassLoader#getResourceAsStream()获取类路径资源的InputStream。因此,让您的 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);
        }
    }

}

那么您可以通过以下方式获取 JAR 的 /META-INF/resources/some.js http://localhost:8080/contextname/resources/some.js

Resources in JARs are part of the classpath. You can get an InputStream of a classpath resource by ClassLoader#getResourceAsStream(). So, just let your Servlet do exactly that.

Assuming that you have those JS resources in /META-INF/resources of the JAR:

@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);
        }
    }

}

Then you can get /META-INF/resources/some.js of the JAR by http://localhost:8080/contextname/resources/some.js.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文