struts2注解
来源:互联网 发布:淘宝达人跟达人一起淘 编辑:程序博客网 时间:2024/05/14 20:38
struts2有注解功能,助教是jdk5.0后的新特性。
注解必须用到的jar包:struts2-convention-plugin-2.x.x.x.jar
Struts2是通过struts.xml配置的。随着系统规模的加大我们需要配置的文件会比较大,虽然我们可以根据不同的系统功能将不同模块的配置文件单独书写,然后通过<include>节点将不同的配置文件引入到最终的struts.xml文件中,但是毕竟还是要维护和管理这些文件,因此也会给维护工作带来很大的困扰。为了解决这个问题,可以考虑使用struts2的注解。实际上struts2中最主要的概念就是package、action以及Interceptor等等概念,所以只要明白这些注解就可以了。
在以上所述的jar文件中定义了一系列的注解,其中比较主要的是:
- @ParentPackage,这个注解对应了xml文件中的package节点,它只有一个属性叫value,其实就是package的name属性;
- @Namespace,命名空间,也就是xml文件中<package>的namespace属性;
- @Action,这个注解对应<action>节点。这个注解可以应用于action类上,也可以应用于方法上。这个注解中有几个属性:
- value(),表示action的URL,也就是<action>节点中的name属性;
- results(),表示action的多个result;这个属性是一个数组属性,因此可以定义多个Result;
- interceptorRefs(),表示action的多个拦截器。这个属性也是一个数组属性,因此可以定义多个拦截器;
- params(),这是一个String类型的数组,它按照name/value的形式组织,是传给action的参数;
- exceptionMappings(),这是异常属性,它是一个ExceptionMapping的数组属性,表示action的异常,在使用时必须引用相应的拦截器;
- @Result,这个注解对应了<result>节点。这个注解只能应用于action类上。这个注解中也有几个属性:
- name(),表示action方法的返回值,也就是<result>节点的name属性,默认情况下是【success】;
- location(),表示view层文件的位置,可以是相对路径,也可以是绝对路径;
- type(),是action的类型,比如redirect;
- params(),是一个String数组。也是以name/value形式传送给result的参数;
实际上,struts2中的主要注解就是这些,当然了,还有上面提到的@interceptorRef和@exceptionMapping;基本上,掌握了这些注解就可以了。
但是如果想让这些注解真正工作,必须在配置文件增加几个常量的定义:
- struts.convention.default.parent.package:这个常量表示缺省的包名是什么,因为在实际应用中,我们常常定义一个缺省的包,这个包中定义了一大堆的拦截器等等,然后其他的包继承自这个包。这个常量可以配也可以不配;
- struts.convention.package.locators:这个常量表示你的action类的java包的包名的后缀是啥:比如action。这个常量也可以不配;
- struts.convention.package.locators.basePackage:这个常量表示你的action类的java包package的名字是啥;这个常量也可以不配;
以下是简单的一些代码:package com.newer.action;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Actions;
import org.apache.struts2.convention.annotation.ExceptionMapping;
import org.apache.struts2.convention.annotation.ExceptionMappings;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.InterceptorRefs;
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.ResultPath;
import org.apache.struts2.convention.annotation.Results;
import com.opensymphony.xwork2.ActionSupport;
@ResultPath("/")//表示在服务器下,而不是在默认content位置
@ParentPackage("mypackage")//相当于struts.xml里面的extends="xxxx"
@Namespace("/")//相当于struts.xml里面的 namespace="/"
//@InterceptorRefs包含多个拦截器
// @InterceptorRef("xxx")相当于struts.xml的引用拦截器<interceptor-ref name="xxx"/>
@InterceptorRefs( { @InterceptorRef("log"),
@InterceptorRef("defaultStack")})
//多个@Results返回结果
//<result name="sss">/xx.jsp</result>
@Results( {
@Result(name = "error", type = "redirect", location = "/error.jsp"),
@Result(name = "input", location = "/index.jsp") })
@ExceptionMappings( { @ExceptionMapping(exception = "java.lang.Exception", result = "error") })
public class UserAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private String username;
private String password;
//<action name="xxxx">
@Action(value = "user")
public String execute() {
System.out.println("execute......");
if ("123".equals(username) && "123".equals(password)) {
return SUCCESS;
} else {
return ERROR;
}
}
@Actions( { @Action(value = "add"), @Action(value = "userAdd") })
public String add() {
System.out.println("add...");
System.out.println("addUser...");
return SUCCESS;
}
@Action(value = "show", results = { @Result(name = SUCCESS, location = "/result.jsp", type = "redirect") })
public String show() {
System.out.println("show");
return SUCCESS;
}
@Action(value = "errorFun")
public String errorFun() {
System.out.println("error");
return SUCCESS;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Action(value = "user")
public String user() {
System.out.println("execute......");
if ("123".equals(username) && "123".equals(password)) {
return SUCCESS;
} else {
return ERROR;
}
}
}
- struts2注解
- struts2注解
- struts2 注解
- struts2 注解
- struts2注解
- struts2注解
- struts2注解
- struts2注解
- Struts2注解
- struts2注解
- struts2注解
- struts2注解
- struts2注解
- struts2注解
- struts2注解
- struts2注解
- struts2注解
- struts2注解
- 常用查询语句
- Hive-0.11.0 安装配置过程(MySQL存储meta data)
- 第七章
- 统计阶乘中质因子的个数
- 如何在IIS中启用GZIP压缩
- struts2注解
- 黑马程序员_<<TCP>>
- EXT4.2下 求grid里列的和
- PHP中的单例模式
- mvn 编译错误java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter. <init>(Z)V
- 在Visual Studio中给MFC类添加父类的虚函数的方法,比如给CWinApp的子类添加ExitInstance()方法
- 0001算法笔记——NP完全理论
- 封装的定时器类
- 用pdb调试OpenStack