Struts2の勉強中
struts.xml
<?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>
<!-- アクションのパッケージ定義 -->
<package name="default" extends="struts-default">
<!-- Hello worldのサンプルアクション -->
<action name="hello" class="sample.HelloWorldAction" method="execute">
<result name="success">/view/sample/HelloWorld.jsp</result>
</action>
</struts>
index.jsp
<%@ 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>Insert title here</title>
</head>
<body>
<!-- 入力フォームはStruts2のタグを使用します -->
<s:form action="hello">
<s:textfield name="name" />
<s:submit value="HelloWorldページへ行く" />
</s:form>
</body>
</html>
HelloWorldAction.java
package sample;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
* [HelloWorldのアクションクラス]<br>
* <br>
* @author tarosa0001
*/
public class HelloWorldAction {
/** ロガー */
private Logger logger = LogManager.getLogger(HelloWorldAction.class);
/** 名前 */
private String name;
/**
* [アクション実行処理]<br>
* HelloWorldを出力する処理を実行する。<br>
* 実行するメソッドは、struts.xmlで指定したメソッド名を使用して実装する。<br>
* Struts2ではアクションの処理結果でページの遷移先を決定するが、
* 今回は"success"の固定文字列を返却する。<br>
* <br>
* @return
*/
public String execute() {
logger.info("入力されたパラメータは「{}」です。", name);
return "success";
}
/**
* [名前取得処理]<br>
* 名前を取得します。<br>
* Struts2がフォームに入力された値をパラメータとしてする際、
* getterを使用するため、パラメータとして使用したい情報は、
* Actionクラスのプロパティとして宣言しておき、getterを用意する。
* <br>
* @return 名前
*/
public String getName() {
return name;
}
/**
* [名前設定処理]<br>
* 名前を設定します。<br>
* getter同様、ページ間で受け渡したい値はsetterを用意しておく。<br>
* <br>
* @param name 名前
*/
public void setName(String name) {
this.name = name;
}
}
HelloWorld.jsp
<%@ 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>
<!-- メッセージの間に渡されたデータを表示します。 -->
Hello Struts2 world, <s:property value="name" />さん
</body>
</html>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>Struts2-01</display-name>
<welcome-file-list>
<!-- アプリケーションルートであクセした時の表示ファイル設定 -->
<!-- 必要はありませんが、今回はURLの入力間違いも防ぐため、index.jspのみとします。 -->
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- Struts2のサーブレットフィルタ -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!-- URLに対して使用するフィルタの設定 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
その他
web.xml
<%@ 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>Insert title here</title>
</head>
<body>
<s:form action="sample_tag">
ページ<br/>
s:textfield<s:textfield name="user_id" value="USER_ID" size="24" label="ユーザID"/><br/><br/>
s:password<s:password name="password" value="PASSWD" size="24" label="パスワード"/><br/><br/>
s:hidden<s:hidden name="item_id" value="HIDDEN"/><br/><br/>
・セレクトのテスト(シングル)
<select name="select1">
<option value="1">結果1のページへ</option>
<option value="2">結果2のページへ</option>
</select><br/><br/>
・セレクトのテスト(マルチ)
<select name="select2" multiple="multiple">
<option value="A">A型</option>
<option value="B">B型</option>
<option value="O">O型</option>
<option value="AB">AB型</option>
</select><br/><br/>
・checkboxのテスト
<input type="checkbox" name="chbox1" value="1" checked="checked" />面白い
<input type="checkbox" name="chbox1" value="2" />役に立つ
<input type="checkbox" name="chbox1" value="3" checked="checked" />いまいち
<br/><br/>
・radioのテスト
<input type="radio" name="radio1" value="1" checked="checked" />良い
<input type="radio" name="radio1" value="2" />悪い
<br/><br/>
<s:submit value="SUBMIT!!" />
</s:form>
</body>
</html>
Sample01Action.java
package sam.tag;
/**
* @author
*/
public class Sample01Action extends AbstractAction{
private String user_id;
private String password;
private String item_id;
private String select1;
private String select2;
private String chbox1;
private String radio1;
/**
* [アクション実行処理]<br>
* @return
*/
public String execute() {
// final String className = new Object(){}.getClass().getEnclosingClass().getName();
final String methodName = new Object(){}.getClass().getEnclosingMethod().getName();
// System.out.println("className::" + className);
// System.out.println("methodName :" + methodName);
logger.info("▼開始▼:{}",methodName);
logger.info("入力されたパラメータは「{}」です。", toString());
short nextPage = Short.parseShort(select1);
try {
if (nextPage == 1) {
return "success1";
} else {
return "success2";
}
} catch (Exception e) {
return "error";
} finally {
logger.info("▲終了▲:execute()");
}
}
@Override
public String toString() {
return "Sample01Action [user_id=" + user_id + ", password=" + password + ", item_id=" + item_id + ", select1="
+ select1 + ", select2=" + select2 + "]";
}
// 以下自動生成のgetterとsetter
public String getUser_id() {
return user_id;
}
public void setUser_id(String user_id) {
this.user_id = user_id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getItem_id() {
return item_id;
}
public void setItem_id(String item_id) {
this.item_id = item_id;
}
public String getSelect1() {
return select1;
}
public void setSelect1(String select1) {
this.select1 = select1;
}
public String getSelect2() {
return select2;
}
public void setSelect2(String select2) {
this.select2 = select2;
}
public String getChbox1() {
return chbox1;
}
public void setChbox1(String chbox1) {
this.chbox1 = chbox1;
}
public String getRadio1() {
return radio1;
}
public void setRadio1(String radio1) {
this.radio1 = radio1;
}
}
result1.jsp
<%@ 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>結果のページ</title>
</head>
<body>
結果1のページ<br/>
s:textfield:<s:property value="user_id" /><br/>
s:password:<s:property value="password" /><br/>
s:hidden:<s:property value="item_id" /><br/>
select1:<s:property value="select1" /><br/>
select2:<s:property value="select2" /><br/>
checkbox:<s:property value="chbox1" /><br/>
radio:<s:property value="radio1" /><br/>
</body>
</html>