Struts2.3+S2JDBCのセットアップからDBアクセス(ORACLE)まで - アップデート編 ホームページ制作 | 墨田区

Struts2.3+S2JDBCのセットアップからDBアクセス(ORACLE)まで – アップデート編

LINEで送る
Pocket

Struts2.3にアップデート Struts2.3+S2JDBCのセットアップからDBアクセス(ORACLE)までの方法をご紹介します。
以前、こちら のページでは、Dolteng を使ってプロジェクトの作成して、動作するところまで確認しました。
Struts2.3+S2JDBCのインストールからDBアクセス(ORACLE)まで – 準備編
今回は、Struts2.3 にバージョンアップしたいと思います。
・追記:Mavenを使えばもっと簡単にバージョンアップできます。




【PR】マジか?!「アレ」してるLINEスタンプっていったい・・・


バージョンアップに必要なもの

まず、公式ページから、必要なものをダウンロードします。
・Welcome to the Apache Struts project
http://struts.apache.org/
Struts公式ページ

Full Distribution をクリックします。
Struts2.3ダウンロードページ
ダウンロードしたら、Zip ファイルを解凍して、「struts-2.3.16.3」-「lib」の中から以下の jarファイル を取り出します。
>圧縮・解凍に便利なツールはこちら

  • asm-3.3.jar
  • asm-commons-3.3.jar
  • asm-tree-3.3.jar
  • commons-fileupload-1.3.1.jar
  • commons-io-2.2.jar
  • commons-lang3-3.1.jar
  • commons-logging-1.1.3.jar
  • freemarker-2.3.19.jar
  • javassist-3.11.0.GA.jar
  • ognl-3.0.6.jar
  • struts2-codebehind-plugin-2.3.16.3.jar
  • struts2-core-2.3.16.3.jar
  • xwork-core-2.3.16.3.jar

これを、前回作成したプロジェクト strtus2-s2jdbc 内、「src」-「main」-「webapp」-「WEB-INF」-「lib」の中にコピーします。
struts2.3ライブラリ

次に、プロジェクトを選択して右クリックメニューから「プロパティ」を選択し、
「Java のビルド・パス」を選択します。
ライブラリタブを選択し、一旦、全てのライブラリを除去します。
※JRE システムライブラリは除去しないように注意してください!
struts2.3不要ライブラリ除去

JAR の追加ボタンを押下して、ライブラリを追加します。
struts2.3 jarの追加
strtus2-s2jdbc 内、「src」-「main」-「webapp」-「WEB-INF」-「lib」から、
以下のライブラリを選択します。
  • aopalliance-1.0.jar
  • asm-3.3.jar
  • asm-commons-3.3.jar
  • asm-tree-3.3.jar
  • commons-fileupload-1.3.1.jar
  • commons-io-2.2.jar
  • commons-lang3-3.1.jar
  • commons-logging-1.1.3.jar
  • freemarker-2.3.19.jar
  • geronimo-annotation_1.0_spec-1.0.jar
  • geronimo-jpa_3.0_spec-1.0.jar
  • geronimo-jta_1.1_spec-1.0.jar
  • h2-1.0.69.jar
  • javassist-3.11.0.GA.jar
  • log4j-1.2.13.jar
  • ognl-3.0.6.jar
  • poi-3.0-FINAL.jar
  • s2-extension-2.4.46.jar
  • s2-framework-2.4.46.jar
  • s2-tiger-2.4.46.jar
  • s2-xwork2-1.0.0.jar
  • struts2-codebehind-plugin-2.3.16.3.jar
  • struts2-core-2.3.16.3.jar
  • struts2-seasar-plugin-1.0.0.jar
  • xwork-core-2.3.16.3.jar

不要になったライブラリはこちらです。
  • commons-fileupload-1.2.1.jar
  • commons-io-1.3.2.jar
  • commons-logging-1.1.jar
  • freemarker-2.3.8.jar
  • javassist-3.4.ga.jar
  • ognl-2.6.9-patch-20090427.jar
  • struts2-core-2.0.11.2.jar
  • xml-apis-1.3.03.jar
  • xwork-2.0.5.jar

これらのライブラリは不要ですので、strtus2-s2jdbc 内、「src」-「main」-「webapp」-「WEB-INF」-「lib」から削除してください。
残っていると、Tomcat 起動時にエラーが出ます。


Web.xml の変更

Web.xml を開き、以下のように修正します。

DOCTYPE タグ

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
      PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
      "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="sakaen" version="2.5" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd">

Filter タグ

  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>
      org.apache.struts2.dispatcher.FilterDispatcher
    </filter-class>
    <init-param>
      <param-name>actionPackages</param-name>
      <param-value>sakaen.action</param-value>
    </init-param>
  </filter>
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    <init-param>
      <param-name>actionPackages</param-name>
      <param-value>sakaen.action</param-value>
    </init-param>
  </filter>

全体

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="sakaen" version="2.5" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd">
  <filter>
    <filter-name>hotdeployfilter</filter-name>
    <filter-class>
      org.seasar.framework.container.hotdeploy.HotdeployFilter
    </filter-class>
  </filter>
  <filter>
    <filter-name>s2filter</filter-name>
    <filter-class>
      org.seasar.framework.container.filter.S2ContainerFilter
    </filter-class>
  </filter>
  <filter>
    <filter-name>struts2</filter-name>
    <filter-class>
      org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    </filter-class>
    <init-param>
      <param-name>actionPackages</param-name>
      <param-value>sakaen.action</param-value>
    </init-param>
  </filter>

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

  <listener>
    <listener-class>
      org.seasar.framework.container.servlet.S2ContainerListener
    </listener-class>
  </listener>

  <servlet>
    <servlet-name>s2servlet</servlet-name>
    <display-name>Seasar2 Servlet</display-name>
    <servlet-class>
      org.seasar.framework.container.servlet.S2ContainerServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>s2servlet</servlet-name>
    <url-pattern>/s2servlet/*</url-pattern>
  </servlet-mapping>

</web-app>

Struts.xml の変更

Struts.xml を開き、以下のように変更します。

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
  <constant name="struts.locale" value="ja_JP" />
  <constant name="struts.i18n.encoding" value="UTF-8" />
  <constant name="struts.action.extension" value="action" />

  <package name="default" extends="struts-default">
    <default-interceptor-ref name="defaultStack" />
  </package>
</struts>
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
  "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
  "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
  <constant name="struts.enable.DynamicMethodInvocation" value="true" />
</struts>

動作確認

Tomcat を起動して、動作確認しましょう。
http://localhost:8080/struts2-s2jdbc/index.action
にアクセスし、ページが表示されることを確認します。
※ここでは、ポート 8888 となっていますが、通常は 8080 です。
Struts2.3 動作確認
おお、動いた。よかったよかった♪

では、index.action へのアクセスがあったら、login.action へ Redirect し、ログインページを表示してみます。ログインページでログインできたらメインページへ遷移します。


IndexAction.java

IndexAction.java を開き、以下のように変更します。

package sakaen.action;

import org.apache.struts2.config.Result;
import org.apache.struts2.views.freemarker.FreemarkerResult;

import com.opensymphony.xwork2.ActionSupport;

@Result(type = FreemarkerResult.class, value = "index.ftl")
public class IndexAction extends ActionSupport {
  public String getMessage(){
    return "Seasar2";
  }
}
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
package sakaen.action;

import org.apache.struts2.config.Result;
import org.apache.struts2.dispatcher.ServletRedirectResult;

import com.opensymphony.xwork2.ActionSupport;

@Result(type = ServletRedirectResult.class, name="login", value = "login.action")
public class IndexAction extends ActionSupport {

  public String execute() throws Exception {
    return "login";
  }
}

LoginAction.java

次に、sakaen.action パッケージ内に、LoginAction.java を作成します。

package sakaen.action;

import java.util.Map;

import org.apache.struts2.config.Result;
import org.apache.struts2.dispatcher.ServletRedirectResult;
import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionSupport;

@Result(type = ServletRedirectResult.class, name="main", value = "main.action")
public class LoginAction extends ActionSupport implements SessionAware {

  public String userId;
  public String password;
  public String message;
  public Map<String, Object> sessionMap;

  public String execute() throws Exception {
    this.sessionMap.put("userId", null);
    return "success";
  }

  public String login()  throws Exception {
    System.out.println("userId: " + this.userId);
    System.out.println("password: " + this.password);
    this.message = "";
    if ( !"saka-en".equals(this.userId) ) {
      message = "UserId は saka-en と入力してください。";
      return "error";
    }
    if ( !"password".equals(this.password) ) {
      this.message += "Password は password と入力してください。";
      return "error";
    }
    this.sessionMap.put("userId", this.userId);
    return "main";
  }

    public void setSession(Map<String, Object> sessionMap) {
        this.sessionMap = sessionMap;
    }

}

MainAction.java

次に、sakaen.action パッケージ内に、MainAction.java を作成します。

package sakaen.action;

import java.util.Map;

import org.apache.struts2.config.Result;
import org.apache.struts2.dispatcher.ServletRedirectResult;
import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionSupport;

@Result(type = ServletRedirectResult.class, name="main", value = "main.action")
public class MainAction  extends ActionSupport implements SessionAware {

  public String userId;
  public Map<String, Object> sessionMap;

  public String execute() throws Exception {
    userId = (String)this.sessionMap.get("userId");
    return "success";
  }
  public void setSession(Map<String, Object> sessionMap) {
        this.sessionMap = sessionMap;
    }
}

Java のソースの配置としては以下のようになります。
Struts2.3 サンプルソース配置


login.jsp

[src]-[main]-[webapp]内に、login.jsp を作成します。

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Struts2 ver 2.3.16</title>
</head>
<body>
    <div id="container">
        <div id="page-header">
            <h1>Struts2 <small>ver 2.3.16</small></h1>
        </div>
        <s:form action="login.action">
            <s:textfield label="UserId" name="userId" />
            <s:textfield label="Password" name="password" type="password" />
            <s:submit method="login" value="Login" />
        </s:form>
        <small><s:property value="message" /></small>
    </div>
</body>

main.jsp

[src]-[main]-[webapp]内に、main.jsp を作成します。

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Welcome Struts2 ver 2.3.16</title>
</head>
<body>
    <div id="container">
        <div id="page-header">
            <h1>Welcome Struts2 <small>ver 2.3.16</small></h1>
        </div>
        <ul>
            <li>UserId: <s:property value="userId"  /></li>
        </ul>
    </div>
</body>

検証

それでは、http://localhost:8080/struts2-s2jdbc/index.action にアクセスしてみましょう。
struts2.3 ログイン画面検証
おお、ログインページが表示されましたね。

ログインボタンを押下してみると、エラーメッセージが表示されます。
struts2.3 ログイン画面エラーメッセージ検証
おおお、エラーメッセージがが表示されましたね。

では、UserId に saka-en、Password に password と入力してみましょう。
struts2.3 メイン画面検証
おおおお、メインページに遷移しましたね。


まとめ

sturts.xml で、DynamicMethodInvocation を true と定義し、規約ベースで動作させています。
アクセスの方法としては、index.action であれば、IndexAction を .action パッケージの中に配置すれば、自動で Redirect されます。
ページを遷移する場合は、アノテーション @Result で value に定義します。アクションクラスに遷移させるのであれば、xxxx.action と指定し、jsp であれば、jsp のパスを記述します。
Action クラスは ActionSupport を継承することと、セッションを利用する場合は、SessionAware を implements する必要があります。

また、Strtus2 では、ActionForm がなくなりました。Actionクラス内に、タグの名前が一致しているプロパティがあれば、値を取得することができます。


次回はいよいよ S2JDBC を使って、ORACLE にアクセスします。
Struts2.3+S2JDBCのセットアップからDBアクセス(ORACLE)まで – DBアクセス編

おつかれさまでした。

LINEで送る
Pocket

この記事がお役に立ちましたら シェア をお願いいたします。

Javaの勉強が思うように進まないときは!

Javaの勉強が思うように進まないのであれば、プロに直接質問ができる プログラミングスクール を検討してみてはいかがでしょうか?プログラミングスクールに申し込めば、短期間で一定のスキルを身に着けることができます!

Javaコースあり!オンライン完結型 テックアカデミー TechAcademy [テックアカデミー]

どこかに通う必要なく、自宅でプログラミングやアプリ開発を学ぶことができるのが特徴のスクールです。未経験からプロになるまで最短4週間という、超短期集中型の学習ができます。年齢層は10代〜40代の男女が中心で、学引があり多くの学生が受講しているそうですよ。オンラインで受講ができるスクールですので、全国どこからでも学習ができますね。

更にさらに、パーソナルメンターにチャット質問できちゃうんです!!

これは素晴らしいことですよ!ハマったり困ったことが起こるのがプログラミングの世界。知っている誰かに聞けば数分で解決することが、自分だけだと何時間もかかったりしますから!いや、これホントですよ。

しかし、便利な世の中になりましたよねー。一昔前ではオンラインで学習できるなんて、思いもよりませんでしたから。講師もバリバリのエンジニアですので、現場で使えるスキルを教えてもらえます。なんとも素晴らしいスクールがあったものですね。学割を使えば社会人より半額以下で受講できますから、学生さんには超おすすめです。

これから Java プログラミングを勉強して、将来はプログラマーとして活躍したいと思っている方には、就職保証付きJavaエンジニアコース というのがおすすめです。就職先まで保証してくれるとなれば、もう安心して学習に専念できますね。夢への第一歩はここから始まるのかも。あ、将来はライバルですね^^

オンラインスクールですから営業エリアは全国です。
気になる方は一度チェックしてみてください。無料の動画説明会も常時開催していますよ。


Javaコースあり!未経験者にウケてる KENスクール パソコンスクール・パソコン教室 【KENスクール】個別指導のWeb-DTP・OA・IT PCスクール

理解度や学習ペースに合わせて、一人ひとりが納得して前進できる授業を提供してくれるのが特徴です。特に課題製作は現場さながらで、実務に即したものとなっていますので短期でのスキルアップが望めます。自宅学習のサポートも充実していて、授業内容をいつでもビデオで振り返ることができるのもうれしいですね。好きな時間に好きな場所で、無理なくスケジューリングできるので、仕事の忙しい方でも柔軟に学ぶことができますよ。

更にさらに、なんと 就職サポート をしてくれるというのですから驚きです!!

履歴書の書き方から面接指導、求人の紹介など、具体的な就職先まで提案してくれるんです!私も「もっと早く出会いたかったなぁー、こんなスクール」・・・って思っちゃいました^^

東京・神奈川・愛知・大阪を営業エリアとされています。
まずは気軽に 無料体験予約 に申し込んでみるのもアリですよ。


コメントを残す

お名前 (必須)
メールアドレス
(アドレスは公開されません)

コメント(必須)

Trackback URL