大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 struts2使用入門

struts2使用入門

更新時間:2021-07-30 16:50:42 來源:動力節點 瀏覽1086次

雖然說Struts2現在已經被SpringMVC框架淘汰了,據說是有很多安全漏洞。但是Struts2作為一個成熟的MVC框架,還是有必要了解一下的,好歹是曾經風光一時的前輩,老祖宗的東西不能丟下,里面有很多設計思想都是值得借鑒的。

哈哈哈,前面說的話逼格是不是很高,連我自己都不信。其實是因為最近在維護SSH(Struts2+Spring+Hibernate)框架寫的老項目啦,其中有些代碼甚至可以追溯到2004年,簡直666。雖然是年代久遠的祖傳代碼,很不愿意維護,但是工作(恰飯)要緊,還是要稍微學習一下Struts2的使用,輕裝上陣。

Struts2編寫Action的三種方式

1.創建普通類。

自己創建的普通類需要人為定義常量SUCCESS,而且沒有表單校驗等功能,需要自己編寫代碼實現。

Struts2編寫Action的三種方式

1.創建普通類。

自己創建的普通類需要人為定義常量SUCCESS,而且沒有表單校驗等功能,需要自己編寫代碼實現。

package com.test.struts2;
 
public class TestAction {
    public String execute() {
        return "success";
    }
 
    public String add() {
        return "success";
    }
 
    public String delete() {
        return "error";
    }
}

2.實現Action接口。

Action接口中定義了常量SUCCESS。

package com.test.struts2;
 
import com.opensymphony.xwork2.Action;
 
public class TestAction1 implements Action {
    @Override
    public String execute() throws Exception {
        // TODO Auto-generated method stub
        return SUCCESS;
    }
 
    public String add() {
        // System.out.println("我是add()");
        return SUCCESS;
    }
}

3.繼承ActionSupport類(最常用)。

ActionSupport類其實是實現了Action接口的,其中封裝的功能較多,實現了表單驗證及常量SUCCESS的定義等。

package com.test.struts2;
 
import com.opensymphony.xwork2.ActionSupport;
 
public class TestAction2 extends ActionSupport {
    public String execute() {
        return SUCCESS;    
    }
}

Struts2訪問Action的三種方式

1.訪問action默認調用execute()方法。比如說有一個TestAction2,訪問localhost:8080/test2就會調用execute()方法。如果要調用action中的其他方法,需要使用【!】符號,比如另外有一個laugh()方法,就可以通過訪問localhost:8080/test2!laugh進行調用。

<!-- 繼承ActionSupport類,默認的method調用execute() -->
<package name="test2" extends="struts-default" namespace="/test2">
    <action name="test2" class="com.test.struts2.TestAction2">
        <result>/test2.jsp</result>
    </action>
</package>

2.在action標簽中配置method屬性。

<!-- 實現Action接口,method屬性實現請求 -->
<package name="test1" extends="struts-default" namespace="/test1">
    <action name="test1" class="com.test.struts2.TestAction1" method="add">
        <result>/test1.jsp</result>
    </action>
</package>

3.通配符訪問。比如localhost:8080/test_方法名。

<!-- 普通類實現Action接口,method用通配符實現請求 -->
<package name="test" extends="struts-default" namespace="/test">
    <action name="test_*" class="com.test.struts2.TestAction" method="{1}">
        <result name="success">/test1.jsp</result>
        <result name="error">/test2.jsp</result>
    </action>
</package>

Struts2獲取前臺參數的三種方式

這里使用form表單提交作為例子,當然使用ajax提交都可以。

1.屬性驅動。

在Action中定義屬性,確保所定義的屬性名稱與Form表單中的name屬性一致,適用于屬性個數較少的情況。

<form action="login" method="post>
    用戶名:<input type="text" name="username"/><br/>
    密碼:<input type="password" name="password"/><br/>
    <button type="submit" name="login">登錄</button>
</form>
public class LoginAction extends ActionSupport {
    // 屬性驅動,需要input中name屬性值相同(屬性個數較少情況)
    private String username;
    private String password;
    
    public void setUsername(String username) {
        this.username = username;
    }
 
    public String getPassword() {
        return password;
    }
 
    public void setPassword(String password) {
        this.password = password;
    }
 
    public String login() {
        if ("yanggb".equals(username) && "123".equals(password)) {
            return SUCCESS;
        }
    }
}

2.對象驅動。

創建一個對象實例,將表單定義的屬性匹配給所定義的對象,即以對象為單位,用對象獲取屬性,方便屬性較多的情況。

<form action="login" method="post>
    用戶名:<input type="text" name="user.username"/><br/>
    密碼:<input type="password" name="user.password"/><br/>
    <button type="submit" name="login">登錄</button>
</form>
public class LoginAction extends ActionSupport {
    // 對象驅動,input中name屬性要以【對象.屬性】格式組織
    private User user;
    
    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
 
    public String login() {
        if ("yanggb".equals(user.username) && "123".equals(user.password)) {
            return SUCCESS;
        }
    }
}

3.模型驅動。

模型驅動是對象驅動的升級,實現ModelDriven<User>接口,人為將一個對象User作為一個Model,將View層和Controller層關聯起來。這樣,View就能實現表單屬性的匹配,同時也能知道Controller層的功能。只要使用getModel()返回對象user匹配model中的屬性即可,頁面不需要對象。

<form action="login" method="post>
    用戶名:<input type="text" name="username"/><br/>
    密碼:<input type="password" name="password"/><br/>
    <button type="submit" name="login">登錄</button>
</form>
public class LoginAction extends ActionSupport implements ModelDriven<User> {
    private User user;
    
    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
 
    public String login() {
        if ("yanggb".equals(user.username) && "123".equals(user.password)) {
            return SUCCESS;
        }
    }

    @override
    public User getModel() {
        // TODO Auto-generated method stub
        // 得到model對象user(自動匹配model里面的屬性,不用再在form的name屬性中寫具體對象)
        return user;
    }
}

要注意的是,當屬性驅動與模型驅動同時存在的時候,不會執行屬性驅動方法,而是直接執行模型驅動來獲取參數。

以上就是動力節點小編介紹的"struts2使用入門",希望對大家有幫助,想了解更多可查看Struts2視頻教程。動力節點在線學習教程,針對沒有任何Java基礎的讀者學習,讓你從入門到精通,主要介紹了一些Java基礎的核心知識,讓同學們更好更方便的學習和了解Java編程,感興趣的同學可以關注一下。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 波多野结衣亚洲一区 | 国产一区二区三区四区在线 | 成人国产一区二区三区精品 | 亚洲国产爱久久全部精品 | 狠狠躁天天躁夜夜躁婷婷 | 国产成人久久精品麻豆二区 | 国产亚洲欧美在线 | 国产一级毛片一区二区三区 | 欧美三级做爰在线 | a级毛片毛片免费观看久潮 a级毛片免费 | 伊人99综合| 国产三级精品三级男人的天堂 | 男女超爽视频免费播放在线观看 | 黄片毛片免费观看 | 免费精品美女久久久久久久久 | 亚洲综合色吧 | 久久爱99re| 日韩在线国产精品 | 国产精品伦一区二区三级视频 | 国产在线视频凹凸分类 | 国产人成精品综合欧美成人 | 国产精品久久久久久久久夜色 | 国产一二三区在线 | a毛片免费观看完整 | 毛片3| 天天操天天插天天干 | 成人ab片 | 国产乱码精品一区二区三上 | 99视频免费 | 欧美色视频日本片高清在线观看 | 欧美日韩国产在线观看 | www.四虎在线| 久久99国产综合色 | 国产一级特黄a大片99 | 久久综合九色综合91 | 亚洲一区视频 | 九九热精品视频在线观看 | 国产精品一区二区三区久久 | 男女精品视频 | 农村三级孕妇视频在线 | 国产乱码精品一区二区 |