WEB-INFって何者?
書籍でWEBアプリケーションのフレームワークの勉強中、
「WEB-INF」
というフォルダが登場しました。
という理解しかできませんでした。
しかし
根本を知るためには重要そうな気がする
と思ったので、調べてみました。
WEB-INFとは
まず先に結論から話しますと
WEB-INFとは
javaサーブレット開発時に必要なフォルダ
です。
当フォルダ配下にクラスファイルを入れておけば、Tomcatなどのアプリケーションサーバーがクラスを読み込んでくれる仕様になっています。
またクライアント側(ブラウザ)からは直接呼び出せなくなるのでセキュリティ面においても意味のあるフォルダです。
WEB-INFの内訳
さらにWEB-INF配下のフォルダ・ファイルついても役割が決まっています。
主要なのは以下の3つです。少しだけ解説します。
- WEB-INF/web.xml
- WEB-INF/classes
- WE-INF/lib
WEB-INF/web.xml
ブラウザから入力したURLとクラスファイルの紐づけを行っている設定ファイルです。
詳しくは私の他記事でも解説しています。
web.xmlとは何か?javaのwebアプリ開発において重要?
WEB-INF/classes
アプリのメイン処理となる
『サーブレットクラス』
と呼ばれるクラスファイルを格納します。
ここが中核ですね。
WE-INF/lib
使用したいライブラリを置きます。
フレームワークのライブラリなどを置くことがほとんどだと思います。
WEB-INFは覚えておいて損はなし!
このWEB-INFフォルダは
javaのサーブレット開発全てにおいて共通の知識
です。
使いたいフレームワークが変わろうが
webサーバーが変わろうが
変わらない技術仕様です。
押さえておいて損はないです。
WEB-INFは誰が決めた?
では、
WEB-INF/classesフォルダにクラスファイルを置く。
などの
技術仕様は誰が決めたのでしょうか?
決めたのは
という、javaに関する技術仕様や標準化プロセスを決めている団体です。
そこでJava Servletという仕様書にWEB-INFフォルダの決まりが書いてあります。(現在はVer3.1)
※本家サイトには英語訳の仕様書しかありませんがここで、『Java Servlet3.0』の日本語訳をPDFで公開してくれています。仕様書の『10.5 ディレクトリ構造』でWEB-INFに関する仕様が書かれています。
なので、このJCPという団体が
WEB-INF配下にクラスファイルを入れておけば、アプリケーションサーバーが読み込むように作りましょう!!
と決まりをつくり、
JavaやTomcatなどのアプリケーションサーバーを開発する会社や団体がその仕様通りに開発しているわけです。
まとめ
まとめです。
- フォルダ配下にクラスファイルを入れておけば、Tomcatなどのアプリケーションサーバーがクラスを読み込んでくれる
- クライアント側からは直接呼び出せなくなるので、セキュリティの面においても意味のあるフォルダ
- JCPという団体がjava Servletという仕様書でWEB-INFの仕様を決めている
調べるのに時間がかかってしまいましたが
プログラミングでコードを書くことと同じくらい、このような勉強も重要だと思う今日この頃でした。