【メモ】Java(あるいはEclipse)でWebアプリケーションをつくるときの覚え書き
ちょっとよく分からなくなっていたところをまとめ。
Webサーバーとアプリケーションサーバーの役割
Webサーバーは、Webブラウザからのリクエストに対してHTML(静的コンテンツ)を返す。
動的コンテンツが必要な場合はプログラムを実行したり、アプリケーションサーバーにさらにリクエストする場合もある。
アプリケーションサーバーは、リクエストを受け取り、Javaなどのプログラムを実行し、その結果をWebサーバーに返す。
warファイルとは
Java製のwebアプリケーションで使用されるクラスファイル、HTML、設定ファイル、Jar形式のファイルなどをまとめたファイル。
Webアプリケーション版のzipみたいなもの。
e-words.jp
Webアプリケーションサーバが用意した特定の場所に配備し、サーバーを起動することで、そのアプリケーションをインストールすることができる。
動的Webプロジェクトとは
Webアプリケーション向けのファイル構造を自動生成するプロジェクト。
JSP+ServletによるWebアプリケーションの流れ
①URL「http://[サーバー]/[プロジェクト]/」でトップページアクセス
※ちなみに、「http://[サーバー]/[プロジェクト]/index.jsp」でも可能。サーバ側で、「index.jsp」が省略されていても自動で探索する。
⇒WebContent直下のページを探す。
indexページのように、ブラウザ(=外部)から直接アクセスするページはWebContent直下に置く。
②URL「http://[サーバー]/[プロジェクト]/[urlパターン]」で特定のページにアクセス
・「WEB-INF」配下にjsp用フォルダ(例:jsp)を作成し、「hoge.jsp」を配下に作成。
・「src」配下にサーブレットクラス(HogeServlet.java)を作成。
・HogeServlet.javaのクラスについてWebサーブレットアノテーション(@WebServle)をつける。詳細は次項。
③サーブレットクラスで遷移先のページを指定してディスパッチ。
■HogeServlet.java
RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/zaikochosei.jsp");
つまり、ブラウザのURL→URLパターン→サーブレットクラス→遷移先のページという流れ。
@WebServletアノテーションとweb.xmlの関係
・@WebServletアノテーションはServlet3.0から利用できるようになった機能。
・それ以前はweb.xmlにより、URLと呼び出すサーブレットクラスの対応をつけていた。
・name属性(省略した場合はクラス名)→web.xmlにおけるservlet-name
・アノテーションをつけているサーブレットクラス→web.xmlにおけるservlet-class
・urlPatterns属性→web.xmlにおけるurl-pattern
www.searchman.info
www.javaroad.jp
Eclipseでサーバー連携した場合(Servers)
・Tomcatインストールディレクトリとはべつに、ワークスペース内に設定フォルダが格納されるようになる。
例:E:\pleiades\workspace\Servers\ローカル・ホスト の Tomcat7 (Java7)-config
・Servers\server.xml→サーバーに関する設定の記述。
・docBase→アプリケーションのルートディレクトリ。
・appBase→Tomcatが扱うアプリケーションのトップディレクトリ。ここにwarファイルおいておけばTomcat起動時などに自動でwarを展開してデプロイ。
EclipseでTomcatサーバを起動した場合に公開される場所
つまりはwarファイルの配備などはせずにeclipseからサーバー起動などした場合に、どこにアプリケーションのclassファイルが展開されるか。
Eclipse for Java EE からTomcatのサーブレットコンテナを起動すると、サーバ本来の公開ディレクトリとは別のディレクトリに公開される。 プロジェクトのWebContentは、以下のテンポラリディレクトリにコピーされ、ここに公開されます。
→[ワークスペース].metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
ameblo.jp
ちなみに、そもそもどこで設定しているか探してみましたが、grepしてみた限りだと、おそらくは.metadata内だと見られます。
そのため、開発者で変更できるような設定かどうかはよくわかりません。
Tomcatによるデプロイについて
・デプロイとは、WebアプリケーションをTomcatサーバーにインストールすること。
・warファイルを使用する場合、warファイルをサーバーに配備し、(設定にもよるが)ディレクトリファイルとして展開するというプロセスになる。
・具体的には、warファイルをappBase配下に置くことで、Tomcatはwarファイルを展開する。
・Tomcatはデプロイ元としてwarファイルではなく展開先のフォルダの中身を参照し、実行する。
ozuma.hatenablog.jp
www.slideshare.net