私のサーブレットでは、JavaScriptの縮小を行うためにコンテキストのルートにアクセスしたいと考えています。サーブレットからのTomcatコンテキストパスへのアクセス
インストールプロセスの一部としてminifyを実行することは可能ですが、実装コストを削減するためにサーブレットの起動時に実行したいと考えています。
誰かがファイルをロードしてディスクに書き込むためにコンテキストディレクトリを取得する方法を知っていますか?
私のサーブレットでは、JavaScriptの縮小を行うためにコンテキストのルートにアクセスしたいと考えています。サーブレットからのTomcatコンテキストパスへのアクセス
インストールプロセスの一部としてminifyを実行することは可能ですが、実装コストを削減するためにサーブレットの起動時に実行したいと考えています。
誰かがファイルをロードしてディスクに書き込むためにコンテキストディレクトリを取得する方法を知っていますか?
これは、ファイルの抽出/編集に使用できる実際のパスを提供します。
我々はコンテキストリスナで似た何かをやっています。
public class MyServlet extends HttpServlet {
public void init(final ServletConfig config) {
final String context = config.getServletContext().getRealPath("/");
...
}
...
}
はあなたが意味するか:
public class MyServlet extends HttpServlet {
public void init(final ServletConfig config) {
final String context = config.getServletContext();
...
}
...
}
か何かもっと複雑な?
これは正しい経路かもしれませんが、私はそれが私のすべての道を得られるとは思いません。私はまだコンテキストディレクトリにあるファイルを開くことができる必要があります。 –
私は結果を捜していてどこにもいませんでした。 Javaスクリプトを使用して現在のコンテキストパスにアクセスする必要があるJSPページでは、実際には非常に簡単です。
script
ブロック内のhtmlヘッドに次の行を挿入するだけです。私のサーブレットで
// set up a global java script variable to access the context path
var contextPath = "${request.contextPath}"
私はあなたがまた
ServletContext#getResource()
ではWebContentでファイルにアクセスすることができ
を縮小化、いくつかのJavaScriptを実行できるように、コンテキストのルートにアクセスしたいと思います。だからあなたのJSファイルは、例えばWebContent/js/file.js
に配置されている場合、あなたはそれのFile
ハンドル得るためにあなたのServlet
に次のように使用することができます。
File file = new File(getServletContext().getResource("/js/file.js").getFile());
またはInputStream
を得るために:
InputStream input = getServletContext().getResourceAsStream("/js/file.js");
言いましたどのくらいの頻度でJSファイルを縮小する必要がありますか?私は、要求に基づくマイナー化の必要性を見たことがない、それは不必要に多くのオーバーヘッドを追加するだけです。おそらく、アプリケーションの起動時に一度だけ実行することをお勧めします。もしそうなら、これにはServlet
を使うのは悪い考えです。より良い使用ServletContextListener
とあなたのことcontextInitialized()
で行います。
ブリリアント!まさに私が何をしたのか。 私はこれが彼の答えで撮影していたものと思われます。このサイトのコンテンツの品質は、私に印象づけ続けています。 –