Доставить JavaScript из банки - PullRequest
2 голосов
/ 25 января 2012

У меня есть веб-приложение на Java.Здесь у меня есть несколько файлов javascript, которые я хочу разместить внутри файла jar.Я хочу, чтобы был сервлет, который будет доставлять файлы javascript из банки.Эта функция похожа на библиотеку DWR .У них есть некоторые файлы JavaScript, которые не включены в файловую систему.Скорее они доставляют javascripts из банки.Класс DWRServlet делает это.Но путь включен в заголовок html.Я хочу реализовать такую ​​функцию.Не могли бы вы, ребята, дать мне некоторое представление о том, как реализовать это

1 Ответ

2 голосов
/ 25 января 2012

Ресурсы в JAR являются частью пути к классам.Вы можете получить InputStream ресурса classpath с помощью ClassLoader#getResourceAsStream().Итак, просто позвольте вашему сервлету делать именно это.

Предполагая, что у вас есть эти ресурсы JS в /META-INF/resources 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);
        }
    }

}

Тогда вы можете получить /META-INF/resources/some.js JARhttp://localhost:8080/contextname/resources/some.js.

...