struts2-convention-plugin-2.x.x.jar是用于支持注解的包;

所以要使用注解方式,我们必须添加这个额外的包。

并且在WEB.XML文件中struts过滤器设置为

<filter>   

<filter-name>struts2</filter-name>   

<filter-class>

    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

</filter-class>


一、Struts2常用注解如下:

Namespace:指定命名空间。

    该注解相当于<package name="login" extends="struts-default" namespace="logintest"></package>中的namespace属性,例如:@Namespace(value="/longspace")


ParentPackage:指定父包。

    该注解相当于<package name="login" extends="struts-default"></package>中的extends属性,例如:@ParentPackage(value="struts-default")


Result:提供了Action结果的映射。(一个结果的映射)

    该注解相当于<action name="login" class="com.lwsoft.action.LoginAction">
         <result name="success">/loginsuc.jsp</result>
     </action>中的<result name="success">/loginsuc.jsp</result>
例如:@Result(name="success",location="/loginsuc.jsp",type="redirect") !!!注意,在struts2.1.6中是location来转向页面,而在struts2.0.4是value属性


Results:“Result”注解列表

    @Results({
         @Result(name=SUCCESS,location="/index.jsp"),
         @Result(name=ERROR,location="/error.jsp")
    })来配置多个转向

name属性指定返回的字符串,

location指定要跳转的页面,

type指定Result的类型

ResultPath:指定结果页面的基路径。

Action:指定Action的访问URL。

    该注解相当于<action name="login" class="com.lwsoft.action.LoginAction">
         <result name="success">/loginsuc.jsp</result>
     </action>中的<action name="login" class="com.lwsoft.action.LoginAction">例如:@Action(value = "login", results = { @Result(name = SUCCESS, location = "/index.jsp") })

Actions:“Action”注解列表。一个ACTION中的一个方法,响应多个不同的URL的效果。

ExceptionMapping:指定异常映射。(映射一个声明异常)
ExceptionMappings:一级声明异常的数组。
InterceptorRef:拦截器引用。
InterceptorRefs:拦截器引用组。

二、示例代码如下:

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.ExceptionMapping;
import org.apache.struts2.convention.annotation.ExceptionMappings;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;

import com.opensymphony.xwork2.ActionSupport;

/**
 * Struts2基于注解的Action配置
 */
@ParentPackage("struts-default")
@Namespace("/test")
@Results({ @Result(name = "success", location = "/main.jsp"),
        @Result(name = "error", location = "/error.jsp") })
@ExceptionMappings({ @ExceptionMapping(exception = "java.lange.RuntimeException", result = "error") })
public class LoginAction extends ActionSupport {
    private String loginName;
    private String password;

    @Action(LOGIN)
    // 或者写成 @Action(value = LOGIN)
    public String login() throws Exception {

        if ("yjd".equals(loginName) && "yjd".equals(password)) {
            return SUCCESS;
        } else {
            return ERROR;
        }
    }

    @Action(value = "add", results = { @Result(name = SUCCESS, location = "/index.jsp") })
    public String add() throws Exception {
        return SUCCESS;
    }

    public String getLoginName() {
        return loginName;
    }

    public void setLoginName(String loginName) {
        this.loginName = loginName;
    }

    public String getPassword() {
        return password;
    }

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