11

Web コンテンツ (JSP、HTML、画像、CSS など) を JAR ファイルに保存することはできますか?

Web アプリケーションをモジュール化するためのさまざまなオプションを検討してきましたが、これは 1 つの可能性です。

私たちは現在、ビュー テクノロジーに JSF と Facelets を使用しています。ファイル システム ディレクトリではなくクラスパスを調べる何らかの形式のカスタム ビュー リゾルバーを作成することは可能かもしれないと考えていますが、これが機能するかどうかはわかりません。

どんなアイデアでも大歓迎です!:)

更新:おそらく明確にする必要があります。Web コンテナー (Tomcat など) に JAR ファイルからリソースをロードさせるにはどうすればよいですか? たとえば、Web アプリケーションで .war ファイルをデプロイします。/index.jsp にアクセスすると、コンテナは Web コンテンツ ディレクトリで index.jsp という名前のファイルを探します。

ファイルシステムだけでなくクラスパスも検索するように、Tomcat などを使用して独自のリソース ローダーを構成する簡単な方法はありますか?

4

6 に答える 6

3

はい、プロパティ、xml、xslt、画像などのファイルを保存できます。JAR (または WAR) ファイルに記述し、実行時にプルします。

デプロイメント jar からリソースをロードするには、次のコードを使用します。

this.getClass().getClassLoader().getResourceAsStream( filename ) ;

Maven プロジェクトでは、リソースに配置されたフォルダーとファイルが jar に含まれます。ファイル名は jar ファイルのルートに相対的であるため、「./filename.xml」は「/src/java/resources」に配置されたファイル filename.xml と一致します。

于 2008-10-14T09:58:27.463 に答える
3

Maven を使用して Web アプリケーションを構築している場合は、リソースの WAR を構築し、ビルド時にその WAR を Web アプリケーション WAR にオーバーレイできます。

すべての JSP、画像、CSS などを含むリソース WAR は「オーバーレイ」と呼ばれ、単にタイプが「war」に設定されたターゲット Web アプリケーションの依存関係です。

Web アプリケーションをパッケージ化すると、リソース WAR は競合しないファイルのみをコピーします。そのため、プロジェクトに一意の index.jsp があり、オーバーレイで index.jsp の代わりにそれを使用したい場合は、それをターゲット Web アプリケーションに含めるだけで、Maven はそのリソースをコピーしません。

オーバーレイに関する Maven War プラグイン ページの詳細情報。

于 2010-11-05T19:48:03.513 に答える
1

Weblets プロジェクトを使用することもできます ( https://weblets.dev.java.net/を参照)。

一部のリソースを JAR ライブラリ (画像、css、javascript など) に保存し、非常に単純な weblet-config.xml を記述します。次に、JSF ページで、次の構文を使用してそれらを直接参照できます。

<h:graphicImage src="weblet://some-name/images/someimage.jpg" .../>
于 2008-10-16T09:59:06.523 に答える
1

絶対。内容を WAR ファイルに直接保存できます。これは基本的に、いくつかの余分なビットを含む JAR ファイルです。はい、ClassLoader.getResourceAsStream を使用するためにカスタム リゾルバーを作成する必要があるかもしれませんが、基本的には、好きなようにコンテンツを生成する機能が与えられているため、jar ファイルから取得することは完全に合理的です。ただし、非常に特定の拡張機能のセットのみを取得することを確認することをお勧めします:)

于 2008-10-14T08:08:09.120 に答える
1

タグ ファイルは、jar に配置できる JSP フラグメントのようなものです。タグファイルを使用すると役立つ場合がありますが、jar で画像や CSS などを使用しようとしたことはありません。

于 2008-10-16T10:12:01.257 に答える