□技術メモ - Strutsによる環境構築 ※管理人の個人的な技術メモです。このページの内容の実行結果について 管理人はいかなる責任も負いかねますのでご自身の責任でお試しください。 ----------------------------------------------------------- 〇Strutsの特徴 ・通常のサーブレット、JSPに対して、Strutsを使用することで以下のことができる。 ・サーブレットのweb.xmlは、URLパターンに対して実行するクラスを指定できるだけだったが、 struts-config.xmlではもっと柔軟な画面遷移を指定できる。 複数の遷移先に分岐させること等もできる。 ・executeメソッドの引数にActionFormがあり、web画面の情報が既にbeanに格納された状態で処理を開始できる。 requestから値を取り出してbeanに格納する処理を記述しなくてよい。 ・画面を記述するコードにstrutsのタグを使うことで、画面にJavaのコードを書く必要がなくなる。 これにより、画面のデザインとプログラムを分離することができる。 -------- 〇TEST環境構築 ・以下よりテスト環境を構築する。 ・プロジェクト名は「TriSt02」とする。 〇フォルダ構成(Tomcat内) ・最終的に以下になる。 [Tomcat7] [webapps] struts-examples-1.3.10.war 〇フォルダ構成(ワークスペース内) ・最終的に以下になる。 [TriSt2] [build] [bin] [struts] TestAction.class TestActionForm.class [src] [struts] TestAction.java TestActionForm.java [WebContent] index.jsp addition.jsp result1.jsp result2.jsp [META-INF] [pages] Welcome.jsp [WEB-INF] [classes] MessageResources.properties [lib] *.jar [src] [java] MessageResources.properties 〇環境構築 ・Jdk, Tomcat, Eclipseをインストールすること。 〇ダウンロード ・以下のアドレスから、struts-1.3.10-apps.zipをダウンロードする http://struts.apache.org/download.cgi ・struts-1.3.10-apps.zipを展開して、webappsにある、struts-examples-1.3.10.war を、 Tomcatのフォルダ内の webapps に配置する。 〇動作確認 ・Windowsのサービス一覧から、Tomcatを起動して、以下にアクセスする。 http://localhost:8080/struts-examples-1.3.10/ ・「Struts Examples」という画面がでれば問題ない。 確認したら、Windowsのサービス一覧から、Tomcatを停止する。 〇動的Webプロジェクトを作成する ・プロジェクト名は「TriSt02」とする。 ・フォルダの追加で「bin」を追加する。 ・デフォルト出力フォルダに「build\bin」を指定する。 ・コンテンツディレクトリに「WebContent」を指定(デフォルトのまま)にして、 Web.xmlの生成にチェックを入れる。 〇struts-blank-1.3.10 を配置する ・struts-1.3.10-apps.zipを展開したフォルダの、webappsにある、struts-blank-1.3.10 を展開する。 ・展開した直下にある、pages, WEB-INF, index.jsp をコピーして、 TriSt02のWebContentの下に配置する。 〇サーバを追加する ・Windows - パースペクティブ - デバッグ を開く。 ・Windows - ビュー - サーバー を開く。 ・「サーバーを追加してください。」というメッセージがあるので、これをクリックして、 上記のTriSt02を左から右側のペインに移す。 ・サーバーのペインから、ローカルホストのTomcatサーバーを右クリックして、 開始を選択してTomcatを起動する。 ・ブラウザから以下のURLを開く。 http://localhost:8080/TriSt02 ・URLが以下に遷移して、Welcome!画面が開けばよい。 http://localhost:8080/TriSt02/Welcome.do 〇TriSt02に機能追加する ・WebContent直下に、addition.jspと、result1.jsp, result2.jsp を配置する。 ・MessageResources.properties が、WEB-INF\classesと、WEB-INF\src\javaにある。 更新する際は両方のファイルを同様に更新する。 ・srcの下に以下の名前のパッケージを追加する。 [struts] ・作成したパッケージの下に、以下のファイルを追加する。 TestActionForm.java // 入力画面からの入力値および計算結果を保持する TestAction.java // 値を取り出して計算を行う ・struts-config.xml に以下を追加する。 xmlのタグの構造を確認して、適切な場所に追加すること。 -------- 内に配置 -------- ・MessageResources.properties を eclipseから、Limyプロパティファイルエディタで開き、 以下を追加する。2ファイルあるので同じように追加する。 -------- # -- culculate -- msg.title=足し算を行います。 msg.answer=計算結果 -------- ・web.xmlには以下の記述があるはずである。確認すること。 -------- action org.apache.struts.action.ActionServlet config /WEB-INF/struts-config.xml 2 action *.do -------- 〇Javaのソースを追加する -------- TestActionForm.java package struts; import org.apache.struts.action.ActionForm; public final class TestActionForm extends ActionForm { private int leftNum; // 第1項 private int rightNum; // 第2項 private int resultNum; // 加算結果 public int getLeftNum() { return leftNum; } public void setLeftNum(int leftNum) { this.leftNum = leftNum; } public int getRightNum() { return rightNum; } public void setRightNum(int rightNum) { this.rightNum = rightNum; } public int getResultNum() { return resultNum; } public void setResultNum(int resultNum) { this.resultNum = resultNum; } } -------- TestAction.java package struts; 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; public final class TestAction extends Action { public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) { TestActionForm taf = (TestActionForm)form; // 値を取り出す int leftNum = taf.getLeftNum(); int rightNum = taf.getRightNum(); int resultNum = 0; // 計算結果を格納する resultNum = leftNum + rightNum; taf.setResultNum(resultNum); //遷移先を指定 //(struts-configで指定した略称) if (resultNum >= 0) { return (mapping.findForward("result1")); } else { return (mapping.findForward("result2")); } } } -------- 〇JSPのソースを追加する ・WebContent直下に追加する。 -------- addition.jsp <%@ page contentType="text/html; charset=Windows-31J" %> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> 足し算

-------- result1.jsp <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> 計算結果 正数です 戻る -------- result2.jsp <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> 計算結果 負数です 戻る -------- 〇動作確認する。 ・ブラウザから以下のアドレスを開くと、テキストボックスが2つ表示される。 http://localhost:8080/TriSt02/addition.jsp ・数値を入力して「実行」を押下すると計算が実行される。 ・合計が正数なら result1.jsp 負数なら result2.jsp が表示される。