zoukankan      html  css  js  c++  java
  • Struts2的注解功能

    我们知道通常情况下,Struts2是通过struts.xml配置的。但是随着系统规模的加大我们需要配置的文件会比较大,虽然我们可以根据不同的系统功能将不同模块的配置文件单独书写,然后通过<include>节点将不同的配置文件引入到最终的struts.xml文件中,但是毕竟还是要维护和管理这些文件,因此也会给维护工作带来很大的困扰。为了解决这个问题,可以考虑使用struts2的注解。实际上struts2中最主要的概念就是packageaction以及Interceptor等等概念,所以只要明白这些注解就可以了。

    如果希望使用struts2的注解功能,必须使用一个包struts2-convention-plugin-2.1.8.1.jar,我使用的环境是struts2.1.8.1。如果你使用了不同的版本,找名字就行。

    在以上所述的jar文件中定义了一系列的注解,其中比较主要的是:

    • @ParentPackage,这个注解对应了xml文件中的package节点,它只有一个属性叫value,其实就是packagename属性;
    • @Namespace,命名空间,也就是xml文件中<package>namespace属性;
    • @Action,这个注解对应<action>节点。这个注解可以应用于action类上,也可以应用于方法上。这个注解中有几个属性:
      • value(),表示actionURL,也就是<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类的javapackage的名字是啥;这个常量也可以不配;

    以上三个常量都是辅助作用的,为了让注解真正的工作,必须在配置文件中增加<package>节点的配置,至少是<package name="myPackage" extends="struts-default" />,这样注解就可以使用了。

  • 相关阅读:
    Unique Binary Search Trees——LeetCode
    Binary Tree Inorder Traversal ——LeetCode
    Maximum Product Subarray——LeetCode
    Remove Linked List Elements——LeetCode
    Maximum Subarray——LeetCode
    Validate Binary Search Tree——LeetCode
    Swap Nodes in Pairs——LeetCode
    Find Minimum in Rotated Sorted Array——LeetCode
    Linked List Cycle——LeetCode
    VR AR MR
  • 原文地址:https://www.cnblogs.com/macula/p/2116205.html
Copyright © 2011-2022 走看看