Revised: 16th/June/2002
前節で作った GET メソッドと POST メソッドで HTML フォームを処理するサーブレットに対して、サーブレット名を付けて、 URL パターンを設定します。これらの情報は、サーブレットが置かれているドキュメントルート内の WEB-INF/web.xml
に記述します。ドキュメントルートが C:\DocRoot
にマップされていれば、 C:\DocRoot\WEB-INF\web.xml
になります。
この作業はサーブレットの最初の節で行いました。ここでは、 GET メソッドのサーブレット GetDemo
は get
と名づけて、 /form/get
にマップします。同様に、 PostDemo
は post
と名づけて /form/post
にマップします。
web.xml
の変更は Tomcat を停止/開始して反映させます。
このように設定すると、これらのサーブレットへは、次の URL でアクセスできます。但し、ドキュメントルートが webAppl
に設定されている場合の例です。
http://localhost:8080/webAppl/form/get
http://localhost:8080/webAppl/form/post
GetDemo
の設定web.xml
の編集C:\DocRoot\WEB-INF\classes\GetDemo.class
へ、 http://localhost:8080/webAppl/form/get
からアクセスできるようにするには、 C:\DocRoot\WBE-INF\web.xml
を次のように編集/保存して Tomcat を再開始します。
<?xml version="1.0" encoding="Shift_JIS"?> <!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>Hello</servlet-name> <servlet-class>HelloWorld</servlet-class> </servlet> <servlet> <servlet-name>get</servlet-name> <servlet-class>GetDemo</servlet-class> </servlet> <!-- URL マッピング --> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/hello.hogehoge</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>get</servlet-name> <url-pattern>/form/get</url-pattern> </servlet-mapping> </web-app>
Tomcat が正常に再開始できたら、変更が反映されているか、ブラウザで確認します。サーブレットの呼び出しは http://localhost:8080/webAppl/form/get
になります。
フォーム・データの受け取りは GET メソッドでは URL につなげて送信されますので、ここでは、直接 URL にデータをつなげて要求してみましょう。もちろん、前述の GET メソッド用の HTML フォームで、 form 要素の action 属性値を、/webAppl/form/get
に書き換えて要求しても同じです。
ためしに、上記 URL に続けて、 ?namae=suzuki&toshi=24&sei=female&memo=hello
としてみます。次のデータを送信することになります:
name | value |
---|---|
namae | suzuki |
toshi | 24 |
sei | female |
memo | hello |
ブラウザから要求する URL は全体で http://localhost:8080/webAppl/form/get?namae=suzuki&toshi=24&sei=female&memo=hello
になり、その要求に対する応答は次のようになります:
![]() |
図:GET メソッドに対する応答 |
<html lang="ja"> <head><title>HTTP GET メソッド・デモ</title> <meta http-equiv="text/html" content="text/html; charset=Shift_JIS" /></head> <body> <h1>HTTP GET メソッド・デモ</h1> <table border="1"> <tr><th>名前</th><td>suzuki</td></tr> <tr><th>年齢</th><td>24</td></tr> <tr><th>性別</th><td>female</td></tr> <tr><th>メモ</th><td>hello</td></tr> </table> </body></html>
PostDemo
の設定同様に、 C:\DocRoot\WEB-INF\classes\PostDemo.class
へ、http://localhost:8080/webAppl/form/post
からアクセスできるように、 WEB-INF/web.xml
を書き換えて、 Tomcat を再開始します。また、 POST メソッドの HTML フォームを書き換えて、マッピングした新しいアドレスへ要求を出して、応答を確認します。
web.xml
本サイトの案内どおりに作っていれば、 C:\DocRoot\WEB-INF\web.xml
になります。
<?xml version="1.0" encoding="Shift_JIS"?> <!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>Hello</servlet-name> <servlet-class>HelloWorld</servlet-class> </servlet> <servlet> <servlet-name>get</servlet-name> <servlet-class>GetDemo</servlet-class> </servlet> <servlet> <servlet-name>post</servlet-name> <servlet-class>PostDemo</servlet-class> </servlet> <!-- URL マッピング --> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/hello.hogehoge</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>get</servlet-name> <url-pattern>/form/get</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>post</servlet-name> <url-pattern>/form/post</url-pattern> </servlet-mapping> </web-app>
本サイトの案内どおりに作っていれば、 C:\DocRoot\post.html
になり、 Tomcat が稼動している場合は、 http://localhost:8080/webAppl/post.html
からアクセスできます。
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" >
<head>
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS" />
<title>POST メソッドのフォーム</title>
</head>
<body>
<h1>HTTP POST メソッド</h1>
<form action="/webAppl/form/post" method="POST">
<p>POST メソッドのフォームの例</p>
<table>
<tr><th>name:</th><td><input type="text" name="namae" size="30" /></td></tr>
<tr><th> age:</th><td><input type="text" name="toshi" size="2" maxlength="2" /></td></tr>
<tr><th> sex:</th><td><input type="radio" name="sei" value="male" />male
<input type="radio" name="sei" value="female" />female</td></tr>
<tr><th>message:</th><td><input type="text" name="memo" size="50" /></td></tr>
<tr><td></td><td><input type="submit" name="submit" value="送信" /></td></tr>
</table>
</form>
</body>
</html>
但し、これは文字コードが Shift_JIS (SJIS) の場合です。他の文字コードで保存している場合は、上記ソースの二箇所の文字コード指定(1行目と6行目)を書き換えてください。
web.xml
の変更は、 Tomcat を停止/開始して反映します。 HTML 文書も、見た目は変わらないので、ブラウザの「更新(リロード)」ボタンを押して、更新されている事を確認しましょう。
Tomcat が稼動している事を確認して、 http://localhost:8080/webAppl/post.html
にアクセスし、 HTML フォームにデータを入力します。
![]() |
図:POST メソッドのフォーム |
実行ボタン (submit) を押して、正しくサーブレットへ要求が伝わるか確認します。
![]() |
図:POST メソッドに対する応答 |