使用注解来配置Action的最大好处就是可以实现零配置但是事务都是有利有弊的使用方便维护起来就没那么方便了
要使用注解方式我们必须添加一个额外包strutsconventionpluginxxjar
虽说是零配置的但strutsxml还是少不了的配置如下
<?xml version= encoding=UTF ?>
<!DOCTYPE struts PUBLIC
//Apache Software Foundation//DTD Struts Configuration //EN
/dtds/strutsdtd>
<struts>
<! 请求参数的编码方式>
<constant name=strutsinencoding value=UTF/>
<! 指定被struts处理的请求后缀类型多个用逗号隔开>
<constant name=strutsactionextension value=actiondohtm/>
<! 当strutsxml改动后是否重新加载默认值为false(生产环境下使用)开发阶段最好打开 >
<constant name=nfigurationxmlreload value=true/>
<! 是否使用struts的开发模式开发模式会有更多的调试信息默认值为false(生产环境下使用)开发阶段最好打开 >
<constant name=strutsdevMode value=false/>
<! 设置浏览器是否缓存静态内容默认值为true(生产环境下使用)开发阶段最好关闭 >
<constant name=strutsservestaticbrowserCache value=false />
<! 指定由spring负责action对象的创建
<constant name=strutsobjectFactory value=spring />
>
<! 是否开启动态方法调用>
<constant name=strutsenableDynamicMethodInvocation value=false/>
</struts>
action类的注解
package comtjcyjdwebaction;
import ornventionannotationAction;
import ornventionannotationExceptionMapping;
import ornventionannotationExceptionMappings;
import ornventionannotationNamespace;
import ornventionannotationParentPackage;
import ornventionannotationResult;
import ornventionannotationResults;
import comopensymphonyxworkActionSupport;
/**
* Struts基于注解的Action配置
*
*/
@ParentPackage(strutsdefault)
@Namespace(/annotation_test)
@Results( { @Result(name = success location = /mainjsp)
@Result(name = error location = /errorjsp) })
@ExceptionMappings( { @ExceptionMapping(exception = javalangeRuntimeException result = error) })
public class LoginAction extends ActionSupport {
private static final long serialVersionUID = L;
private String loginName;
private String password;
@Action(login) //或者写成 @Action(value = login)
public String login() throws Exception {
if (yjdequals(loginName) && yjdequals(password)) {
return SUCCESS;
} else {
return ERROR;
}
}
@Action(value = add results = { @Result(name = success location = /indexjsp) })
public String add() throws Exception {
return SUCCESS;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
thisloginName = loginName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
thispassword= password;
}
}
这样就完成了一个基于注解的action配置
总结常用的注解如下
Namespace指定命名空间
ParentPackage指定父包
Result提供了Action结果的映射(一个结果的映射)
ResultsResult注解列表
ResultPath指定结果页面的基路径
Action指定Action的访问URL
ActionsAction注解列表
ExceptionMapping指定异常映射(映射一个声明异常)
ExceptionMappings一级声明异常的数组
InterceptorRef拦截器引用
InterceptorRefs拦截器引用组