はじめに
Javaでの実装経験はありませんが、Javaの案件に入るとstrutsばかりに出くわします。
いいかげんにして欲しいのですが、メモとして記載します。
jspでhtmlタグやlogicタグ、name、property
StrutsのJSPで使用されるhtmlタグやlogicタグ、nameやproperty属性は、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内で実装するためのタグセットです。例えば、ifやiterate(繰り返し処理)をサポートします。
-
例:
<logic:present name="user"> Welcome, <bean:write name="user" property="name" />! </logic:present>-
logic:presentは、userというスコープに指定されたオブジェクトが存在する場合に処理を実行します。 -
bean:writeは、JavaBeanのプロパティをHTMLに出力します。
-
3. nameとproperty
nameは通常、リクエストやセッションに格納されているフォームオブジェクトやJavaBeanの名前を指定します。propertyはそのオブジェクト内の特定のプロパティ(フィールド)を指定します。
-
例:
<html:text name="myForm" property="username" />-
name="myForm"で、アクションフォームの名前を指定し、そのフォームのusernameプロパティにバインドするテキストボックスを生成します。
-
まとめ
-
htmlタグ: HTMLのフォームや入力要素を簡単に生成。 -
logicタグ: JSPページ内での条件分岐や繰り返し処理。 -
nameとproperty: フォームオブジェクトやJavaBeanのプロパティにデータをバインド。
これらのタグを利用することで、ビジネスロジックをサーバサイド(Actionクラスなど)に分離し、JSP側はビューとしての役割に集中させることができます。
○○○Action.java、○○○Form.java:
Strutsにおける○○○Action.javaと○○○Form.javaは、MVCアーキテクチャにおいてモデルとコントローラの役割を果たします。この2つを使って、JSPページでのフォーム操作や表示を効率的に実現します。具体的にどのようにこれらが使われるのか、以下に説明します。
1. ○○○Action.java(Actionクラス)
Actionクラスは、リクエストを処理し、ビジネスロジックを実行して、適切なビュー(JSP)に遷移する役割を持ちます。Strutsでは、ユーザーからのリクエストをコントローラがこのActionクラスにルーティングし、そこで必要な処理が行われます。
-
例:
LoginAction.javapublic 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を指定するために使います。successやfailureに基づいて異なるJSPを返すことができます。 -
ActionForm: フォームの入力データ(後述)を取得するために使用します。
-
2. ○○○Form.java(ActionFormクラス)
ActionFormクラスは、フォームから送信されたデータを保持する役割を果たします。Strutsはリクエストを受け取ったとき、このフォームオブジェクトにデータをバインドし、Actionクラスでそのデータを使えるようにします。
-
例:
LoginForm.javapublic 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: フォームのデータ(usernameとpassword)を格納します。 -
getter/setterメソッド: JSPの
property属性からデータを取得したり設定したりするために使います。
-
3. JSPとの連携
次に、これらのActionとFormを使って、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: フォームのusernameとpasswordプロパティに入力されたデータを自動的に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フレームワーク上で効率的なフォーム処理とページ遷移を実現できます。