私のサーブレットでは、JavaScript のミニファイを実行できるように、コンテキストのルートにアクセスしたいと考えています。
インストールプロセスの一部としてミニファイを実行することは可能ですが、実装コストを削減するためにサーブレットの起動時に実行したいと考えています。
ファイルをディスクにロードして書き込むことができるように、コンテキストディレクトリを取得する方法を知っている人はいますか?
これにより、ファイルの抽出/編集に使用できる実際のパスが得られます。
コンテキスト リスナーでも同様のことを行っています。
public class MyServlet extends HttpServlet {
public void init(final ServletConfig config) {
final String context = config.getServletContext().getRealPath("/");
...
}
...
}
私のサーブレットでは、JavaScriptの縮小を実行できるように、コンテキストのルートにアクセスしたいと思います。
によってWebContent内のファイルにアクセスすることもできますServletContext#getResource()
。したがって、JSファイルがたとえばにあるWebContent/js/file.js
場合は、で次を使用してハンドルServlet
を取得できます。File
File file = new File(getServletContext().getResource("/js/file.js").getFile());
または取得するにはInputStream
:
InputStream input = getServletContext().getResourceAsStream("/js/file.js");
そうは言っても、JSファイルを縮小する必要がある頻度はどれくらいですか?リクエストベースのミニファイの必要性を見たことがありません。それは不必要に多くのオーバーヘッドを追加するだけです。アプリケーションの起動時に一度だけ実行することをお勧めします。もしそうなら、これにを使用するServlet
ことは悪い考えです。より良い使用ServletContextListener
とあなたのことをしてくださいcontextInitialized()
。
私は結果をグーグルで調べていましたが、どこにも行きませんでした。Java Script を使用して現在のcontextPathにアクセスする必要がある JSP ページでは、実際には非常に簡単です。
ブロック内のhtml headに次の行を挿入するだけです。script
// set up a global java script variable to access the context path
var contextPath = "${request.contextPath}"
つまり:
public class MyServlet extends HttpServlet {
public void init(final ServletConfig config) {
final String context = config.getServletContext();
...
}
...
}
それとももっと複雑ですか?