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 |