ここからは、JavaのWebアプリケーションを構築するのに必要な設定ファイルserver.xmlとweb.xmlを説明していきます。
server.xmlとは、Tomcatの動作をXML形式で定義するメインの設定ファイルであり、Tomcat起動時に読み込まれます。変更した場合は、必ずTomcatの再起動が必要になります。server.xmlは、「$CATALINA_HOME/conf/」ディレクトリ配下にあります。
server.xmlの基本ルールとして上位の属性は、自動的に下位の要素に継承されます。server.xmlで設定できるタグの説明は、以下のようになります。各タグで設定できる属性についての説明は省略します。
タグ | 説明 | |
---|---|---|
<Server> | Tomcatサーバコンポーネントを定義している。デフォルトでは、ポート番号8005を監視してSHUTDOWNコマンドを受け付けるように設定されている。最上位のタブ | |
<Service> | サービスコンポーネントを定義している。<Connector>タグと<Engine>タグをグループ化したもの | |
<Engine> | Tomcatエンジンの設定を定義している。エンジンは、サーブレットコンテナのインスタンスを表し、コネクタから送られてくるリクエストを処理する | |
<Connector> | コネクタは、リクエストをエンジンに渡す役割がある。デフォルトでは、ポート番号8080でクライアントからのリクエストを受け付けることを表している | |
<Logger> | ログファイルの生成方法を定義している | |
<Host> | Tomcatエンジンに関連付く仮想ホストを定義。複数の仮想ホストを関連付けることで、複数のWebアプリケーションを実行・管理が可能になる | |
さらに詳しく知りたい読者は「Tomcatの主要な設定はserver.xmlで」やJava TIPSの「アプリケーションサーバ/コンテナ活用編」をご参照ください。
web.xmlとは、Webアプリケーション配下の構成情報を記述するサーブレット/JSPの設定ファイルで、これもXML形式となります。web.xmlでは、サーブレット定義やセッション定義、認証設定など、Webアプリケーションの動作を規定する設定を行います。
web.xmlは「配備記述子」または「デプロイメント・ディスクリプタ辛い(Deployment Descriptor)」と呼ばれ、Tomcatでは、「$CATALINA_HOME/ conf/」ディレクトリ配下にあり、すべてのWebアプリケーションに適用されます。
アプリケーションルート配下の「\WEB-INF」フォルダのweb.xmlは各コンテキストごとの動作に適用されます。Strutsに限らず、サーブレット/JSPアプリケーションを構築する場合、web.xmlの設定は必須です。web.xmlで設定できるタグは主に以下のようになります。
タグ | 説明 | |
---|---|---|
<description> | コンテキストの説明を記載。メモ情報の記述などを行う | |
<disptay-name> | GUI表示用のアプリケーション名を定義 | |
<context-param> | アプリケーション全体で共通の初期化パラメータを記述。実行中に値を変更できない | |
<filter-mapping> | フィルタを適用する対象を指定する。URLパターンかサーブレット名で指定 | |
<listener> | アプリケーションで発生したイベントに応じて何らかの処理を行いたい場合に記述 | |
<servlet> | サーブレットのインスタンスに関する定義。初期化パラメータ、アクセス制限などを指定 | |
<servlet-mapping> | URLでアクセスする際のサーブレットクラスの名称を指定する | |
<session-config> | セッションの保持する時間を指定 | |
<mime-mapping> | ファイルの拡張子に応じて返送するMIMEタイプの設定をする | |
<welcome-file-list> | URLでファイル名を指定しないリクエストがあった場合に、返送するファイル名を指定 | |
<error-page> | 特定のHTTPエラーコードをクライアントに返送した場合または、リクエスト処理中にサーブレットコンテナが特定の例外をcatchした場合に、クライアントに返送するページを指定できる | |
<jsp-config> | JSPページに関する共通の情報を定義。JSPタグライブラリの定義ファイルを指定 | |
<security-constraint> | 特定の条件に合ったリクエストに対するアクセス制限を定義 | |
<login-config> | アプリケーションで用いる認証方法を定義。認証方式、レルム方式を指定 | |
<security-role> | 認証で使用するロールを定義 | |
<resource-ref> | 外部リソースへの参照名を定義 | |
<locale-encoding-mapping-list> | ロケールと文字エンコーディングの関連付けを定義 | |
さらにweb.xmlの書き方について詳しく知りたい読者は「web.xmlの書き方を確認しよう!」をご参照ください。
これまで何度も説明してきたとおり、Webブラウザはサーバに要求を送るクライアントのソフトウェアの1つです。Webサーバにアクセスする場合、Webブラウザのアドレス欄にURLを入力するか、お気に入りやハイパーリンクをクリックしてURLを指定します。
URLの始めが「http:」の場合、Webサーバへのアクセスということになります。ほかに「ftp:」「file:」「mailto:」「news:」などで始まる場合もあり、Webブラウザはいくつかの機能を備えられたクライアントソフトだといえます。Webブラウザについて復習したい読者は「いまさら聞けない『Webブラウザ』超入門」を参考にしてください。
インターネットの場合、Webブラウザのアドレス欄にURL(「http://www.atmarkit.co.jp」)を入力して送信してからは、まずWebサーバのIPアドレスをDNSサーバに聞きに行きます。そのIPアドレス(202.218.219.132)とURLに含まれるファイル名を基にHTTPリクエスト(http://202.218.219.132)を作成し、WebサーバへHTTPリクエストを送信します。
HTTPリクエストの内容は、アクセス先(URIまたはURL)と振る舞い(メソッド)が書かれています。1行目のリクエストラインが、メソッド、URI、HTTPバージョンとなっていますが、GETメソッドは、URIで指定したリソースを取得するときに使います。
HTTPリクエストの例 | |
|
WebにアクセスするためのWebブラウザは、代表的なユーザーエージェントですが、Webページにアクセスすると、サーバに対してクライアントからユーザーエージェントが送信されます。
ユーザーエージェントには、使用しているWebブラウザとバージョン、システムの詳細情報(OSの種類など)が含まれており、Webサーバはこの受け取った情報を基に、アクセスしてきたソフトウェアやハードウェアを識別できます。携帯電話の対応機種を識別したり、Webブラウザによって表示を変えるなどし、最適なコンテンツを提供できます。
ちなみに、Webブラウザのアドレス欄に以下のような、JavaScriptを入力すると、ユーザーエージェントの確認ができます。
|
すると、例えば以下のような文字列が表示されるはずです。
次ページでは、前回作成したStrutsのサンプルアプリケーションを題材に、Webアプリケーションにおけるクライアントとサーバの関係性と、具体的な処理の流れをソースコードにそって解説します。
Copyright © ITmedia, Inc. All Rights Reserved.