ASH | サーバ | セキュリティ | Linux | FreeBSD | DB | Web | CGI | Perl | Java | XML | プログラム | ネットワーク | 標準 | Tips集

Webアプリケーションについて

Webアプリケーションとは

 Webアプリケーションとは、サーブレット、データクラス/Bean、JSP、HTMLファイル、イメージファイル、その他のリソースファイルなどをまとめた、アプリケーションのことです。 Webアプリケーションは、warアーカイブとしてまとめることができるため、簡単にインストールができます。
 Webアプリケーションは、Webアプリケーション名という識別子を持ちます。 URIでは、この識別子をディレクトリのようにして使います。 そのため、Webアプリケーション独自の名前空間を構成することができます。

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アプリケーションのビルド方法

Webアプリケーション開発時のディレクトリ構成

 Webアプリケーション開発時のディレクトリ構成の例です。 このディレクトリ構成に合わせると、以下のビルドファイルがそのまま使えます。

ソースファイル、ディレクトリ内容
/home/WebApp/setenv.cmd
/home/WebApp/setenv.sh
環境設定用コマンド
/home/WebApp/build.xmlAntのビルドファイル
/home/WebApp/build.properties環境固有の設定ファイル
/home/WebApp/WEB-INF/web.xmlデプロイメント記述子
/home/WebApp/htdocs/JSPソース、HTMLファイル、イメージファイル
/home/WebApp/src/jp/ash/webapp/*.javaJavaソースファイル
生成ファイル、ディレクトリ内容
/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アーカイブファイル作成用ビルドファイルの作成

 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>

Tomcat4.0/3.2(Linux版)の場合の環境設定方法

ソースファイルの文字コード設定

 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のpropertiesファイル(build.properties)の設定方法

 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

新しいWebアプリケーションを追加する方法

 Tomcatでは、server.xmlファイルを修正することで、Webアプリケーションを追加することができます。

server.xml
<Server>
  <ContextManager>
.....
    <Context path="/WebApp"
      docBase="webapps/WebApp"
      crossContext="false"
      debug="0"
      reloadable="true">
    </Context>
.....
  </ContextManager>
</Server>

WebLogicServer6.1(Windows2000版)の場合の環境設定方法

ソースファイルの文字コード設定

 Windows2000版の場合、ソースファイルは、Shift_JISコードに変換します。 JSPでは、ファイル内の文字のエンコード指定が必要ですので、すべて修正する必要があります。

<%@ page contentType="text/html; charset=Shift_JIS" %>

build.xmlのpropertiesファイル(build.properties)の設定方法

 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

新しいWebアプリケーションを追加する方法

 WebLogicServerでは、管理用コンソール画面を使う方法と、config.xmlファイルを修正する方法があります。

実行方法

 以下のURLで実行できます。 実行する場合は、WebLogicサーバを起動しておく必要があります。

http://localhost:7001/WebApp/HelloServlet
http://localhost:7001/WebApp/AddrServlet
http://localhost:7001/WebApp/IndexServlet


Copyright (C)1995-2002 ASH multimedia lab.
mail : info@ash.jp