2007 年 3 月 12 日 23 時 59 分

ログインフォームを作る


このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。


[写真]


Servlet の処理の流れが分かったところで、
次は Model(動作)の必要な処理について考えてみよう。

一般的な GUI アプリケーションが Model を起動するのは、
利用者がボタンを押して、何らかの処理を要求した時である。

Web アプリケーションの場合は、
HTML フォームの送信ボタンを押し、
Web サーバにフォーム内容を送信した時である。

そこで、昨日作った login.jsp に、
簡単なログインフォームを作ってみよう。

========== /WEB-INF/pages/login.jsp ==========
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8" %>
<!DOCTYPE html PUBLIC
        "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
        xml:lang="ja" lang="ja">

<head>
    <meta http-equiv="Content-type"
            content="text/html; charset=UTF-8" />
    <title>struts-test ログイン</title>
</head>

<body>
    <h1>ログイン</h1>
    <form action="./login.do" style="line-height: 2">
        <div>
            ユーザ名:
            <input type="text" name="user" value="" />
        </div>
        <div>
            パスワード:
            <input type="password" name="password" value="" />
        </div>
        <div>
            <input type="submit" value="ログイン" />
        </div>
    </form>
</body>

</html>
========== end of /WEB-INF/pages/login.jsp ==========

フォームには入力項目が 2 つあり、
それぞれ user, password という名前である。
そして、フォームの送信先は ./login.do だ。

何の変哲もないログインフォームである。
あえて言うなら、送信先が *.do という URL であることか。

http://localhost:8080/struts-test/index.do を開くと、
ログイン用のフォームが表示されるはずだ。

このフォームを受け取る URL を定義するには、
Struts の設定ファイルに <action> を追加すればよい。

さて、以前の <action> は、View に転送するだけだったが、
今度の <action> はフォームを受け取って処理を行う。
そのため、Model に転送するタイプでないといけない。

    <action path="/login"
            type="jp.loafer.test.actions.LoginAction" />

Model に転送するタイプの <action> は、
forward の代わりに type 属性を指定する。
Struts における Model は Java クラスであるため、
type 属性には、Model クラスの FQCN を指定する。
(FQCN = Fully Qualified Class Name = 完全修飾クラス名)

jp.loafer.test.actions.LoginAction クラスを作ることで、
フォームの入力を処理することができるようになる。



Copyright (c) 1994-2007 Project Loafer. All rights reserved.