struts2.0 Action

按照之前所講的,我們會寫很多的Action,在實際開發中會顯得非常麻煩,所以下面介紹一下

(一)

動態方法調用

作用:減少Action數量

使用:actionName!methodName.action

禁用:屬性struts.enable.DynamicMethodInvocation設置爲false

代碼貼下來

UserAction

package com.mynews.action;

import com.mynews.entity.Users;
import com.mynews.service.LoginService;
import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {

    /**
     *
     */
    private static final long serialVersionUID = 1L;
    private Users user;
    public Users getUser() {
        return user;
    }
    public void setUser(Users user) {
        this.user = user;
    }
    
    private LoginService ls=new LoginService();
    public String doLogin(){
        Users myuser = ls.login(user);
        if (myuser != null)    {return "login_success";}
        else{super.addActionError("用戶名或密碼錯誤");
        return "login_input";}
    }
    public String doReg(){
        int ret=1;
        if(ret==1)return "reg_success";
        return "reg_input";
    }
    
}

login.jsp

 <s:actionerror/>
  <form action="/mynews/userAction!doLogin.action" method="post">
        用戶名:<input type="text" name="user.uname"/><br/>
        密  &nbsp; &nbsp;碼:<input type="password" name="user.upass"/><br/>
        <input type="submit" value="登錄"/><input type="reset" value="重置"/>
   </form>
  </body>

register.jsp

<s:form action="userAction!doReg"  namespace="/" method="post">
    用戶名:<s:textfield name="user.uname"></s:textfield><s:fielderror fieldName="uname_error" /><br/>
    密碼:<s:password name="user.upass"></s:password><s:fielderror fieldName="upass_error" /><br/>
   出生日期:<s:textfield name="user.birthday"></s:textfield><br/>
  <s:submit value="提交" />
  </s:form>

struts.xml

<action name="userAction" class="com.mynews.action.UserAction">
                <result name="login_input">/ch01/login.jsp</result>
            <result name="login_success">/ch01/main.jsp</result>
            <result name="reg_success">/ch01/login.jsp</result>
            <result name="reg_input">/ch01/register.jsp</result>

        </action>
(二)

method屬性

結合通配符(*)的使用

<form action="/mynews/doLogin_user" method="post">
        用戶名:<input type="text" name="user.uname"/><s:fielderror fieldName="uname_error"/><br/>
        密  &nbsp; &nbsp;碼:<input type="password" name="user.upass"/><s:fielderror fieldName="upass_error"/><br/>
        <input type="submit" value="登錄"/><input type="reset" value="重置"/>
   </form>

  <s:form action="doReg_user"  namespace="/" method="post">
    用戶名:<s:textfield name="user.uname"></s:textfield><s:fielderror fieldName="uname_error" /><br/>
    密碼:<s:password name="user.upass"></s:password><s:fielderror fieldName="upass_error" /><br/>
   出生日期:<s:textfield name="user.birthday"></s:textfield><br/>
  <s:submit value="提交" />
  </s:form>

strut.xml文件

    <action name="*_user" class="com.mynews.action.UserAction" method="{1}">
                <result name="login_input">/ch01/login.jsp</result>
                <result name="login_success">/ch01/main.jsp</result>
                <result name="reg_success">/ch01/login.jsp</result>
                <result name="reg_input">/ch01/register.jsp</result>
        </action> 

默認的錯誤處理頁面的設置:

<package name="default" namespace="/" extends="struts-default" >
    <default-action-ref name="defaultAction"></default-action-ref>
    <action name="defaultAction">
        <result>/ch01/404.jsp</result>
    </action>

</package>


struts2常量配置

struts.devMode

作用:輸出很多有用的日誌

struts.configuration.xml.reload

每次執行action的時候重新加載相關配置文件

struts.il8n.reload

Result配置

常用結果類型

dispatcher:請求轉發

redirect:重定向

chain:從一個Action跳到另一個Action

redirectAction:從一個Action跳到另一個Action

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章