Javaで作ったWebアプリケーションを動かすためには、動かすための環境Webコンテナ(サーブレットコンテナ)が必要だ。
このページではTomcatを例にフォルダ構成と、アプリケーションをどのようにおいて動かしていくかを見ていこう。
目次
Tomcatのフォルダ構成
まずはTomcatのフォルダ構成について見ていこう。
重要なのは bin,conf,logs,webappsの各フォルダだ。そのほかはTomcatのAPIなどライブラリが入っているので、動かす際に触ることはない。
フォルダ名 |
説明 |
bin |
Tomcatの実行ファイルがある。Tomcat自体の起動や停止を行う。 |
conf |
Tomcat全体の設定ファイルがある。 |
logs |
Tomcatのログが出力される。エラーが起こった時にログから原因を探そう。 |
webapps |
ここへアプリケーションを配備する。 |
Tomcatは、webapps配下に置かれたフォルダを起動時に自動的に読み込み、実行する。フォルダの構成にも決まりがある。Tomcatには「exampls」というサンプルが用意されているので、まずはそこを見て参考にするとよいだろう。
アプリケーション配備のフォルダ構成
「exampls」のフォルダ構成は次のようになっている。この中のWEB-INFフォルダが重要だ。
WEB-INFフォルダの中はこのような構成だ。
フォルダ(ファイル)名 |
説明 |
classes |
作成したプログラムをコンパイルし置く |
lib |
Webアプリケーションを動かすために必要なライブラリがあった場合、このフォルダへ |
web.xml |
設定ファイル。ここに使用するサーブレットクラスを記述したり、追加したライブラリ情報を記述したりする。 |
サーブレットでHelloWorld
サーブレットでHelloWorldを表示してみよう。用意するのは次の二つのファイルだ。
- サーブレットのクラスファイル
- xml
サーブレットクラス作成
まずはHelloWorldと表示するサーブレットクラスを作成しよう。ここでは細かなコードや設定ファイルの内容についての説明は割愛し、動かすことを目的としてサンプルコードを載せる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class ServletSample1 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html><head></head><body>"); out.println("<p>Sample</p>"); out.println("<p>Hello World!!!</p>"); out.println("</body></html>"); } } |
サンプルコードをテキストエディタで作成し「ServletSample1.java」と名前を付けて保存しよう。
web.xml作成
次にweb.xmlファイルを作成する。
web.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>Sample</servlet-name> <servlet-class>ServletSample1</servlet-class> </servlet> <servlet-mapping> <servlet-name>Sample</servlet-name> <url-pattern>/Sample</url-pattern> </servlet-mapping> </web-app> |
アプリケーションの配備
作った二つのファイルを配備しよう。
- Tomcatを置いたフォルダのwebappsフォルダに「ServletSample1」フォルダを作成する。
- ServletSample1フォルダの中にWEB-INFフォルダを作成する。
- WEB-INFフォルダの中にclassesフォルダを作成する。
- WEB-INFフォルダへxmlを置く。
- classesフォルダへjavaファイルを置く。
コンパイル
次のServletSample1.javaをコンパイルしよう。まず、コマンドプロンプトを立ち上げ「ServletSample1.java」を置いたフォルダまで移動しよう。コンパイルはクライアントアプリと同じく「javac」コマンドを使う。
javac ServletSample1.java
上記のようなエラーが出たらサーブレットのクラスライブラリにパスが通っていないためだ。サーブレットのクラスライブラリはTomcatのインストールフォルダ\lib\servlet-api.jarなので直接指定し次のようにjavacコマンドを実行しよう。
javac -classpath %CATALINA_HOME%¥lib¥servlet-api.jar ServletSample1.java
するとこのように同じ名前で拡張子が「.class」ファイルができる。
これで準備完了だ。
実行結果
いよいよ、Webブラウザからアプリケーションを確認しよう。Tomcatを起動させ、Webブラウザを立ち上げ次のアドレスにアクセスすると画面が表示される。
http://localhost:8080/ServletSample1/Sample
まとめ
このページではTomcatでWebアプリケーションを作る際のフォルダ構成についてご紹介してきた。参考にしていただければ幸いだ。
記事参考にさせていただいております。
ところで、
"アプリケーションの配備
作った二つのファイルを配備しよう。"
の説明箇所で、「WEB-INF」フォルダを作る説明が抜けているようです。(図ではWEB-INFフォルダはありました)
ご確認ください。
ご指摘いただきありがとうございます。
該当箇所を追加いたしました。
引き続き、ご愛読のほど、よろしくお願いいたします。