[解決済み】JavaEEのWebアプリケーションでWEB-INFは何のために使われるのですか?
質問
以下のようなソースコードのディレクトリ構造を持つJava EE Webアプリケーションに取り組んでいます。
src/main/java <-- multiple packages containing Java classes
src/test/java <-- multiple packages containing JUnit tests
src/main/resources <-- includes properties files for textual messages
src/main/webapp/resources <-- includes CSS, images and all Javascript files
src/main/webapp/WEB-INF
src/main/webapp/WEB-INF/tags
src/main/webapp/WEB-INF/views
気になるフォルダーは
WEB-INF
: この中には
web.xml
サーブレット、Spring Beanの配線コンテキスト、JSPタグとビューを設定するためのXMLファイルです。私は、この構造を制約/定義するものを理解しようとしています。例えば、JSPファイルは常に
WEB-INF
それとも他の場所にあるのでしょうか?また、他に
WEB-INF
? ウィキペディアの
WARファイル
の項目で触れています。
classes
はJavaクラスで
lib
JARファイルについては、他のソースファイルの場所に加えて、これらがどのような場合に必要になるのか、完全に把握しているわけではありません。
どのように解決するのか?
その サーブレット2.4仕様 は、WEB-INFについてこのように述べています(70ページ)。
アプリケーション階層内に
WEB-INF
. このディレクトリには アプリケーションのドキュメントルートにないものです。 は、そのWEB-INF
の公開ドキュメントツリーに含まれないノードです。 アプリケーション . に含まれるファイルはありません。WEB-INF
ディレクトリを提供することができます。 コンテナによってクライアントに直接 しかしWEB-INF
ディレクトリは、サーブレットコードからgetResource
とgetResourceAsStream
メソッド呼び出しでServletContext
であり、また を使用して公開されます。RequestDispatcher
の呼び出しがあります。
これは、以下のことを意味します。
WEB-INF
リソースは、Webアプリケーションのリソースローダーからアクセス可能であり、一般からは直接見えません。
このため、多くのプロジェクトでは、JSP ファイル、JARs/ライブラリ、独自のクラスファイルやプロパティファイルなどのリソースや、その他の機密情報を
WEB-INF
フォルダーに格納されます。そうでなければ、単純な静的URLでアクセスできてしまいます(例えばCSSやJavascriptを読み込むのに便利です)。
技術的な観点からは、JSPファイルはどこにでも置くことができます。例えばSpringでは、JSPファイルを
WEB-INF
を明示的に指定します。
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/"
p:suffix=".jsp" >
</bean>
は
WEB-INF/classes
と
WEB-INF/lib
のフォルダは、Wikipedia の
WARファイル
の記事は、Servletの仕様上、実行時に必要となるフォルダの例です。
プロジェクトの構造と、出来上がったWARファイルの構造の違いを明確にすることが重要です。
プロジェクトの構造は、場合によってはWARファイルの構造を部分的に反映します(JSPファイルやHTML、JavaScriptファイルなどの静的なリソースの場合ですが、必ずしもそうとは限りません)。
プロジェクト構造から結果のWARファイルへの移行は、ビルドプロセスによって行われる。
通常、ビルドプロセスは自由に設計できますが、現在ではほとんどの人が次のような標準化されたアプローチを使用します。 アパッチ・メイブン . Mavenは、プロジェクト構造内のどのリソースが結果の成果物(この場合、結果の成果物はWARファイルです)のどのリソースにマッピングされるかのデフォルトを定義します。あるケースでは、マッピングは単純なコピープロセスで構成され、他のケースでは、マッピングプロセスにはフィルタリングやコンパイルなどの変換が含まれます。
一例
: は
WEB-INF/classes
フォルダには、後でコンパイルされたすべての Java クラスとリソース (
src/main/java
と
src/main/resources
) が、アプリケーションを起動するためにクラスローダーによってロードされる必要があります。
もう一つの例
: は
WEB-INF/lib
フォルダには、後でアプリケーションに必要なすべての jar ファイルが格納されます。mavenプロジェクトでは、依存関係はあなたのために管理され、mavenは自動的に必要なjarファイルを
WEB-INF/lib
フォルダーを作成します。そのため
lib
フォルダを作成します。
関連
-
java の例外が発生しました java
-
undefinedeclipse エラー。この行に複数のアノテーションが見つかりました: - 文字列を型解決に解決できない
-
Dateが型に解決できない問題を解決する
-
コンストラクタの呼び出しは、コンストラクタのエラー理解の最初のステートメントである必要があります。
-
spring-boot 401 このリソースにアクセスするには完全な認証が必要です エラー解決
-
アイデア Springboot Web プロジェクトを jar にパッケージ化する場合、Error: 無効または破損した jarfile x.jar 解決策
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] Javaの「for each」ループはどのように機能するのですか?
-
[解決済み] Eclipse のビルドパスのネストエラー
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Java Exceptionが発生しました エラー解決
-
myeclipseでコンパイルするとAntエラーが発生する javaの例外が発生しました。
-
エラーの解決方法 jarfile XXX.jarにアクセスできません。
-
javaコンパイル時のエラー:不正な文字 '\ufeff' に対する解決策です。
-
スレッド "main" で例外発生 java.net.BindException: アドレスは既に使用中です。NET_Bind
-
SocketTimeoutExceptionです。読み込みがタイムアウトしました
-
あるコードに出会いましたが、何に使うのか理解できません。 List<String> list = new ArrayList<String>() { { a
-
JSPで「リストが型解決できない!」の解決方法
-
IDEA パッケージステートメントの欠落
-
maven プラグイン エラー プラグインの実行は、ライフサイクル構成ソリューションの対象外です。