程序员的知识教程库

网站首页 > 教程分享 正文

在Struts2中使用注解,实现零配置

henian88 2024-08-12 19:44:10 教程分享 93 ℃ 0 评论

在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了。各位码农大侠们觉得呢?

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表