struts2.0 Action

来源:互联网 发布:广东省广播网络电视台 编辑:程序博客网 时间:2024/06/14 16:34

按照之前所讲的,我们会写很多的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

原创粉丝点击