struts2的簡單使用

第一種方式:不繼承於任何類的Action 。
這種方式的好處是,我們寫的Action類完全不和struts2框架發生耦合,代碼不依賴struts2的類庫。

/**
 * 第一種寫法:普通的java對象(pojo)
 * 這是一個struts2處理類
 * @author benxi
 * 處理原則:
 * public String XX無參方法
 * get set方法
 */
public class loginAction {
    private String name; 
    private String password;
    public String login(){
        if("zhangsan".equals(name)&&"123".equals(password)){
            return "success";
        }else
            return "error";

    }
、、get/set方法省略

對應的struts.xml文件寫法:

    <!--  配置Action
        先定義一個包標籤(管理Action)
        package標籤
            name:包名
            extends:繼承其它包(struts-default系統包-必須)
        action標籤
            name:訪問Action路徑名
            class:Action全路徑名
            method:方法名
        result標籤
            name:視圖名
            標籤內容:頁面路徑
     -->
    <package name="demo" extends="struts-default">
<!-- 指定方法名 -->
        <action name="loginaction" class="com.action.loginAction" method="login">
    <!--    其中success.jsp前面不加/是相對於本命名空間的路徑,加上/代表項目根目錄 -->
            <result name="success">success.jsp</result>
            <result name="error">error.jsp</result>
        </action>
    </package>
</struts>

元素告訴了我們調用完Action後下一步做什麼。一般作爲的子元素


第二種寫法:實現Action接口
Struts2的Action接口中只定義了execute方法和幾個預定義的常量。

/**
 * 第二種寫法:實現Action接口)
 */
public class LoginAction implements Action{
    private String name; 
    private String password;
    @Override
    public String execute() throws Exception {
        if("zhangsan".equals(name)&&"123".equals(password)){
            //使用Action接口自帶的常量
            return this.SUCCESS;
        }else
            return this.ERROR;
    }

下面對於name和password的get/set方法省略
對應的struts.xml文件寫法:

<!-- 不需要指定方法名 -->
        <action name="loginaction" class="com.action.LoginAction">
            <result name="success">success.jsp</result>
            <result name="error">error.jsp</result>
        </action>

第三種寫法:繼承ActionSupport類
ActionSupport類實現了Action接口,我們自定義的Action類一般都採用繼承ActionSupport類的方式。使用ActionSupport的好處是我們可以直接使用這個類中已經定義好的方法。

/**
 * 第三種寫法:繼承ActionSupport類
 */
public class LoginAction extends ActionSupport{
    private String name; 
    private String password;
    private String message;
    @Override
    public String execute() throws Exception {
        if("zhangsan".equals(name)&&"123".equals(password)){
            //可以在jsp頁面直接使用EL表達式讀取出這個數據,三種設置action方式都可以使用這個
            message = "您好! ["+name+"]";
            //在jsp頁面使用特定的表達式讀取
            this.addActionMessage("您好! ["+name+"]");
            return this.SUCCESS;
        }else{
            message = "用戶名或者密碼錯誤!";
            this.addActionError("用戶名或者密碼錯誤!");
            return this.ERROR;
        }
    }
    public String login(){
        if("zhangsan".equals(name)&&"123".equals(password)){
            this.addActionMessage("您好! ["+name+"]");
            return this.SUCCESS;
        }else{
            this.addActionError("用戶名或者密碼錯誤!");
            return this.ERROR;
        }
    }

struts.xml文件;

<!-- 採用通配符*來簡化配置 
        *:表示任意字符
        {1}:表示使用第一個*的具體字符
        例如:user_login 則調用login方法
-->
    <action name="user_*" class="com.action.LoginAction" method="{1}">
        <result name="success">success.jsp</result>
        <result name="error">error.jsp</result>
    </action>
發佈了37 篇原創文章 · 獲贊 23 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章