Struts2基于注解的Action配置
使用注解来配置Action的最大优点就是能够实现零配置,可是事务都是有利有弊的。使用方便。维护起来就没那么方便了。
要使用注解方式,我们必须加入一个额外包:struts2-convention-plugin-2.x.x.jar。
虽说是零配置的,但struts.xml还是少不了的,配置例如以下:
<?
xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<!-- 请求參数的编码方式-->
<constant name="struts.i18n.encoding" value="UTF-8"/>
<!-- 指定被struts2处理的请求后缀类型。
多个用逗号隔开-->
<constant name="struts.action.extension" value="action,do,htm"/>
<!-- 当struts.xml修改后。是否又一次载入。默认值为false(生产环境下使用),开发阶段最好打开 -->
<constant name="struts.configuration.xml.reload" value="true"/>
<!-- 是否使用struts的开发模式。开发模式会有很多其它的调试信息。
默认值为false(生产环境下使用),开发阶段最好打开 -->
<constant name="struts.devMode" value="false"/>
<!-- 设置浏览器是否缓存静态内容。
默认值为true(生产环境下使用),开发阶段最好关闭 -->
<constant name="struts.serve.static.browserCache" value="false" />
<!-- 指定由spring负责action对象的创建
<constant name="struts.objectFactory" value="spring" />
-->
<!-- 是否开启动态方法调用-->
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
</struts>
action类的注解:
package com.tjcyjd.web.action;
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("/annotation_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 static final long serialVersionUID = 2730268055700929183L;
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;
}
}
这样就完毕了一个基于注解的action配置。
总结经常使用的注解例如以下:
Namespace:指定命名空间。
ParentPackage:指定父包。
Result:提供了Action结果的映射。
(一个结果的映射)
Results:“Result”注解列表
ResultPath:指定结果页面的基路径。
Action:指定Action的訪问URL。
Actions:“Action”注解列表。
ExceptionMapping:指定异常映射。
(映射一个声明异常)
ExceptionMappings:一级声明异常的数组。
InterceptorRef:拦截器引用。
InterceptorRefs:拦截器引用组。
相关文章
- pycharm用anaconda的Python_pycharm配置anaconda环境
- centos7 配置lamp 环境[通俗易懂]
- Intellij IDEA优化配置(1)——Darcula主题的选择以及字体和颜色配置(基于Intellij IDEA 2019.1)
- CI/CD:基于K8s弹性资源池的配置【第一步】自动化创建Jenkins的Agent节点
- TKE上nginx-ingress如何配置7层接入WAF
- 华为二层交换机下的vlan配置案列基于trunk+access
- 【MySQL】基于Win10系统安装配置MySQL8.0.28版本的数据库
- 基于Python的cmake多目录工程的自动配置实现详解编程语言
- Oracle 参数 DATA_GUARD_MAX_LONGIO_TIME 官方解释,作用,如何配置最优化建议
- php-fpm配置正确方法详解编程语言
- 如何配置Linux系统的个人电脑(linux电脑配置)
- 【MySQL 配置指南:快速搭建服务器地址】(mysql配置地址)
- Linux双网卡同网段配置方法(linux双网卡同网段)
- Debian Linux下安装配置 Pure
- Linux下如何配置Ant?(linux配置ant)
- Linux下配置网关命令指南(linux配置网关命令)
- Linux系统如何进行时区配置?(linux时区配置)
- 高可用集群!(Linux配置ha)
- 基于MongoDB的多IP配置使用指南(mongodb 多个ip)
- 基于Redis的安全配置方法研究(redis安全设置)
- 如何在Linux下修改JVM参数配置(linux修改jvm参数)
- 服务微服务实践利用2个Redis服务达到稳定性(微服务配置2个redis)
- 基于Redis集群的高可用配置方案(redis集群配置方案)
- 搭建基于Redis集群的从节点配置(redis集群从节点配置)
- Redis如何配置日志路径(redis 配置日志路径)
- ms基于Redis实现RDBMS数据库的配置(redis配置支持rdb)
- 基于Redis的配置优化,避免假死现象(redis配置假死)
- 基于Redis的配置优化提升性能(redis配置性能优化)
- 基于Redis的高效查询配置实践(redis查询配置)
- 基于Xen的VPS配置squid服务器