Struts2 + Spring3 + MyBatis環境構築 -Actionクラス作成-
Struts2 + Spring3 + MyBatisを連携したWebアプリ開発の2回目。
今回は、前回記載した通りActionクラスの作成を行う。
とりあえずは、前回作成したindex.jspをログイン画面風に変更し、ユーザ名とパスワードを入力できるようにし、ログインボタンを押下すると、ログイン成功画面に遷移するように変更する。
■jsp
まずは画面遷移の確認が目的なので、レイアウトは後で修正する予定で、こんな感じになった。
<s:form action="login">のactionは、submitするアクション名を表し、ここではLoginActionクラスへsubmitすることを示している。また、<s:textfield name="username" id="username" value="%{username}" label="UserName"/>では、valueを設定し、入力した情報が、LoginActionクラスのusernameに設定されるようにしている。
ちなみに画面はこうなる。
入力フォームとして、ユーザ名とパスワードを用意し、どちらかが入力されていない場合は、エラー画面へ遷移する。
■web.xml
今回は、設定ファイルを使わずに画面遷移を制御するつもりなので、web.xmlにアクションクラスがあるパッケージを定義しておく。定義するには、下記のように「actionPackages」っていうパラメータにパッケージ名を渡してやればよい。なお、packagesというように複数形になっているので、「,」で区切れば複数のパッケージを定義できるらしい。こうすることでpresentation配下にあるXXXActionクラスの中から適したActionクラスを探してきてくれる。
■Actionクラス
Actionクラスはこんな感じに実装した。
package presentation.action; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import com.opensymphony.xwork2.ActionSupport; import common.utils.StringUtils; @Results({ @Result(name="success", location="menu/menu.jsp"), @Result(name="error", location="error.jsp")}) public class LoginAction extends ActionSupport{ /** * シリアルバージョンUID */ private static final long serialVersionUID = 8953784956601085369L; private String username; private String password; @Action("login") public String login(){ if(StringUtils.isEmpty(this.password) || StringUtils.isEmpty(this.username)){ return "error"; } return "success"; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
@Resultを使って遷移先を指定している。
■プロジェクトの構成
プロジェクトの構成は、下記のとおり。
なお、今回参考にしたサイトはこちら。