Help us understand the problem. What is going on with this article?

Struts2の下書き中

More than 1 year has passed since last update.

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>
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした