処理の流れ
画面遷移
↓
画面
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; } }