Webアプリケーションの動作確認

Revised: 26th/Apr./2008; Since: 25th/Nov./2002

server.xmlの編集

WARを${CATALINA_HOME}/webapps以外の場所へデプロイしてみましょう。"${CATALINA_HOME}/conf/server.xml"をテキストエディタで開いてください。ここで、${CATALINA_HOME}はTomcatをインストールしたディレクトリのパス名です。ここでは、"C:\Program Files\Apache Software Foundation\Tomcat 6.0"になっています。

次の例は、"D:\java\webappl\helloworld.war"に作成したドキュメント・ベース(または、コンテキスト・ルート)に対して、ブラウザからhttp://localhost:8080/myWebApplでアクセスできるようにする場合の例です。ここで、/myWebApplコンテキスト・パスと呼びます。

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
        :
        <!-- My Context Path: D:\java\webappl as /myWebAppl -->
        <Context path="/myWebAppl" docBase="D:\java\webappl\helloworld.war"
                 reloadable="true" crossContext="true" />
      :
      </Host>

Tomcatを再起動してください。server.xmlの更新の反映には、Tomcatの再起動が必要です。

HTML文書の表示

server.xmlへの更新が反映されたか確認します。動作を確認するために、上で作ったドキュメント・ベースに、次のコードを持つindex.htmlを置いてください。

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" >
  <head>
    <meta http-equiv="content-type" content="text/html; charset=shift_jis" />
    <title>Hello, World!</title>
  </head>
  <body>
    <h1>Hello, World!</h1>
    <p>ウェブ・アプリケーションの世界へようこそ!これはサンプル・ドキュメントです。</p>
    <p><a href="./Welcome">サーブレットの起動</a></p>
  </body>
</html>

保存時に文字コードが選べれば Shift_JIS を選択してください。

ブラウザから次の URL を要求してください。実際には、アドレス欄に以下の URL を入力して enter キーを押してください。

http://localhost:8080/myWebAppl/[localhost:8080]

無事に HTML 文書が表示されれば成功です。サーブレットは、まだ作ってないので404 Not Foundが返されます。

ドキュメント・ベース配下にサブ・ディレクトリを自由に作って動作を確認してください。例えば、ドキュメント・ベース配下の"/subdir/hello.html"へのアクセスは "http://localhost:8080/myWebAppl/subdir/hello.html" になります。ここにmyWebApplserver.xmlで設定したコンテキスト・パスです。

サーブレットの実行

サーブレットの作成

次にドキュメント・ベース配下の"WEB-INF/classes"に、次のコードを持つHelloWorld.javaを作成し、コンパイル/実行してください。

import java.util.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWorld extends HttpServlet {
	public void doGet(HttpServletRequest req, HttpServletResponse res)
	        throws ServletException, IOException {
		// 送信文字コードのセット
		res.setContentType("text/html; charset=Shift_JIS");
		// 出力ストリームの取得
		PrintWriter out = res.getWriter();

		String title = "Hello World!";
		Date date = new Date();

		// 出力ストリームへの書き込み
		out.println("<html lang=\"ja\">");
		out.println("<head><title>" + title + "</title></head>");
		out.println("<body>");
		out.println("<h1>" + title + "</h1>");
		out.println("<p>現在時刻:" + date + "</p>");
		out.println("</body></html>");

		// 出力ストリームのクローズ
		out.close();
	}
}

次のコードは、 Windows のコマンド・プロンプトでの、上記のHelloWorld.javaのコンパイルです。

D:\java\webappl\helloworld.war\WEB-INF\classes>javac -classpath "C:\Program File
s\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar" HelloWorld.java

D:\java\webappl\helloworld.war\WEB-INF\classes>

-classpathフラグの引数 ""C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar"" は、Tomcat と共に導入されたserver-api.jarへの絶対パスです。インストール・ディレクトリを${CATALINA_HOME}と書けば、"${CATALINA_HOME}\lib\servlet-api.jar" になります。これはOSの環境変数CLASSPATHにセットしておけば不要です。

web.xmlの作成

このサーブレットにアクセスするパス(URLパターン)を、"WEB-INF/web.xml"に記述します。次のソースをコピーして、"WEB-INF/web.xml"を作成してください。

<?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>hello</servlet-name>
        <servlet-class>HelloWorld</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/Welcome</url-pattern>
    </servlet-mapping>

</web-app>

Tomcatへの反映

Tomcatは、web.xmlの編集結果は即時反映しません。[Webアプリケーションマネージャ]から[再ロード]を選ぶか、Tomcatを再起動することで反映されます。

再ロード結果
図:再ロード結果

サーブレット実行結果

次の画像は、ブラウザから"http://localhost:8080/myWebAppl/Welcome"を要求したときの実行結果です。

HelloWorldの実行結果
図:HelloWorldの実行結果


Copyright © 2002-2008 SUGAI, Manabu. All Rights Reserved.
SEO [PR] !uO z[y[WJ Cu