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」をダウンロードします。
※今回は「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の中にある
を7-Zipなどで展開します。
これを先ほど、作成したプロジェクトへOS側の操作でコピペします。
プロジェクトが
にある場合は、
にコピペします。
コピペしたらEclipseのパッケージエクスプローラーで右クリックして「リフレッシュ」をします。
すると、次のようになります。
welcome.jspを選択後に右クリックして[実行][サーバーで実行]を押します。完了ボタンを押します。
このように表示されればOkです。
このアドレスはブラウザでも実行できますので試してみましょう。
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をインストールします。
MySQLのインストールからコマンド操作(ユーザ/データベース/テーブルの作成)やODBC設定
Javaでデータベース操作(検索/更新系SQL/プリペアドステートメント/トランザクション)
そして、メニューの[実行][実行構成][クラスパス][ユーザーエントリ]の「外部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"); } }
これで実行すると次のようになります。
以上となります。お疲れさまでした。
関連記事
前の記事: | WebViewの<input type="file" multiple>でファイルを複数選択する [Android] |
次の記事: | AndroidのAPKファイルを逆コンパイルする [jadx/windows版] |