Java

JavaのWEB開発で登場するWEB-INFとは?何のためのもの?誰が決めたの?

WEB-INFって何者?

書籍でWEBアプリケーションのフレームワークの勉強中、

「WEB-INF」

というフォルダが登場しました。

自分
自分
WEB-INF/classes配下にクラスファイルを入れるんだなぁ~

という理解しかできませんでした。

しかし

根本を知るためには重要そうな気がする

と思ったので、調べてみました。

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-INF/classes

アプリのメイン処理となる

『サーブレットクラス』

と呼ばれるクラスファイルを格納します。

ここが中核ですね。

WE-INF/lib

使用したいライブラリを置きます。

フレームワークのライブラリなどを置くことがほとんどだと思います。

WEB-INFは覚えておいて損はなし!

このWEB-INFフォルダは

javaのサーブレット開発全てにおいて共通の知識

です。


使いたいフレームワークが変わろうが

webサーバーが変わろうが

変わらない技術仕様です。

押さえておいて損はないです。

WEB-INFは誰が決めた?

では、

WEB-INF/classesフォルダにクラスファイルを置く。

などの

技術仕様は誰が決めたのでしょうか?

決めたのは

JCP(java Community Process)

という、javaに関する技術仕様や標準化プロセスを決めている団体です。

そこでJava Servletという仕様書にWEB-INFフォルダの決まりが書いてあります。(現在はVer3.1)

※本家サイトには英語訳の仕様書しかありませんがここで、『Java Servlet3.0』の日本語訳をPDFで公開してくれています。仕様書の『10.5 ディレクトリ構造』でWEB-INFに関する仕様が書かれています。

なので、このJCPという団体が

WEB-INF配下にクラスファイルを入れておけば、アプリケーションサーバーが読み込むように作りましょう!!

と決まりをつくり、

JavaやTomcatなどのアプリケーションサーバーを開発する会社や団体がその仕様通りに開発しているわけです。

まとめ

まとめです。

WEB-INFとは

  • フォルダ配下にクラスファイルを入れておけば、Tomcatなどのアプリケーションサーバーがクラスを読み込んでくれる
  • クライアント側からは直接呼び出せなくなるので、セキュリティの面においても意味のあるフォルダ
  • JCPという団体がjava Servletという仕様書でWEB-INFの仕様を決めている

調べるのに時間がかかってしまいましたが

プログラミングでコードを書くことと同じくらい、このような勉強も重要だと思う今日この頃でした。

関連記事