人生は、お天気いろいろ

日々の生活やプログラミング等に関するメモ・雑文を記載しています

Struts2 + Spring3 + MyBatis環境構築 -Actionクラス作成-

Struts2 + Spring3 + MyBatisを連携したWebアプリ開発の2回目。

 

今回は、前回記載した通りActionクラスの作成を行う。

 

とりあえずは、前回作成したindex.jspをログイン画面風に変更し、ユーザ名とパスワードを入力できるようにし、ログインボタンを押下すると、ログイン成功画面に遷移するように変更する。

 

jsp

まずは画面遷移の確認が目的なので、レイアウトは後で修正する予定で、こんな感じになった。

f:id:tfCenturion:20131113210233j:plain

<s:form action="login">のactionは、submitするアクション名を表し、ここではLoginActionクラスへsubmitすることを示している。また、<s:textfield name="username" id="username" value="%{username}" label="UserName"/>では、valueを設定し、入力した情報が、LoginActionクラスのusernameに設定されるようにしている。

 

ちなみに画面はこうなる。

f:id:tfCenturion:20131113210419j:plain

入力フォームとして、ユーザ名とパスワードを用意し、どちらかが入力されていない場合は、エラー画面へ遷移する。

 

■web.xml

今回は、設定ファイルを使わずに画面遷移を制御するつもりなので、web.xmlにアクションクラスがあるパッケージを定義しておく。定義するには、下記のように「actionPackages」っていうパラメータにパッケージ名を渡してやればよい。なお、packagesというように複数形になっているので、「,」で区切れば複数のパッケージを定義できるらしい。こうすることでpresentation配下にあるXXXActionクラスの中から適したActionクラスを探してきてくれる。

f:id:tfCenturion:20131113210850j:plain

 

■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を使って遷移先を指定している。

 

 ■プロジェクトの構成

プロジェクトの構成は、下記のとおり。

f:id:tfCenturion:20131113211909j:plain

 

なお、今回参考にしたサイトはこちら。

http://www.techdoctranslator.com/struts2/tag-developers-guide/struts-tags/ui-tags/ui-tag-reference/textfield