2011年11月13日日曜日

Struts2 スタート

最近 Struts の学習を始めました。Strutsを使ったWebアプリケーションを構築するためのメモを残しておきたいと思います。

Struts2のサンプルをつくる手順をまとめます。

環境 
Mac OS X  
Eclipse 3.7
Struts 2.2.3.1
Tomcat 7.0.21
です

1.  Struts2 をdownload   する
http://struts.apache.org
より, 最新版をダウンロードしてください いろいろ種類がありますが個人的には
Full Distribution  をお勧めします(サンプルなどいっぱいついていますので)

2. Tomcat  プロジェクトの作成
Tomcatの設定ですが筆者の別のブログTomcat7 + Eclipse をご参照ください。

3.  lib の設定
/WEB-INF/lib の中にStruts2に必要なライブラリを入れて, Build Pathに通します。
今回のサンプルに必要なライブラリは以下の通りです。(バージョンは省略します)
(いろいろWebサイトを読みましたが, それに加えていくつか必要でした)
commons-fileupload.jar
commons-io.jar
commons-lang.jar  
commons-logging.jar
freemaker.jar
javassist.jar
ognl.jar
struts2-core.jar
xwork-core.jar

これらはすべてダウンロードしたStrutsのlib 内にあります。

※Struts1 のときと違ってStrutsのlib内には大量のjar が入っています。
これらの大半はプラグインとして利用するものなので必要あるものだけを
パスに通した方がよいと考えております。

4.  web.xml  の記述(/WEB-INF/web.xml)
サーブレットの設定を書くわけですがここでは,
Strutsのフロントコントローラとして動作するフィルタ
(フィルタでリクエストをさばきます)


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"> 
   <filter>
   <filter-name>struts2</filter-name>
   <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
   </filter>
   
   <filter-mapping>
   <filter-name>struts2</filter-name>
   <url-pattern>/*</url-pattern>
   </filter-mapping>
   
 <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>


赤字の部分が必要な設定です。後はServletの設定やサンプル用のWelcomeファイルの
設定を書いただけです。

※Strtus1系ではServletでリクエストをさばいていましたが, 2系からは
フィルタでさばくようです

5.   Action  を作ります。
package com.atmarkplant.struts2.action;

public class HelloAction 
{
       public String execute()
       {
          return "hello";
       }
} 

Actionは, POJO でいいのです。Struts1系のときは Action クラスを
extend  したはず。
このプログラムは"hello" という識別子を返しているだけです
次にリクエストの結果を表示するための設定ファイルを書きます

6. struts.xml   の作成

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<!-- START SNIPPET: xworkSample -->
<struts>
<package name="default" extends="struts-default">
<action name="hello"
           class="com.atmarkplant.struts2.action.HelloAction">
            <result name="hello">/WEB-INF/jsp/success.jsp</result>
        </action>
</package>
</struts>


これを/WEB-INF/classes 以下に配置します 名前は struts.xml です
赤字が重要な部分です。
package には適当な名前をつけておきましょう。
action タグのところに name  これは先ほど Action のクラスの完全修飾名です。
result  タグでforward するjspファイルの設定を書きます。

※Struts1系では /WEB-INF 以下でしたが 2系では, classes以下に配置します

7. 結果表示用  /WEB-INF/jsp/success.jsp の作成
とりあえず今回は何もしないので簡単なJSPにしておきましょう


<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<head><title>Hello</title></head>
<body>
<h1>Hello!</h1>
</body>
</html>


これで 完成です。
http://localhost/<ProjectName>/hello.action
で表示されます(<ProjectName>  は自分のWebアプリの名前)








0 件のコメント:

コメントを投稿