Webアプリケーションとは、サーブレット、データクラス/Bean、JSP、HTMLファイル、イメージファイル、その他のリソースファイルなどをまとめた、アプリケーションのことです。
Webアプリケーションは、warアーカイブとしてまとめることができるため、簡単にインストールができます。
 Webアプリケーションは、Webアプリケーション名という識別子を持ちます。
URIでは、この識別子をディレクトリのようにして使います。
そのため、Webアプリケーション独自の名前空間を構成することができます。
Webアプリケーションを使用するにあたり、各ファイルの格納ディレクトリは、以下のようになります。
ファイル等の格納方式には、展開ディレクトリを使う場合と、warアーカイブを使う場合があり、配置方法が異なります。 warアーカイブを使うと、1ファイルにすべて格納されるため、インストールが簡単になります。 以下に、その方法について記述します。
サーブレットを使用するためには、デプロイメント記述子(web.xml)に追加する必要があります。 web.xmlファイルは、Webアプリケーション名/WEB-INFディレクトリに格納されています。 <servlet>タグと、<servlet-mapping>タグの値をセットで設定する必要があります。
| 
<?xml version="1.0" ?>
<!DOCTYPE web-app PUBLIC
  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
  <servlet>
    <servlet-name>サーブレット名</servlet-name>
    <servlet-class>サーブレットクラス名</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>サーブレット名</servlet-name>
    <url-pattern>/サーブレットURL/*</url-pattern>
  </servlet-mapping>
</web-app>
 | 
Webアプリケーション開発時のディレクトリ構成の例です。 このディレクトリ構成に合わせると、以下のビルドファイルがそのまま使えます。
| ソースファイル、ディレクトリ | 内容 | 
|---|---|
| /home/WebApp/setenv.cmd /home/WebApp/setenv.sh | 環境設定用コマンド | 
| /home/WebApp/build.xml | Antのビルドファイル | 
| /home/WebApp/build.properties | 環境固有の設定ファイル | 
| /home/WebApp/WEB-INF/web.xml | デプロイメント記述子 | 
| /home/WebApp/htdocs/ | JSPソース、HTMLファイル、イメージファイル | 
| /home/WebApp/src/jp/ash/webapp/*.java | Javaソースファイル | 
| 生成ファイル、ディレクトリ | 内容 | 
| /home/WebApp/build/WEB-INF/web.xml | ビルド用デプロイメント記述子 | 
| /home/WebApp/build/WEB-INF/*.jsp | ビルド用JSPソースファイル | 
| /home/WebApp/build/WEB-INF/classes/jp/ash/webapp/*.class | ビルド用Javaクラスファイル | 
| /home/WebApp/dist/WebApp.war | 生成したwarアーカイブファイル | 
| /home/WebApp/javadoc/ | javadoc出力用ディレクトリ | 
 ビルドは、Java版のメイクツールであるAntを使って行います。
生成方法は、build.xmlに記述します。
 javadocにも対応したbuild.xmlの例です。
| build.xml | 
|---|
| 
<project name="Build Servlet and JSP" default="all" basedir=".">
  <!-- set property -->
  <property file="build.properties" />
  <property name="source"         value="./src" />
  <property name="htdocs"         value="./htdocs" />
  <property name="javadoc"        value="./javadoc" />
  <target name="all" depends="init,compile,copy" />
  <!-- Initialize -->
  <target name="init">
    <mkdir dir="${APPLICATION}" />
    <mkdir dir="${APPLICATION}/WEB-INF" />
    <mkdir dir="${APPLICATION}/WEB-INF/classes" />
    <mkdir dir="${APPLICATION}/WEB-INF/lib" />
    <copy todir="${APPLICATION}/WEB-INF">
      <fileset dir="WEB-INF">
        <include name="web.xml" />
        <include name="*.tld" />
      </fileset>
    </copy>
  </target>
  <!-- compile java sources -->
  <target name="compile">
    <javac srcdir="${source}" destdir="${APPLICATION}/WEB-INF/classes"
      classpath="${APPLICATION}/WEB-INF/classes"
      encoding="${ENCODING}"
      debug="on" optimize="off" deprecation="off" />
  </target>
  <!-- copy jsp sources -->
  <target name="copy">
    <copy todir="${APPLICATION}">
      <fileset dir="${htdocs}">
      </fileset>
    </copy>
  </target>
  <!-- make javadoc -->
  <target name="javadoc">
    <delete dir="${javadoc}" />
    <mkdir dir="${javadoc}" />
    <javadoc sourcepath="${source}" packagenames="${PACKAGE}" destdir="${javadoc}" />
  </target>
  <!-- clean work file -->
  <target name="clean">
    <delete dir="${javadoc}" />
  </target>
</project>
 | 
 war生成方法は、build.xmlに記述します。
 javadocにも対応したbuild.xmlの例です。
| build.xml | 
|---|
| 
<project name="Build Servlet and JSP" default="all" basedir=".">
  <!-- set property -->
  <property file="build.properties" />
  <property name="source"         value="./src" />
  <property name="htdocs"         value="./htdocs" />
  <property name="build"          value="./build" />
  <property name="javadoc"        value="./javadoc" />
  <target name="all" depends="init,compile,copy,war" />
  <!-- Initialize -->
  <target name="init">
    <mkdir dir="${build}" />
    <mkdir dir="${build}/WEB-INF" />
    <mkdir dir="${build}/WEB-INF/classes" />
    <mkdir dir="${build}/WEB-INF/lib" />
    <copy todir="${build}/WEB-INF">
      <fileset dir="WEB-INF">
        <include name="web.xml" />
        <include name="*.tld" />
      </fileset>
    </copy>
  </target>
  <!-- compile java sources -->
  <target name="compile">
    <javac srcdir="${source}" destdir="${build}/WEB-INF/classes"
      classpath="${build}/WEB-INF/classes"
      encoding="${ENCODING}"
      debug="on" optimize="off" deprecation="off" />
  </target>
  <!-- copy jsp sources -->
  <target name="copy">
    <copy todir="${build}">
      <fileset dir="${htdocs}">
      </fileset>
    </copy>
  </target>
  <!-- archive webapplication  -->
  <target name="war">
    <jar jarfile="${SERVER}/${APNAME}.war" basedir="${build}">
    </jar>
  </target>
  <!-- make javadoc -->
  <target name="javadoc">
    <delete dir="${javadoc}" />
    <mkdir dir="${javadoc}" />
    <javadoc sourcepath="${source}" packagenames="${PACKAGE}" destdir="${javadoc}" />
  </target>
  <!-- clean work file -->
  <target name="clean">
    <delete dir="${build}" />
    <delete dir="${javadoc}" />
  </target>
</project>
 | 
Linux版の場合、ソースファイルは、EUCコードに変換します。 JSPでは、ファイル内の文字のエンコード指定が必要ですので、すべて修正する必要があります。
| <%@ page contentType="text/html; charset=EUC-JP" %> | 
 ServletAPI2.3に準拠している、Tomcat4.0では、リクエスト変数のエンコード指定することで、日本語の入力が可能になります。
 しかし、ServletAPI2.2以前に準拠している、Tomcat3.2では、パラメータの文字コード変換がされないという問題が発生します。
そのため、以下のように、プログラムを修正する必要があります。
最新版のTomcat4.0や、WebLogicServerでは、必要はないみたいです。
| 
●ServletAPI2.3(Tomcat4.0)の場合の文字コード変換方法
// リクエスト変数のエンコード指定
req.setCharacterEncoding("EUC-JP");
●ServletAPI2.2(Tomcat3.2)の場合の文字コード変換方法
// セッション変数(ユーザ名)の設定
addr.name = req.getParameter("name");
// 文字コードをEUCに変換
addr.name = new String(addr.name.getBytes("8859_1"), "EUC-JP");
 | 
build.xmlでは、Tomcatなど、プラットフォームに固有の値をbuild.propertiesファイルで設定します。
| build.properties | 
|---|
| 
APNAME=WebApp
PACKAGE=jp.ash.webapp
ENCODING=EUC-JP
TOMCAT_HOME=/usr/local/jakarta-tomcat
SERVER=${TOMCAT_HOME}/webapps
APPLICATION=${SERVER}/${APNAME}
 | 
以下のコマンドを実行すると、ビルドできます。
| unix# cd /home/WebApp unix# sh setenv.sh unix# ant | 
Tomcatでは、server.xmlファイルを修正することで、Webアプリケーションを追加することができます。
| server.xml | 
|---|
| 
<Server>
  <ContextManager>
.....
    <Context path="/WebApp"
      docBase="webapps/WebApp"
      crossContext="false"
      debug="0"
      reloadable="true">
    </Context>
.....
  </ContextManager>
</Server>
 | 
Windows2000版の場合、ソースファイルは、Shift_JISコードに変換します。 JSPでは、ファイル内の文字のエンコード指定が必要ですので、すべて修正する必要があります。
| <%@ page contentType="text/html; charset=Shift_JIS" %> | 
build.xmlでは、WebLogicServer6.1など、プラットフォームに固有の値をbuild.propertiesファイルで設定します。
| build.properties | 
|---|
| 
APNAME=WebApp
PACKAGE=jp.ash.webapp
ENCODING=Shift_JIS
WL_HOME=c:/bea/wlserver6.1
SERVER=${WL_HOME}/config/mydomain/applications
APPLICATION=${SERVER}/${APNAME}
 | 
以下のコマンドを実行すると、ビルドできます。
| DOS# c:\bea\wlserver6.1\config\mydomain\setEnv.cmd DOS# cd c:\home\WebApp DOS# ant | 
WebLogicServerでは、管理用コンソール画面を使う方法と、config.xmlファイルを修正する方法があります。
| WebLogicServerの起動(startWebLogic.cmd) コンソール起動(http://localhost:7001/console/) 左フレームの[Webアプリケーション]を選択 右クリックで[新しいWeb Applicationのコンフィグレーション]を選択 名前、URIの設定(名前はWebアプリケーション名) 対象サーバを選択済みにする | 
| 
<Domain Name="mydomain">
  .....
  <Application Deployed="true" Name="WebApp" Path="c:\bea\wlserver6.1\config\mydomain\applications">
    <WebAppComponent Name="WebApp" Targets="myserver" URI="WebApp" />
  </Application>
  .....
</Domain>
 | 
以下のURLで実行できます。 実行する場合は、WebLogicサーバを起動しておく必要があります。
| http://localhost:7001/WebApp/HelloServlet http://localhost:7001/WebApp/AddrServlet http://localhost:7001/WebApp/IndexServlet |