2008-09-11 14 views
6

私のサーブレットでは、JavaScriptの縮小を行うためにコンテキストのルートにアクセスしたいと考えています。サーブレットからのTomcatコンテキストパスへのアクセス

インストールプロセスの一部としてminifyを実行することは可能ですが、実装コストを削減するためにサーブレットの起動時に実行したいと考えています。

誰かがファイルをロードしてディスクに書き込むためにコンテキストディレクトリを取得する方法を知っていますか?

答えて

13

これは、ファイルの抽出/編集に使用できる実際のパスを提供します。

Javadoc Link

我々はコンテキストリスナで似た何かをやっています。

public class MyServlet extends HttpServlet { 

    public void init(final ServletConfig config) { 
     final String context = config.getServletContext().getRealPath("/"); 
     ... 
    } 

    ... 
} 
+0

ブリリアント!まさに私が何をしたのか。 私はこれが彼の答えで撮影していたものと思われます。このサイトのコンテンツの品質は、私に印象づけ続けています。 –

-1

はあなたが意味するか:

public class MyServlet extends HttpServlet { 

    public void init(final ServletConfig config) { 
     final String context = config.getServletContext(); 
     ... 
    } 

    ... 
} 

か何かもっと複雑な?

+0

これは正しい経路かもしれませんが、私はそれが私のすべての道を得られるとは思いません。私はまだコンテキストディレクトリにあるファイルを開くことができる必要があります。 –

0

私は結果を捜していてどこにもいませんでした。 Javaスクリプトを使用して現在のコンテキストパスにアクセスする必要があるJSPページでは、実際には非常に簡単です。

scriptブロック内のhtmlヘッドに次の行を挿入するだけです。私のサーブレットで

// set up a global java script variable to access the context path 
var contextPath = "${request.contextPath}" 
2

私はあなたがまた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()で行います。

関連する問題