お役立ち

Struts2でフォーム処理、MVCモデル

  • このエントリーをはてなブックマークに追加

はじめに

今回やること

登録画面

今回はMVCを意識してフォーム画面を作っていきます。
氏名、フリガナ、メールアドレス、年齢の情報を入力するフォーム画面を作成して
登録完了画面に遷移するアプリを作成します。

そもそもMVCとは?

MVCとはWebアプリケーションを作るときに
よく使われるアプリの設計方法です(デザインパターン)。

MVCとはModel(M)、View(V)、Controller(C)の略です。
主な役割は次の通りです。

  • Model :Webページに表示されるデータ
  • View :画面の表示方法
  • Controller:ModelとView、ViewとViewの中継ぎ

準備

Struts入門、eclipseの設定とHello Worldの2つの項目
「プロジェクトの作成」、「プロジェクトにStruts2.5.13を準備」に従って
プロジェクトを作りましょう。ただし、今回のプロジェクト名はFormProcessとします。

ファイル構成

ファイル構成は次の通りになります。

form_process

Person.java(Model)を作成

Personクラスは氏名、フリガナ、メールアドレス、年齢を格納するクラスです。

srcの下にregister.modelパッケージを作成します。
そして、Person.javaを作成します。Person.javaは次の通りです。

package register.model;
import java.text.MessageFormat;
public class Person {
private String name;
private String kanaName;
private String email;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getKanaName() {
return kanaName;
}
public void setKanaName(String kanaName) {
this.kanaName = kanaName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString() {
return MessageFormat.format(
"氏名:{0} フリガナ:{1} メールアドレス:{2} 年齢:{3}",
getName(),
getKanaName(),
getEmail(),
String.valueOf(getAge()));
}
}

Viewファイルを作成

register.jsp(登録画面)

<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>登録画面</title>
</head>
<body>
<s:form action="register">
<s:textfield name="person.name" label="氏名"/>
<s:textfield name="person.kanaName" label="フリガナ"/>
<s:textfield name="person.email" label="メールアドレス"/>
<s:textfield name="person.age" label="年齢"/>
<s:submit value="登録"/>
</s:form>
</body>
</html>

complete.jsp(完了画面)

<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登録完了</title>
</head>
<body>
<p>登録が完了しました。</p>
<p>登録内容:<s:property value="person" /></p>
</body>
</html>

RegisterAction.javaの作成

package register.action;
import com.opensymphony.xwork2.ActionSupport;
import register.model.Person;
public class RegisterAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private Person person;
public String execute() throws Exception {
return "success";
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
}

struts.xml(ルーティングの設定)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="register" extends="struts-default">
<action name="register" class="register.action.RegisterAction" method="execute">
<result name="success">/complete.jsp</result>
</action>
</package>
</struts>
  • このエントリーをはてなブックマークに追加