6

私のサーブレットでは、JavaScript のミニファイを実行できるように、コンテキストのルートにアクセスしたいと考えています。

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

ファイルをディスクにロードして書き込むことができるように、コンテキストディレクトリを取得する方法を知っている人はいますか?

4

4 に答える 4

14

これにより、ファイルの抽出/編集に使用できる実際のパスが得られます。

Javadoc リンク

コンテキスト リスナーでも同様のことを行っています。

public class MyServlet extends HttpServlet {

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

    ...
}
于 2008-09-11T20:49:26.253 に答える
2

私のサーブレットでは、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()

于 2009-11-27T11:49:50.273 に答える
0

私は結果をグーグルで調べていましたが、どこにも行きませんでした。Java Script を使用して現在のcontextPathにアクセスする必要がある JSP ページでは、実際には非常に簡単です。

ブロック内のhtml headに次の行を挿入するだけです。script

// set up a global java script variable to access the context path
var contextPath = "${request.contextPath}" 
于 2009-11-27T10:36:32.320 に答える
-1

つまり:

public class MyServlet extends HttpServlet {

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

    ...
}

それとももっと複雑ですか?

于 2008-09-11T20:39:05.297 に答える