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 |