Struts入門

いわゆるよく見るStrutsのログインフォームです。
Passwowd1とPasswowd2が同一であれば成功(successが表示)
同一でなければ失敗(failureが表示)されるだけです。

Strutsは下記5点あれば動作する。

  1. アクションサーブレット
  2. アクションフォーム
  3. アクションクラス
  4. jsp
  5. struts設定ファイル

アクションサーブレットStrutsが提供してるんで作成はしなくていい。
ほなぁ残り4つ作ってみま〜〜〜す☆

一個づつみていくかぁ〜。

・アクションクラス
いわゆるビジネスロジックを記述するところ。
Actionを継承してexecute作ったらいいだけ〜♪
「このexecuteの中で実際に処理したい内容を書けばいいさ」と勝手に考えてみた。

RegisterAction.java

package one;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class RegisterAction extends Action {

	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
				
		RegisterForm rf = (RegisterForm) form;
		String username = rf.getUsername();
		String password1 = rf.getPassword1();
		String password2 = rf.getPassword2();
		
		if (password1.equals(password2)) {
			try {
				return mapping.findForward("success");
			} catch (Exception e) {
				return mapping.findForward("failure");
			}
		}
		return mapping.findForward("failure");
	}
}

・アクションフォームRegisterForm.java
アクションフォームはActionFormを継承して作成。
要するに入力された値を保持してくれる。
リクエストしたらアクションサーブレットが勝手にセットしてくれる。
むっちゃべんり〜。
変数名.set〜〜(reqest.getParameter());とか書かなくていいんだ。
最高。

package one;

import org.apache.struts.action.ActionForm;

public class RegisterForm extends ActionForm{
	
	private String username;
	
	private String password1;
	
	private String password2;

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword1() {
		return password1;
	}

	public void setPassword1(String password1) {
		this.password1 = password1;
	}

	public String getPassword2() {
		return password2;
	}

	public void setPassword2(String password2) {
		this.password2 = password2;
	}
}

Struts設定ファイル
こいつが肝や。
アクションクラスとアクションフォームとjspを関連付けしている。
まぁ今度ゆっくり解析してくれるズラ。

struts-config.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
          "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
    <form-beans>
    	<form-bean name="registerForm" type="one.RegisterForm" />
    </form-beans>

    <action-mappings>
    	<action path="/register"
    	type="one.RegisterAction"
    	name="registerForm"
    	input="/one/register.jsp">
	    	<forward name="success" path="/one/success.html"/>
	    	<forward name="failure" path="/one/failure.html"/>
    	</action>
    </action-mappings>
</struts-config>

・jsp
あとはクライアント層を作成してやって動かしてみる。

register.jsp

<%@ page language="java" contentType="text/html; charset=windows-31j"
    pageEncoding="windows-31j"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="form"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
<title>Insert title here</title>
</head>
<body>
	<form:form action="/register">
		UserName:<form:text property="username" /><br>
		EnterPassWord:<form:password property="password1" /><br>
		Re-PassWord:<form:password property="password2" /><br>
		<form:submit value="Register" />
	</form:form>
</body>
</html>

failure.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
<title>Insert title here</title>
</head>
<body>
	Register failure!!<br>
	<P><a href="http://localhost:8080/struts/one/register.jsp">try again?</a></P>
</body>
</html>

success.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
<title>Insert title here</title>
</head>
<body>
	Register success!!<br>
	<P><a href="http://localhost:8080/struts/one/register.jsp">try another?</a></P>
</body>
</html>

ばっちり〜♪

でもこの状態やったら何もわからんからちょっとづつ解析していこうっと。
やはり、こうツメが甘いからダメなのね〜〜♪

まぁごちでした。