Struts2之【Action】

Action是Struts2的核心,其中包括:部分业务逻辑,资源包获取,表单验证,返回视图页面等。jsp

1.Action动做

Struts2不须要实现任何借口或扩展类,只须要实现一个public String execute();方法,返回结果画面ide

第一步:书写action方法post

public class LoginAction{
    
    public String execute(){
        ...
        return "success"; //struts.xml配置文件的字符串配置一致
    }
}

第二步:在struts.xml中对Action进行声明ui

能够参照配置文件说明:struts.xmlthis

<package name="user" namespace="/User" extends="struts-default">
    <action name="login" class="com.action.user.LoginAction">
        <result name="success">/welcome.jsp</result>
    </action>
</package>

如今就能够经过一下连接进行访问spa

http://localhost:8080/Struts2Demo/User/login.action.net

.action后缀是能够配置的,在strut.xml中配置struts.action.extension属性code

参照配置文件说明:struts.xmlorm

2.ActionSupport

虽然Action能够不用实现任何借口,可是通常为了更加方便的使用Action,会去实现xml

com.opensymphony.xwork2.ActionSupport
public class ActionSupport implements Action, Validateble,
    ValidationAware, TextProvider, LocaleProvider, Serializable{...}

ActionSupport提供了一些功能

验证:在Action中实现一个public void validate()方法便可

文字本地化:使用gettext()方法获取资源包的信息

public void validate(){
        if("".equals(user.getUserName())){
            addFieldError("username", getText("username.required"));
        }
    }

3.注解方式声明Action

Struts2除了能够在xml中声明Action外,还能够使用注解的方式来声明。

@Namespace("/User")
@ResultPath(value="/")
public class LoginAction extends ActionSupport{
    @Action(value="welcome", result={
        @Result(name="success", location="/welcome.jsp")
    })
    public String execute(){
        return "success"
    }
}

4.Action与Form表单提交

表单数据包含在Action中,经过Getter和Setter获取

4.1form表单name与action属性名一致
<!-- JSP -->
<form action="login.action"method="post">
    用户名:<input type="text"name="username"/> <br/>
    密码: <input type="password"name="password"/><br/>
    <input type="submit"value="登录"/>
</form>

<!-- Action -->
public class LoginAction{
    private String username;
    private String password;
    
    public String execute(){
        return "success";
    }

    public String getUsername(){
        return username;
    }
    public void setUsername(String username){
        this.username = username;
    }
    public String getPassword(){
        return password;
    }
    public void setPassword(String password){
        this.password = password;
    }    
}
4.2使用Bean对象
<!-- JSP -->
<form action="login.action"method="post">
    用户名:<input type="text"name="user.username"/> <br/>
    密码: <input type="password"name="user.password"/><br/>
    <input type="submit"value="登录"/>
</form>

<!-- Bean -->
public class User{
    private String username;
    private String password;
    
    public String getUsername(){
        return username;
    }
    public void setUsername(String username){
        this.username = username;
    }
    public String getPassword(){
        return password;
    }
    public void setPassword(String password){
        this.password = password;
    }    
}

<!-- Action -->
public class LoginAction{
    private User user;
    
    public String execute(){
        return "success";
    }

    public User getUser(){
        return user;
    }
    public void setUser(User user){
        this.user = user;
    }
}
4.3使用ModeDriven数据模式
<!-- JSP -->
<form action="login.action"method="post">
    用户名:<input type="text"name="username"/> <br/>
    密码: <input type="password"name="password"/><br/>
    <input type="submit"value="登录"/>
</form>


<!-- Action : Action类要实现一个泛型接口 -->
public class LoginAction extends ActionSupport implements ModeDriven<User>{
    private User user = new User();
    
    public String execute(){
        return "success";
    }

    public User getModel(){
        return User;
    }
       
}

5.ActionError & ActionMessage

  • ActionError :用来发送错误信息给用户, 经过<s:actionerror/>标签来显示
<s:if test="hasActionErrors()">
    <div class="error">
        <s:actionerror/>
    </div>
</s:if>
  • ActionMessage :用来发送信息反馈给用户,经过<s:actionmessage>来显示
<s:if test="hasActionErrors()">
    <div class="message">
        <s:actionmessage/>
    </div>
</s:if>

JAVA代码部分:经过addActionError()及addActionMessage()方法来设置信息。

相关文章
相关标签/搜索