2014年4月8日 星期二

初探 Struts 2.x

初探 Struts 2

Structs 2 與 structs 1.x 大大不同

基本上必須認知一點是 Structs 2.x 並不是 Structs 1.x 的延伸
而是xWork(WebWork的核心) 的架構,可謂是集WebWork與Struct 1.x於大成,而且依然採用 MVC
所以從技術上來說 Structs 2.x 算是全新的框架

Structs 2所需採用的 jar檔為,通常需放在 WEB-INF的lib目錄下(版號會因版本不同,但前面大致相同)

struct2-core-2.x.jar
xwork-core-2.x.jar
commons-lang-2.x.jar
commons-fileupload-1.x.jar
freemarker-2.x.jar
ognl-3.x.jar
javassist-3.x.jar
commons-io-2.x.jar
commons-lang3-3.x.jar

通常網路上會提供懶人包,一次把所有的jar包成一個jar檔,但很容易讓整個專案變得太胖,而且
開發者理論上也應該要了解哪些是真的會用的,哪些不會用到

Structs 2.x 與 1.x 基本上配置有點不一樣

在 1.x 的時候,會使用一個叫做 structs-config.xml
而在 2.x 的時候 則是在 src目錄下 建立一個叫 structs.xml
並且在 1.x 時 對於 structs 在web.xml是配置一個 servlet
但在 2.x 時,則是視為一個 filter
如下:
    <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>

假設有使用過 Structs 1.x的人應該知道 structs-config 就是配置 action的地方
而 Structs 2.x 則是在 structs.xml下面有個基本範例

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
    "http://struts.apache.org/dtds/struts-2.1.7.dtd">
    
    <struts>
        <package name="package" extends="struts-default">
            <action name="hello" class="com.company.MyStructs2" method="test">
                <result name="success">index.jsp</result>
            </action>        
        </package>
    </struts>

稍微解釋一下
package name 可隨意取
extends="structs-default" 代表直接使用 struts2.x.jar 中提供的標準設定
action name 就是 可以視為操作行為的名稱
class 就代表 class name,所以是 在 com.company.MyStructs2
method 指的是 在剛才那個 class中有個 method 叫作 test
<result name="success" index.jsp </result>
這是代表 假設 test這個method傳回的結果為 success 則將導向 index.jsp這個頁面

接著如上所示 建立一個 package 名為 com.company,接著 new一個 class名為 MyStructs2
import com.opensymphony.xwork2.ActionSupport;

public class MyStructs2 extends ActionSupport{

    public String test(){
        return "success";
    }

}

如上所示,注意 Struts 2.x 是 extends ActionSupport 而  1.x通常是 Action

接著 請隨意建一個 index.jsp 頁面,當我們要測試 structs 2.x是否運作成功時
則在瀏覽器上輸入 http://serverIP:port/projectName/hello.action

如上所示,測試時 URL 的結尾是採用 .action ,而 structs 1.x 則使用 .do




沒有留言:

張貼留言