1.引入支持Struts2框架注解开发的jar包
struts2-convention-plugin-2.3.24.1
如图:
2.配置struts.xml:
<constant name="struts.convention.action.suffix" value="Action"/>
1)Action要必须继承ActionSupport父类;
2)Action所在的包名必须以 Action 结尾。
4.action中常用的注解
(1)Namespace Annotation
1.通过在ActionClass上定义 @Namespace("/manger")
2.通过 package-info.java 定义
@org.apache.struts2.convention.annotation
Namespace("/manger")
(2)Action Annotation
1. @Action(interceptorRefs={
@InterceptorRef("validation"),
@InterceptorRef("defaultStack")
})
2. chain
@Action("foo")
public String foo() {
return "bar";
}
@Action("foo-bar")
public String bar() {
return SUCCESS;
}
(3)Result Annotation
1.全局,整个类可以访问
2.局部,某个方法可以访问
@Results({
@Result(name="failure", location="fail.jsp")
})
public class HelloWorld extends ActionSupport {
@Action(value="/different/url",results={@Result(name="success", location="http://struts.apache.org", type="redirect")} )
public String execute() {
return SUCCESS;
}
}
可以传递参数:
results={ @Result(name="success",
type="httpheader",
params={"status", "500", "errorMessage", "Internal Error"})
写一个例子:
步骤如下:
1.在action包下又建一个包,并且把package-info也创建出来~,如图
2.编写MangerAction:
public class ManagerAction extends ActionSupport{
private static final long serialVersionUID = 7840839944920404854L;
/*
* localhost:9999/eStore_sh/manager/toIndex.action
*/
@Action(value="toIndex",results={@Result(name=SUCCESS,location="/WEB-INF/jsp/manager/index.jsp")})
public String toIndex(){
System.out.println("toIndex");
return SUCCESS;
}
}
3.编写package-info:
@Namespace("/manager")
@ParentPackage("default")
package com.e.storesh.web.action.manager;
import org.apache.struts2.convention.annotation.DefaultInterceptorRef;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
4.在浏览器中运行,效果图如下