【Struts2】基本編

処理の流れ

画面遷移




画面

index.jsp

s:form actionはstruts2.xmlのアクションに紐づく
s:textfield nameはactionクラスのsetに紐づく

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!-- Struts2のタグライブラリを使用可能にする -->
<%@ taglib prefix="s" uri="/struts-tags"%>
<!-- タイプ宣言はHTML5のものを使用する -->
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Struts2でHelloWorld</title>
    </head>
    <body>
        <!-- 入力フォームはStruts2のタグを使用します -->
        <s:form action="hello">
            <s:textfield name="name" />
            <s:submit value="確定" />
        </s:form>
    </body>
</html>
HelloWorld.jsp

s:property value="name"はactionクラスのgetに紐づく

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Hello Struts2 world!</title>
    </head>
    <body>
        <!-- メッセージの間に渡されたデータを表示します。 -->
        <s:property value="name" />さん
    </body>
</html>

struts.xml


action name="hello"はjspのs:form action="hello"に紐づく
class="sample.HelloWorldAction"は呼び出すactionクラスを記載する
method="execute"は呼び出すメソッドを記載する(省略するとexecuteメソッドが呼ばれる)
result name="success"はactionクラスからの戻り値に紐づく

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <!-- HTMLタグを自動生成しない -->
    <constant name="struts.ui.theme" value="simple" />

    <!-- アクションのパッケージ定義 -->
    <package name="default" extends="struts-default">
        <!-- Hello worldのサンプルアクション -->
        <action name="hello" class="sample.HelloWorldAction" method="execute">
            <result name="success">/jsp/HelloWorld.jsp</result>
        </action>
    </package>
</struts>

actionクラス


getter,setterを記載すると自動で呼び出される

package sample;

public class HelloWorldAction {

    private String name;

    public String execute() {
        return "success";
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}