はじめに
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.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を指定するために使います。success
やfailure
に基づいて異なる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
: フォームのデータ(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フレームワーク上で効率的なフォーム処理とページ遷移を実現できます。