0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Javaのstrutsメモ

Posted at

はじめに

Javaでの実装経験はありませんが、Javaの案件に入るとstrutsばかりに出くわします。
いいかげんにして欲しいのですが、メモとして記載します。

jspでhtmlタグやlogicタグ、name、property

StrutsのJSPで使用されるhtmlタグやlogicタグ、nameproperty属性は、Strutsフレームワークのタグライブラリを用いて、JSPで効率的にデータを扱うためのものです。これにより、JSPでビジネスロジックを直接書くのではなく、MVC(Model-View-Controller)の設計パターンに従って、コードを整理して記述することができます。

1. htmlタグ

htmlタグライブラリは、HTMLフォーム要素を簡単に生成するために使用されます。例えば、フォーム、テキストボックス、ラジオボタン、チェックボックスなどのフォーム入力要素を作成するのに使用されます。

  • 例:
    <html:form action="/submitAction">
        <html:text property="username" />
        <html:password property="password" />
        <html:submit value="Login" />
    </html:form>
    
    • html:formタグはフォームを生成し、actionで指定したアクションにデータを送信します。
    • html:textはテキスト入力フィールドを作成し、propertyで指定したプロパティにデータをバインドします。

2. logicタグ

logicタグライブラリは、条件分岐やループなどのロジックをJSP内で実装するためのタグセットです。例えば、ifiterate(繰り返し処理)をサポートします。

  • 例:
    <logic:present name="user">
        Welcome, <bean:write name="user" property="name" />!
    </logic:present>
    
    • logic:presentは、userというスコープに指定されたオブジェクトが存在する場合に処理を実行します。
    • bean:writeは、JavaBeanのプロパティをHTMLに出力します。

3. nameproperty

nameは通常、リクエストやセッションに格納されているフォームオブジェクトやJavaBeanの名前を指定します。propertyはそのオブジェクト内の特定のプロパティ(フィールド)を指定します。

  • 例:
    <html:text name="myForm" property="username" />
    
    • name="myForm"で、アクションフォームの名前を指定し、そのフォームのusernameプロパティにバインドするテキストボックスを生成します。

まとめ

  • htmlタグ: HTMLのフォームや入力要素を簡単に生成。
  • logicタグ: JSPページ内での条件分岐や繰り返し処理。
  • nameproperty: フォームオブジェクトやJavaBeanのプロパティにデータをバインド。

これらのタグを利用することで、ビジネスロジックをサーバサイド(Actionクラスなど)に分離し、JSP側はビューとしての役割に集中させることができます。

○○○Action.java、○○○Form.java:

Strutsにおける○○○Action.java○○○Form.javaは、MVCアーキテクチャにおいてモデルとコントローラの役割を果たします。この2つを使って、JSPページでのフォーム操作や表示を効率的に実現します。具体的にどのようにこれらが使われるのか、以下に説明します。

1. ○○○Action.java(Actionクラス)

Actionクラスは、リクエストを処理し、ビジネスロジックを実行して、適切なビュー(JSP)に遷移する役割を持ちます。Strutsでは、ユーザーからのリクエストをコントローラがこのActionクラスにルーティングし、そこで必要な処理が行われます。

  • 例: LoginAction.java
    public class LoginAction extends Action {
        public ActionForward execute(ActionMapping mapping, ActionForm form,
                HttpServletRequest request, HttpServletResponse response) {
            
            // formオブジェクトを取得
            LoginForm loginForm = (LoginForm) form;
    
            // フォームのデータを取得
            String username = loginForm.getUsername();
            String password = loginForm.getPassword();
    
            // 簡単なビジネスロジック(認証)
            if ("admin".equals(username) && "password".equals(password)) {
                return mapping.findForward("success");
            } else {
                return mapping.findForward("failure");
            }
        }
    }
    
    • executeメソッド: リクエストがActionクラスに到達すると、このメソッドが実行されます。
    • ActionMapping: 遷移先のJSPを指定するために使います。successfailureに基づいて異なるJSPを返すことができます。
    • ActionForm: フォームの入力データ(後述)を取得するために使用します。

2. ○○○Form.java(ActionFormクラス)

ActionFormクラスは、フォームから送信されたデータを保持する役割を果たします。Strutsはリクエストを受け取ったとき、このフォームオブジェクトにデータをバインドし、Actionクラスでそのデータを使えるようにします。

  • 例: LoginForm.java

    public class LoginForm extends ActionForm {
        private String username;
        private String password;
    
        // getter and setter for username
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
    
        // getter and setter for password
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
    }
    
    • LoginForm: フォームのデータ(usernamepassword)を格納します。
    • getter/setterメソッド: JSPのproperty属性からデータを取得したり設定したりするために使います。

3. JSPとの連携

次に、これらのActionFormを使って、JSPでフォームデータの入力や出力を実現します。

  • 例: login.jsp

    <html:form action="/login">
        ユーザー名: <html:text property="username" />
        パスワード: <html:password property="password" />
        <html:submit value="Login" />
    </html:form>
    
    • html:form: action属性で/loginというURLにフォームのデータを送信します。このURLは、Strutsの設定ファイル(struts-config.xml)でLoginActionにルーティングされます。
    • html:textおよびhtml:password: フォームのusernamepasswordプロパティに入力されたデータを自動的にLoginFormにバインドします。

4. struts-config.xmlの設定

最後に、Strutsの設定ファイルstruts-config.xmlで、フォームとアクションを紐付けます。

  • 例: struts-config.xml

    <action-mappings>
        <!-- login action mapping -->
        <action path="/login"
                type="com.example.LoginAction"
                name="loginForm"
                scope="request"
                validate="true"
                input="/login.jsp">
            <forward name="success" path="/welcome.jsp"/>
            <forward name="failure" path="/login.jsp"/>
        </action>
    </action-mappings>
    
    <form-beans>
        <!-- form bean definition -->
        <form-bean name="loginForm" type="com.example.LoginForm"/>
    </form-beans>
    
    • action要素: /loginというリクエストパスをLoginActionに関連付けます。フォームはloginFormという名前であり、その型はLoginFormです。
    • forward要素: 認証に成功した場合はwelcome.jsp、失敗した場合は再びlogin.jspに遷移します。

まとめ

  • ○○○Action.java: リクエストを処理し、ビジネスロジックを実行するコントローラ。
  • ○○○Form.java: フォームデータを保持し、Actionクラスに渡すモデル。
  • JSP: htmlタグやlogicタグを用いて、フォームの入力や出力を管理。

これらを連携させることで、Strutsフレームワーク上で効率的なフォーム処理とページ遷移を実現できます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?