ホーム > カテゴリ > Java・Android >

Struts1.3.10のHelloWorldとデータベース、Examplesを試してみる

Struts1系の最終バージョンは1.3.10で最終リリースは2008年10月。

今は2018年ですから約10年前ですね。今回はStruts1.3.10に触れる機会がありましたので、StrutsのMVCフレームワークでの「HelloWorld」「データベース操作」「Examples」を試してみました。

1. 開発環境のダウンロード

次のサイトの「Pleiades All in One」をダウンロードします。

http://mergedoc.osdn.jp/

※今回は「Eclipse 4.7 Oxygen」をダウンロードしました。
JavaのFull Edition(Eclipse/JDK/Tomcat等が含まれる)を選択します。

2. 公式のExamplesのダウンロード

https://struts.apache.org/download.cgi

にあるExamplesのstruts-1.3.10-apps.zipをダウンロードします。

3. Eclipseでのサーバー設定

Eclipseを起動します。

メニューの[ウインドウ][設定]の[サーバー][ランタイム環境]で「Tomcat8」を選択して適用して閉じます。※表示されない場合は検索して下さい。

メニューの[ウインドウ][ビューの表示][その他]で「サーバー」を選択して開きます。

次の青文字のリンクをクリックします。(右クリックで新規-サーバーでもOK)

Tomcat v8.0サーバーに変更して完了します。

パッケージエクスプローラーに「Servers」が表示されていれば完了です。

4. 新規プロジェクトを作成する

メニューの[ファイル][新規][その他]で[Web][動的なWebプロジェクト]を選択します。

プロジェクト名(foo)を入力して「次へ」「次へ」を2回押します。そして、最後に「web.xmlデプロイメント記述子の生成」をオンにします。

後は、完了ボタンを押します。これでプロジェクトの完成です。

※fooの部分はプロジェクト名です。

5. 公式のExamplesを実行してみる

先ほど、ダウンロードしたExamplesの中にある

struts-1.3.10-apps\struts-1.3.10\apps\struts-examples-1.3.10.war

を7-Zipなどで展開します。

これを先ほど、作成したプロジェクトへOS側の操作でコピペします。

プロジェクトが

C:\Pleiades\workspace\foo\

にある場合は、

C:\Pleiades\workspace\foo\WebContent\

にコピペします。

コピペしたらEclipseのパッケージエクスプローラーで右クリックして「リフレッシュ」をします。

すると、次のようになります。

welcome.jspを選択後に右クリックして[実行][サーバーで実行]を押します。完了ボタンを押します。

このように表示されればOkです。

http://localhost:8080/foo/welcome.jsp

このアドレスはブラウザでも実行できますので試してみましょう。

6. HelloWorld

新規にプロジェクト(hoge)を作成します。
※最後の「web.xmlデプロイメント記述子の生成」のオンを忘れずに!

次のファイルをダウンロードします。

https://www.petitmonte.com/uploads/struts.zip

OS側で圧縮ファイルを展開して、プロジェクトのフォルダにコピペします。

リフレッシュすると次のようになります。

次に5章のExamplesのプロジェクト(foo)にあるWEB-INF\libのファイルを今回のプロジェクト(hoge)のWEB-INF\libに全てコピペして下さい。

パッケージエクスプローラーを右クリックして「リフレッシュ」を選択。

index.jspを右クリックして実行します。

これでHelloWorldは完了です。次はデータベースです。

7. データベース操作

最初にMySQLをインストールします。

そして、メニューの[実行][実行構成][クラスパス][ユーザーエントリ]の「外部JARの追加」でJDBC(mysql-connector-java-x.x.xx.jar)を追加します。

プロジェクトは6章を流用します。

[helloWorld.jspを変更]

<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Hello World</title>
</head>
<body>
  <!-- filter="false"にするとHTMLの自動エスケープがオフになる -->
  <bean:write name="helloWorldForm" property="message" filter="false" />
</body>
</html>

[HelloWorldAction.javaを変更]

package com.petitmonte.action;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.petitmonte.form.HelloWorldForm;

public class HelloWorldAction extends Action {

  @Override
  public ActionForward execute(ActionMapping mapping, ActionForm form,
                                HttpServletRequest request, HttpServletResponse response)
                                  throws Exception {

	    HelloWorldForm myForm = (HelloWorldForm) form;

	    String str = "";
	    Connection con = null;
	    Statement stmt = null;
	    ResultSet rs = null;

	    // JDBCの各設定
	    // ※jdbc:mysql://localhost/データベース名
	    // ※?以降はMySQLの設定により必要ないです。SSLを無効、タイムゾーンをUTCにしています。
	    String url  = "jdbc:mysql://localhost/sample_db?useSSL=false&serverTimezone=UTC";
	    String user = "test";        // ユーザー名
	    String pass = "1234567890";  // パスワード

	    try {

	        // データベースに接続
	        con = DriverManager.getConnection(url,user,pass);

	        // ステートメントオブジェクトを作成
	        stmt = con.createStatement();

	        // SQLの作成
	        String sql = "select no,title from mst_dummy";

	        // SQLの実行
	        rs = stmt.executeQuery(sql);

	        str += "--------------------" + "<br>";
	        str += "no  title" + "<br>";
	        str += "--------------------" + "<br>";

	        // 結果セットからデータを取り出す
	        while(rs.next()) {
	          int no = rs.getInt("no");
	          String title = rs.getString("title");

	          str += String.valueOf(no) + " " + title + "<br>";
	        }


	      } catch (Exception e) {
	          System.out.println(e.getMessage());
	      }finally {

	          // 各オブジェクトを解放する
	          if(rs != null) {
	              try {
	                  rs.close();
	              }catch (Exception e) {
	                  System.out.println(e.getMessage());
	            }
	          }

	          if(stmt != null) {
	              try {
	                  stmt.close();
	              }catch (Exception e) {
	                  System.out.println(e.getMessage());
	            }
	          }

	          if(con != null) {
	              try {
	                  con.close();
	              }catch (Exception e) {
	                  System.out.println(e.getMessage());
	            }
	          }
	      }

	    myForm.setMessage(str);

	    return mapping.findForward("success");
  }

}

これで実行すると次のようになります。

以上となります。お疲れさまでした。





関連記事



公開日:2018年09月08日
記事NO:02722