トップページ >  Struts >  リクエスト
初版2006/08/19 最終更新日2006/08/19
  リクエスト
目次
リクエストコンテキストとは
Actionクラスの例
JSPの例
アクションフォームをリクエストコンテキストに保存する
Actionクラスの例
JSPの例
リクエストコンテキストとは
リクエストコンテキストとは、javax.servlet.http.HttpServletRequestクラスのメソッドによるデータ保存場所をいいます。
HTTPリクエストごとにこの保存場所は存在しますが、HTTPレスポンスが発生するとその段階で保存場所はクリアされます。
具体的には、アクションクラスからJSPにデータを渡すまでのスコープになるため、次のHTTPリクエスト時には保存されません。


Actionクラスの例
以下はアクションクラスでリクエストコンテキストをセットする例です。
ログイン時のユーザ名とパスワードをリクエストコンテキストに保存することを想定しています。

package com.confrage.loginAction;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.confrage.Login.Login;

public class loginAction extends Action{
    public ActionForward execute(
        ActionMapping mapping,
        ActionForm form,
        HttpServletRequest req,
        HttpServletResponse res) throws Exception{

        Login login = (Login)form;

        req.setAttribute("userId"  ,login.getUsername());
        req.setAttribute("passWord",login.getPassword());
        
        return mapping.findForward("success");
    }
}



JSPの例
次に、JSP側でリクエストデータを表示する方法を示します。
リクエストデータはbeanタグを使用して表示します。
beanタグのname属性にはアクションクラスでセットした名前(第一引数)を指定します。
以下、JSPの一部を抜粋します。

<bean:write name="userId" />
<bean:write name="passWord" />
これで以下の赤線で囲んだ部分のようにユーザ名とパスワードが表示されます。

JSPの例
JSPの例



アクションフォームをリクエストコンテキストに保存する
先ほどはフォームの一つずつに対して保存していきました。
ですが、フォームごと一つのオブジェクトとして保存することが可能です。

Actionクラスの例
package com.confrage.loginAction;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.confrage.Login.Login;

public class loginAction extends Action{
    public ActionForward execute(
        ActionMapping mapping,
        ActionForm form,
        HttpServletRequest req,
        HttpServletResponse res) throws Exception{

        Login login = (Login)form;

        req.setAttribute("login"  ,login);
        
        return mapping.findForward("success");
    }
}
上記のようにloginクラスのインスタンスをそのままセットしています。
この場合、若干JSPでの表示方法が変わりますが、ほぼ一緒です。

JSPの例
次に、アクションフォームごとリクエストコンテキストに保存した場合のJSP側でのリクエストデータを表示する方法を示します。
リクエストデータはbeanタグを使用して表示します。
beanタグのname属性にはアクションクラスでセットした名前(第一引数)を指定します。
以下、JSPの一部を抜粋します。

<bean:write name="login" property="username" />
<bean:write name="login" property="password" />
property属性は遷移前のフォームのname属性をそのままコピーします。
これでも先ほどの画面遷移と同じことが可能になります。

Information

運営サイト
飲み会するならLINKS!!

美人メッセージ!
美人メッセージ!

サイト内検索
当サイト内を検索できます↓


PV

Contact
Skype Me?!

Other
Validate XHTML 1.1       Validate CSS