TOPページへ戻る

Struts 7.0.0のインストールとサンプル

ここでは、Javaでウェブアプリケーションの作成が行えるStruts 7.0.0のインストールとサンプルプログラムの実行、
サンプルアプリケーションの作成と実行を行います。
    ※JDK、EclipseのインストールのページでEclipseがインストールされていることを前提にしています。

EclipseでStruts2

Struts2は初期状態でインストールされていないためStrutsのサイトからダウンロードしインストールする必要がある。

Struts2とTomcat

TomcatはEclipseに初期状態でインストールされている。
初めてTomcatを動かす場合は、Tomcatサーバを選択する必要がある。
Struts 7.0.0を動作させるためにはプロジェクト作成時Tomcat10(Java17)かTomcat10(Java21)を選択する。(Tomcat8,9は動作しない。)

Strutsのstruts2-rest-showcaseのインストール

Struts 7.0.0のサンプルをインストールする
  1. プロジェクトの作成
    新規アイコン→Web→動的Webプロジェクト

    プロジェクト名 struts2-rest-showcaseと入力。
    ターゲット・ランタイムをTomcat10(Java17)かTomcat10(Java21)にする。
    例はTomcat10(Java21)である。


    完了をクリックする。


  2. Strutsのサイトにアクセスし、以下のファイルをダウンロード
    https://struts.apache.org/download.cgi
    ダウンロードするフォルダはデフォルト。(エクスプローラのDownloadsフォルダ)
    ダウンロードするファイル struts-7.0.0-all.zip

  3. エクスプローラでコピー元のフォルダのファイルをコピー先へコピー
    これを行うとStrutsのコピーも合わせて行われる
    Downloadsにzipファイルをダウンロードし、そこでzipを7-Zipで解凍する。
    解凍するファイル
    C:\Users\(ユーザ名)\Downloads\struts-7.0.0-all.zip
    解凍するとできるフォルダ
    C:\Users\(ユーザ名)\Downloads\struts-7.0.0-all\struts-7.0.0

    さらにwarファイルを7-Zipで解凍する
    解凍するファイル
    C:\Users\(ユーザ名)\Downloads\struts-7.0.0-all\struts-7.0.0\apps\struts2-rest-showcase-7.0.0.war
    解凍するとできるフォルダ
    C:\Users\(ユーザ名)\Downloads\struts-7.0.0-all\struts-7.0.0\apps\struts2-rest-showcase-7.0.0

    1)Webコンテンツなどのフォルダ・ファイル WEB-INFフォルダ除く
    コピー元
    C:\Users\(ユーザ名)\Downloads\struts-7.0.0-all\struts-7.0.0\apps\struts2-rest-showcase-7.0.0\*
    コピー先
    C:\pleiades\2024-12\workspace\(プロジェクト名)\src\main\webapp

    2)javaソースファイル
    コピー元
    C:\Users\(ユーザ名)\Downloads\struts-7.0.0-all\struts-7.0.0\apps\struts2-rest-showcase-7.0.0\WEB-INF\src\ava\*
    コピー先
    C:\pleiades\2024-12\workspace\(プロジェクト名)\src\main\java

    3)WEB-INFの下のlibなどのstrutsのフォルダ・ファイル classesフォルダ、srcフォルダ除く
    コピー元
    C:\Users\(ユーザ名)\Downloads\struts-7.0.0-all\struts-7.0.0\apps\struts2-rest-showcase-7.0.0\WEB-INF\*
    コピー先
    C:\pleiades\2024-12\workspace\(プロジェクト名)\src\main\webapp\WEB-INF

    コピーしたフォルダのイメージ


  4. ソースの修正
    1)struts.xmlファイル
    (プロジェクト名)\src\main\javaフォルダ

    以下の行を適切な場所(34行目)に追加
                :
      <constant name="struts.convention.package.locators" value="example"/>
      <constant name="struts.allowlist.packageNames" value="org.demo.rest.example" />    <!-- ← 追加する行 -->

    <!-- Uncomment the lines below to use Jackson XML bindings instead of the XStream library to handle XML serialisations -->
                :
                :

    2)OrderController.java
    (プロジェクト名)\src\main\java\org\demo\rest\exampleフォルダ

    以下の行を適切な場所(113行目)に追加
                :
                :
        @Override
        @StrutsParameter(depth = 1)     //← 追加する行
        public Object getModel() {
           return (list != null ? list : model);
        }
                :

  5. ビルドが終了したら、プロジェクトのトップにマウスカーソルを移動、実行ボタンをクリックしTomcatを起動する

    Tomcat10_Java17かTomcat10_Java21を選択し、このプロジェクトを実行するときは常にこのサーバーを使用にチェックし、完了する。

    以下にブラウザでアクセス(自動でブラウザが起動しアクセスする)
    http://localhost:8080/struts2-rest-showcase/

    実行結果

    サンプルを終了させたい場合、サーバービューでサーバーを停止ボタンをクリックしTomcatを終了させます

  6. プロジェクトが必要なくなったら、閉じておきます。
    Serversのプロジェクトは、Tomcatのことなので閉じてはいけません。

Struts2 HelloWorldサンプル作成

Struts 7.0.0のサンプルを作成する ソースコードをzipファイルにしました。こちらもご利用ください。
  1. プロジェクトの作成
    新規アイコン→Web→動的Webプロジェクト
    Strutsのstruts2-rest-showcaseのインストールと同様にして作成します。
    プロジェクト名 test2と入力
    ターゲット・ランタイムをTomcat10(Java17)かTomcat10(Java21)を選択する。
    例は、Tomcat10(Java21)である。


  2. Downloadsにzipファイルをダウンロードし、そこでzipを7-Zipで解凍する。
    Strutsのサイトにアクセスし、以下のファイルをダウンロード
    https://struts.apache.org/download.cgi
    ダウンロードするファイル struts-7.0.0-all.zip
    ダウンロードするフォルダはデフォルト。(エクスプローラのDownloadsフォルダ)

    解凍するファイル
    C:\Users\(ユーザ名)\Downloads\struts-7.0.0-all.zip
    解凍するとできるフォルダ
    C:\Users\(ユーザ名)\Downloads\struts-7.0.0-all\struts-7.0.0

    さらにwarファイルを7-Zipで解凍する
    解凍するファイル
    C:\Users\(ユーザ名)\Downloads\struts-7.0.0-all\struts-7.0.0\apps\struts2-rest-showcase-7.0.0.war
    解凍するとできるフォルダ
    C:\Users\(ユーザ名)\Downloads\struts-7.0.0-all\struts-7.0.0\apps\struts2-rest-showcase-7.0.0

    strutsのjarファイルをコピー
    コピー元
    C:\Users\(ユーザ名)\Downloads\struts-7.0.0-all\struts-7.0.0\apps\struts2-rest-showcase-7.0.0\WEB-INF\lib\*
    コピー先
    C:\pleiades\2024-12\workspace\(プロジェクト名)\src\main\webapp\WEB-INF\lib
    (重要)コピー先から以下のjarファイルを削除
    struts2-rest-plugin-7.0.0.jar


  3. javaソースファイル、JSPファイル、XMLファイルの作成
    1)MessageStore.javaの作成
    フォルダの作成

    (プロジェクト名)\src\main\java\test2\modelフォルダを作成する

    クラスの作成
    (プロジェクト名)\src\main\java\test2\modelフォルダをクリックし以下を実行
    新規アイコン→Java→クラス

    パッケージにtest2.modelを入力。
    名前にMessageStoreを入力、完了をクリック。


    以下のサンプルソースを作成
    MessageStore.java
    package test2.model;

    public class MessageStore {
        private String message;

        public MessageStore() {
            message = "Hello Struts User";
        }

        public String getMessage() {
            return message;
        }

        public String toString() {
            return message + " (from toString)";
        }

        public void setMessage(String string) {
          message = string;
        }
    }

    2)HelloWorldAction.javaの作成
    フォルダの作成
    (プロジェクト名)\src\main\java\test2\actionフォルダを作成


    クラスの作成
    (プロジェクト名)\src\main\java\test2\actionフォルダをクリックし以下を実行
    新規アイコン→Java→クラス
    パッケージにtest2.actionを入力
    名前にHelloWorldActionを入力、完了をクリック。


    以下のサンプルソースを作成
    HelloWorldAction.java
    package test2.action;

    import org.apache.struts2.ActionSupport;
    import org.apache.struts2.interceptor.parameter.StrutsParameter;

    import test2.model.MessageStore;

    public class HelloWorldAction extends ActionSupport {
        private MessageStore messageStore;
        private static int helloCount = 0;
        private String userName;

        public String execute() throws Exception {
            messageStore = new MessageStore() ;
            if (userName != null) {
                messageStore.setMessage( messageStore.getMessage() + " " + userName + " execute");
            }
            helloCount++;
            return SUCCESS;
        }

        @StrutsParameter(depth = 1)
        public MessageStore getMessageStore() {
            return messageStore;
        }

        @StrutsParameter(depth = 1)
        public int getHelloCount() {
            return helloCount;
        }

        @StrutsParameter(depth = 1)
        public String getUserName() {
            return userName;
        }

        @StrutsParameter(depth = 1)
        public void setUserName(String userName) {
            this.userName = userName;
        }

    }

    3)JSPファイルの作成
    (プロジェクト名)\webapp直下に作成
    webappフォルダをクリックし以下を実行
    新規アイコン→Web→JSPファイル

    ファイル名にHelloWorld.jspと入力。

    新規JSPファイル(html5)を選択し、完了をクリック。

    以下のサンプルソースを作成
    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 charset="UTF-8">
    <title>Hello World!</title>
    </head>
    <body>
    <h2><s:property value="messageStore.message" /></h2>
    <p><s:property value="messageStore" /></p>
    <p>I've said hello <s:property value="helloCount" /> times!</p>
    <a href='<s:url namespace="" action="index.jsp" />'>Back</a>
    <%-- --%>
    </body>
    </html>

    同様に、以下のサンプルソースを作成
    index.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>Basic Struts 2 Application - Welcome</title>
    </head>
    <body>
            <h1>Welcome To Struts 2!</h1>
            <%-- namespaceがないのでうまくいかない <p><a href="<s:url action='hello'/>">Hello World</a></p> --%>
            <p><a href="<s:url namespace='' action='hello' />">Hello World</a></p>

            <s:url namespace='' action="hello" var="helloLink">
              <s:param name="userName">Bruce Phillips</s:param>
            </s:url>

            <p><a href="${helloLink}">Hello Bruce Phillips</a></p>

            <p>Get your own personal hello by filling out and submitting this form.</p>
    GET<br>
            <s:form namespace='' action="hello" method="get">
              <s:textfield name="userName" label="Your name" />
              <s:submit value="Submit" />
            </s:form>
    POST<br>
             <s:form namespace='' action="hello">
              <s:textfield name="userName" label="Your name" />
              <s:submit value="Submit" />
            </s:form>
    <%-- --%>
    </body>
    </html>

    4)struts.xmlファイル
    (プロジェクト名)\src\main\javaフォルダの下に作成

    ファイル名にstruts.xmlと入力し、完了をクリック。

    以下のXMLファイルを作成。
    struts.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 6.0//EN"
        "https://struts.apache.org/dtds/struts-6.0.dtd">
    <struts>
        <constant name="struts.devMode" value="true" />
        <constant name="struts.action.extension" value="," />
        <constant name="struts.allowlist.packageNames" value="test2" />
        <!--
        <constant name="struts.enable.DynamicMethodInvocation" value="true" />
        <constant name="struts.configuration.xml.reload" value="false" />
        -->

        <package name="test2" extends="struts-default">
          
            <action name="index">
                <result>/index.jsp</result>
            </action>

            <action name="hello" class="test2.action.HelloWorldAction" method="execute">
               <result name="success">/HelloWorld.jsp</result>
               <result name="input">/index.jsp</result>
            </action>

        </package>
    </struts>
    備考
    1. <constant name="struts.action.extension" value="," />がないと拡張子がactionのURLにつく

    5)log4j2.xmlファイル
    (プロジェクト名)\src\main\javaフォルダの下に作成
    同様に以下のXMLファイルを作成。
    log4j2.xmlファイル
    <?xml version="1.0" encoding="UTF-8"?>
    <!--
    /*
    * Licensed to the Apache Software Foundation (ASF) under one
    * or more contributor license agreements.  See the NOTICE file
    * distributed with this work for additional information
    * regarding copyright ownership.  The ASF licenses this file
    * to you under the Apache License, Version 2.0 (the
    * "License"); you may not use this file except in compliance
    * with the License.  You may obtain a copy of the License at
    *
    *  http://www.apache.org/licenses/LICENSE-2.0
    *
    * Unless required by applicable law or agreed to in writing,
    * software distributed under the License is distributed on an
    * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    * KIND, either express or implied.  See the License for the
    * specific language governing permissions and limitations
    * under the License.
    */
    -->
    <Configuration>
        <Appenders>
            <Console name="STDOUT" target="SYSTEM_OUT">
                <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
            </Console>
        </Appenders>
        <Loggers>
            <Logger name="org.apache.struts2" level="info"/>
            <Logger name="test2" level="debug"/>
            <Root level="warn">
                <AppenderRef ref="STDOUT"/>
            </Root>
        </Loggers>
    </Configuration>

    6)web.xmlファイル
    (プロジェクト名)\src\main\webapp\WEB-INFフォルダの下に作成
    以下のXMLファイルを編集。
    web.xmlファイル
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app>

      <display-name>test2</display-name>
      <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
      </filter>

      <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>

      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.jsp</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>index</welcome-file>
      </welcome-file-list>

    </web-app>

  4. ビルドが終了したら、プロジェクトのトップにマウスカーソルを移動、実行ボタンをクリックしTomcatを起動する
    (Strutsのstruts2-rest-showcaseの実行と同様です)
    以下にブラウザでアクセス(自動でブラウザが起動しアクセスする)
    http://localhost:8080/test2/

    実行結果


    サンプルを終了させたい場合、サーバービューでサーバーを停止ボタンをクリックしTomcatを終了させます

  5. プロジェクトが必要なくなったら、閉じておきます。
    Serversのプロジェクトは、Tomcatのことなので閉じてはいけません。

参考1 EclipseでTomcat起動時間の設定

参考2 getter/setterについて

modelで、setメソッドやgetメソッド(getter/setter)を作成する場合、Eclipseに簡単に作成する機能があります。
  1. 変数を定義する

  2. 右クリックで「ソース」の「getterおよびsetterの生成」をクリック

  3. 作成するgetterおよびsetterを選択し、「生成」ボタンをクリック
    このとき「メソッド・コメントの生成」をチェックしておくと、コメントも合わせて生成されます。

  4. 実行例

参考3

Javadoc(API)やチュートリアルなど参考URLを紹介します
以上