質問

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

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

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

役に立ちましたか?

解決

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

Javadoc リンク

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

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 ファイルを縮小する必要があるでしょうか?リクエストベースの縮小の必要性を見たことがありません。それは不必要に多くのオーバーヘッドを追加するだけです。おそらく、アプリケーションの起動時に 1 回だけ実行する必要があるでしょう。その場合は、 Servlet これは悪い考えだからです。より良い使い方 ServletContextListener そしてあなたのことをしてください contextInitialized().

結果をグーグルで調べましたが、どこにも見つかりませんでした。現在のファイルにアクセスするために Java Script を使用する必要がある JSP ページでは、 コンテキストパス 実はとても簡単です。

次の行を htmlヘッド の中に 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();
        ...
    }

    ...
}

それとももっと複雑なものでしょうか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top