Struts2:Action的三种编写方式和访问方法

Action编写方式

第一种:创建普通类,这个不继承任何类,不实现任何接口

public class HelloAction {
    ...
}

第二种:创建类,实现接口 Action(不推荐使用,实现接口必须实现接口中所有方法)

import com.opensymphony.xwork2.Action;

public class UserAction implements Action {
	@Override
	public String execute() throws Exception {
		return SUCCESS;
	}
}

第三种:创建类,继承类 ActionSupport(一般使用)

import com.opensymphony.xwork2.ActionSupport;

public class PersonAction extends ActionSupport {
	@Override
	public String execute() throws Exception {
		return SUCCESS;
	}
}

Action访问方法

第一种:使用action标签的method属性,属性值写执行的action的方法

创建action,创建多个方法

public class PersonAction extends ActionSupport {
    
	public String add() throws Exception {
		return "add";
	}

	public String del() throws Exception {
		return "del";
	}
}

在struts.xml配置method

<package name="hellodemo" extends="struts-default" namespace="/">
	<!-- 有method属性:写要执行的action里面的方法的名称 -->
	<action name="add" class="action.PersonAction" method="add">
		<result name="add">/add.jsp</result>
	</action>
	<action name="del" class="action.PersonAction" method="del">
		<result name="del">/del.jsp</result>
	</action>
</package>

缺陷:action每个方法都需要配置,如果action里面有多个方法,配置很多的action

第二种:使用action标签里面name属性,属性值使用通配符 * 星号

<package name="hellodemo2" extends="struts-default" namespace="/">
	<!-- name属性值里面写符号*,*对应action里面的方法名
		(1)访问 book_add,使用 book_* 可以匹配到action里面的add方法,*相当于变成add			
		(2)访问 book_del,使用 book_* 可以匹配到action里面的del方法,*相当于变成del
		上面两个路径使用 book_* 可以匹配到
		method属性匹配"*"值,有一个*默认从1开始数,格式:{1} -->
	<action name="book_*" class="action.PersonAction" method="{1}">
		<result name="add">/add.jsp</result>
		<result name="del">/del.jsp</result>
	</action>
</package>

注意

1、如果action方法有返回值,在配置文件中没有配置,出现错误

2、在action里面的方法有返回值,如果有返回值时候类型必须是String

3、action里面的方法可以没有返回值,没有返回值时候,在result标签不需要配置

  • 把方法写成void
  • 让返回值,返回 NONE
@Override
public String execute() throws Exception {
    return NONE;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值