使用Struts 2动作

在Struts 2中,您将花费大部分时间进行操作。 动作类包含业务逻辑,检索资源束,保存数据,验证并选择应发送回用户的视图结果页面。 这是Struts 2的核心,因此您必须了解动作的基本概念。

1.行动

Struts 2动作不会强制您实现任何接口或扩展类,只需要您实现一个execute()方法,该方法返回一个字符串以指示应该返回哪个结果页面。

package com.mkyong.user.action;

public class LoginAction{

	//business logic
	public String execute() {
		return "success";
	}

}

struts.xml中 ,使用操作标签类属性配置操作类。 使用结果标签定义哪个结果页面应该返回给用户,以及使用名称属性可以访问该操作类的操作名称

<package name="user" namespace="/User" extends="struts-default">

  <action name="validateUser" class="com.mkyong.user.action.LoginAction">
	<result name="success">pages/welcome.jsp</result>
  </action>
  
<package>

现在,您可以通过.action扩展名后缀访问操作。

http://localhost:8080/Struts2Example/User/validateUser.action

默认的.action是可配置的,只需更改“ struts.action.extension ”值即可。

2.可选的操作界面

Struts 2带有一个可选的动作接口( com.opensymphony.xwork2.Action )。 通过实现此接口,它带来一些便利的好处,请参见源代码:

package com.opensymphony.xwork2;

public interface Action {

    public static final String SUCCESS = "success";

    public static final String NONE = "none";

    public static final String ERROR = "error";

    public static final String INPUT = "input";

    public static final String LOGIN = "login";

    public String execute() throws Exception;

}

该接口非常简单,带有5个常用常量值: 成功,错误,无,输入和逻辑 。 现在,动作类可以直接使用常量值。

package com.mkyong.user.action;

import com.opensymphony.xwork2.Action;

public class LoginAction{

	//business logic
	public String execute() {
		return SUCCESS;
	}

}

我不明白为什么许多Struts开发人员喜欢实现此Action接口,最好扩展ActionSupport。

3. ActionSupport

支持类,这是提供接口的默认实现的一种常见做法。

ActionSupport( com.opensymphony.xwork2.ActionSupport ),一个非常强大且方便的类,提供一些重要接口的默认实现:

public class ActionSupport implements Action, Validateable, 
   ValidationAware, TextProvider, LocaleProvider, Serializable {
 ...
}

ActionSupport类使您可以执行以下操作:

1.验证 –声明了validate()方法并将验证代码放入其中。
2.文本本地化 –使用GetText()方法从资源束中获取消息。

package com.mkyong.user.action;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{

	private String username;
	private String password;
	 
	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	//business logic
	public String execute() {

		return "SUCCESS";

	}

        //simple validation
	public void validate(){
		if("".equals(getUsername())){
			addFieldError("username", getText("username.required"));
		}
		if("".equals(getPassword())){
			addFieldError("password", getText("password.required"));
		}
	}
}

在大多数情况下,除非有理由不这样做,否则应扩展此类以提供方便的功能。 这也是一门很好的学习班,了解如何实现一些重要的Struts 2接口。

4.动作注解

Struts 2对注解有很好的支持,您可以删除XML文件,并在操作类中将其替换为@action

package com.mkyong.user.action;
 
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.ResultPath;
 
import com.opensymphony.xwork2.ActionSupport;
 
@Namespace("/User")
@ResultPath(value="/")
public class ValidateUserAction extends ActionSupport{
 
	@Action(value="Welcome", results={
		@Result(name="success",location="pages/welcome_user.jsp")
	})
	public String execute() {
 
		return SUCCESS;
 
	}
}

如果您想进一步了解Struts 2注释,请下载此Struts 2注释示例进行练习。

结论

不用费神,只扩展ActionSupport类,它适合大多数情况。

翻译自: https://mkyong.com/struts2/working-with-struts-2-actions/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值