Strtus2注解

通过在Struts2中使用struts.xml和Struts2注解结合来配置Action,可以简化配置文件代码量,又使配置变得更加灵活。在Strtus2中有以下几个注解:
   
  • @ParentPackage:
  • @Namespace:
  • @Results和Result注解:

@ParentPackage:

它相当于<package>中的extends属性,也就是设置当前包的父包。其中它有一个value属性,它相当于<package>中的name属性值。

@Namespace

是用来指定当前包的命名空间的。它只有一个value属性,表示命名空间的名字。

@Results和@Result注解要在一起使用

@Results注解有一个@Result数组型的value 属性。
@Result注解有以下四个参数:

  • name:String类型,表示结果名,默认是Action.SUCCESS。
  • type: Class类型,相当于<result>标签的type属性,默认值是NullResult.class。
  • value:String类型,结果值,可以是有效的Web资源URL。
  • params:String[]类型。相当于<result>标签的<param>子标签。格式为{key1,key2..}
   
注意:Struts2注解有一个约定,Action名字就是名为XxxAction动作类的xxx。也就是说Action类为LoginAction,则Action类名为login。   
   
以下是convention-plugin的约定:以下修改都是在Struts.xml中。

1、struts.convention.result.path

默认所有的结果页面都存储在WEB-INF/content下,通过设置struts.convention.result.path这个属性的值来改变到其他路径。
<constant name="struts.convention.result.path" value="/" />

这个表示所有的结果位于网站根目录下了。

2、struts.convention.package.locators

默认包路径包含action,actions,struts,struts2的所有包都会被struts作为含有Action类的路径来搜索。通过设置struts.convention.package.locators属性来修改这个配置。
<constant name="struts.convention.package.locators" value="web,action" /> 

这个表示包路径包含web和action的将被视为Action存在的路径来进行搜索。

3、命名空间从定义的.package.locators标示开始到包结束的部分,就是命名空间。

  Com.ustb.web.user.userAction的命名空间是:”/user”。
  Com.ustb.web.user.detail.UserAction的命名空间是:”/user/detail”

实例分析:

@Action(value="wsh",results={ @Result( name="success" , location="success.jsp"),
                              @Result( name="login"   , location="error.jsp"  )})
 public String execute()  {
  ActionContext context = ActionContext.getContext();
  HttpServletRequest request = (HttpServletRequest) context.get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);
  String username = request.getParameter("username");
  String password = request.getParameter("password");
  if ("wsh".equals(username) && "butterfly".equals(password))   {
   return SUCCESS;
  }   else   {
   return LOGIN;
  }
 }


struts.xml文件中的内容如下:
<constant name="struts.convention.package.locators" value="action" />
<constant name="struts.convention.result.path" value="/" />

你可能感兴趣的:(strtus2)