在struts2中,目前已全面支持注解的使用,使用注解的好处是可以实现零配置。也就是不需要反复修改struts.xml文件。大大增加了程序员开发的效率,但是事物都有两面性,增加效率的同时,使用注解后,后期维护将不太方便。
下面来介绍struts2的注解是如何使用的。
1)如果要使用注解,必须使用一个包struts2-convention-plugin-2.3.16.jar。
2)Struts2中主要支持的注解如下:
@ParentPackage--父包
该注解相当于<package name="login" extends="struts-default"></package>中的extends属性,例如:@ParentPackage(value="struts-default")
@Namespace----命名空间
该注解相当于<package name="login"extends="struts-default"namespace="logintest"></package>中的namespace属性,例如:@@Namespace(value="/longspace")
@Result---转向
该注解相当于<action name="login"class="com.yidu.action.LoginAction"><resultname="success">/loginsuc.jsp</result></action>中的 <resultname="success">/loginsuc.jsp</result>
例如:@Result(name="success",location="/loginsuc.jsp",type="redirect")
@Results--多个转向
@Results({
@Result(name="success",location="/usersuc.jsp"),
@Result(name="error",location="/usererror.jsp")
})
@Action--action配置
这个注解对应<action>节点
value(),表示action的请求名称,也就是<action>节点中的name属性;
results(),表示action的多个result;这个属性是一个数组属性,因此可以定义多个Result;
interceptorRefs(),表示action的多个拦截器。这个属性也是一个数组属性,因此可以定义多个拦截器;
exceptionMappings(),这是异常属性,它是一个ExceptionMapping的数组属性,表示action的异常,在使用时必须引用相应的拦截器。
例如
@Action(value="login",results={
@Result(name="success",location="/index.jsp"),
@Result(name="input",location="/login.jsp")
})
3)最后,还需要注意:Struts2使用注解开发需要遵循一些规范:
1,Action要必须继承ActionSupport父类;
2,Action所在的包名必须以 .action 结尾。
例子:
@Namespace("/user")
@ParentPackage("struts-default")
public class UserLoginAction extends ActionSupport{
@Action(value="login",results={
@Result(name="success",location="/index.jsp"),
@Result(name="input", location="/login.jsp")
})
public String login(){
return SUCCESS;
}
}
使用注解时,确实方便不少,不过现在struts框架是不是已经被边缘化了,目前新的程序员和新的公司都是推荐使用SpringMVC了。各位码农大侠们觉得呢?
本文暂时没有评论,来添加一个吧(●'◡'●)