struts2注解总结----@Action和@Result

除了使用配置文件配置以外,还可以使用注解来配置html

如下是一些常用的注解java

介绍:

@Action/@Actions:

@Action指定一个类为action,相应配置文件里的<action>....</action>标签,当中可以配置例如如下属性jsp

  1. results:配置返回的结果集属性,至关于struts2中的<result>列表,可以在{}中配置属性,详细例如如下
  2. value:配置action的名字,至关于<action>中的name属性
  3. interceptorRefs:配置拦截器
@Action可以定义在类上,也可以定义在方法上
例如如下(@Result的做用后面讲,也可以和后面的配合着看)
@Action(value = "testAction",results = {@Result(name="success",location="/success.jsp")})
public class testAction extends ActionSupport {

	@Override
	public String execute() throws Exception {
		return SUCCESS;
	}
}
这就至关于例如如下的xml配置
<action name="testAction" class="struts2.action.testAction">
	<result name="success">/success.jsp</result>
</action>
在xml配置中假设name不写,那么默认就是success,在注解中也是,假设results中的name不写。那么默认就是success

也可以使用@Actions来指定多个action映射,这样可以作到一个类相应多个地址映射。例如如下
@Actions({
	@Action(value = "testAction",results = {@Result(location="/success.jsp")}),
	@Action(value = "testAction2",results = {@Result(location="/success.jsp")})
})
public class testAction extends ActionSupport {

	@Override
	public String execute() throws Exception {
		return SUCCESS;
	}
}
这是使用/testAction或者/testAction2都可以跳转到success.jsp上。因为配置了两个action映射


在xml配置中,咱们有例如如下的配置方法
<action name="*" class="struts2.action.testAction" method={1}>
	<result name="{1}">/{1}.jsp</result>
</action>
这是xml配置中的通配符方式,即当咱们以add来訪问action时。将会进到action的add方法进行处理。当返回add时会跳转到add.jsp页面
在注解中没有通配符可以使用,但是也可以实现相似的效果,这时@Action就要写在方法上了,就像如下这样
public class testAction extends ActionSupport {
	@Action(value = "add",results = {@Result(name="add",location="/add.jsp")})
	public String add() throws Exception {
		return "add";
	}
	@Action(value = "delete",results = {@Result(name="delete",location="/delete.jsp")})
	public String delete() throws Exception {
		return "delete";
	}
}
这样便实现了上面的效果。这说明@Action也是可以在方法上声明的(@Actions也可以在方法上声明)

@Result/@Results:

@Result配置详细返回结果。在results中使用,也可以单独在类上使用,有例如如下属性
ide

  1. name:相应<result>中的name属性
  2. location:相应<result></result>间的地址
  3. type:相应<result>的type属性
@Result可以在类上声明。也可以和Action配置声明,假设在类上声明,那么就是全局的结果,例如如下
@Result(name="delete",location = "/delete.jsp")
public class testAction extends ActionSupport {
	@Action(value = "add", results = { @Result(name = "add", location = "/add.jsp") })
	public String add() throws Exception {
		return "add";
	}

	@Action(value = "delete")
	public String delete() throws Exception {
		return "delete";
	}
}
尽管delete方法没有指定返回delete时要跳转到哪一个页面页面。但是在类上用@Result声明了,那么就会找到类上面的这个@Result,而后跳转到delete.jsp页面

@Results是用来声明多个结果集。使用方法和@Actions相似,这里就再也不详述
相关文章
相关标签/搜索