zoukankan      html  css  js  c++  java
  • Annotation(四)——Struts2注解开发

      HibernateSpring框架的开发前边总结了,这次看一下流行的MVC流程框架Struts2的注解开发吧。Struts2主要解决了从JSPAction上的流程管理,如何进行Uriaction类中每个方法的绑定这是重点,在这里先简单看一下配置文件中的简单配置:

    复制代码
    <!-- 这是包名和命名空间的声明 -->
        <package name="orgPackage" namespace="/org" extends="struts-default">
            <!-- 这是action和方法的声明 -->
            <action name="index" class="orgAction" method="index">
                <result name="success" type="dispatcher">/jsp/org/index.jsp</result>
            </action>
        </package>
    复制代码

    感觉Struts2的配置还是比较麻烦的,需要我们配置每一个action中的每一个方法进行配置,当然了,这里也可以通过通配符*的方式进行简化。但是每个类都需要遵循规则。这里看一下Struts2注解的开发吧!

    一,引入支持Struts2支持注解开发jar包:

      struts2-convention-plugin-2.1.8.1.jar(支持Struts2框架注解开发的jar包)

    二,Struts2使用注解开发需要遵循一些规范:

      1Action要必须继承ActionSupport父类;

      2,Action所在的包名必须以  .action 结尾。

    三,action中常用的注解:

         1@ParentPackage:对应xml配置文件中的package的父包,一般需要继承struts-default。

       2,@Namespace:对应配置文件中的nameSpace,命名空间。

       3,写在方法前边的注解:

    • @Action,这个注解对应<action>节点
      • value()表示action的请求名称,也就是<action>节点中的name属性;
      • results(),表示action的多个result;这个属性是一个数组属性,因此可以定义多个Result
      • interceptorRefs(),表示action的多个拦截器。这个属性也是一个数组属性,因此可以定义多个拦截器; 
      • exceptionMappings(),这是异常属性,它是一个ExceptionMapping的数组属性,表示action的异常,在使用时必须引用相应的拦截器

        4,看一下action中最常用的results中单个result注解的配置吧:

    • @Result,这个注解对应了<result>节点。这个注解只能应用于action类上。这个注解中也有几个属性:
      • name(),表示action方法的返回值,也就是<result>节点的name属性,默认情况下是【success】;
      • location(),表示view层文件的位置,可以是相对路径,也可以是绝对路径;
      • type(),是action的类型,比如redirect,不指定情况下,框架默认的是dispatcher

        这些注解基本上就可以完成我们的功能了,通过这样注解开发,可以代替配置xml的编写。下边我们来看一个使用注解开发的action的实例:

    复制代码
    @Controller//控制层的Spring注解
    @Scope("prototype")//支持多例
    @ParentPackage("struts-default")  //表示继承的父包
    @Namespace(value="/user") //表示当前Action所在命名空间
    public class LoginAction extends ActionSupport{
        
        @Resource
        private User user; //使用域驱动模式接收表单参数
    
        @Action( //表示请求的Action及处理方法
                value="login",  //表示action的请求名称
                results={  //表示结果跳转
                        @Result(name="success",location="/success.jsp",type="redirect"),
                        @Result(name="login",location="/login.jsp",type="redirect"),
                        @Result(name="error",location="/error.jsp",type="redirect")
                },
                interceptorRefs={ //表示拦截器引用
                        @InterceptorRef("defaultStack"),
                        @InterceptorRef("timer")
                },
                exceptionMappings={  //映射映射声明
                        @ExceptionMapping(exception="java.lang.Exception",result="error")
                }
        )
        public String login() throws Exception {
    
            int i = 1/0 ;
            
            if ("admin".equals(user.getUsercode()) && "admin".equals(user.getUserpswd())) {
                
                Map session = ActionContext.getContext().getSession();
                session.put("session_user", user);
                
                return "success";
            } else {
                return "login";
            }
    
        }
    }
    复制代码

     综上,为Struts2框架中注解的开发。三大框架都利用注解开发,和配置文件开发,效率会大大提升的。各种框架,jar包等新的版本现在都是支持注解开发的,不断的学习,不断的优化,不断提高效率,注解开发利弊并存着,我们要懂的扬长避短,让每个框架,每种思想的优点都来为我们开发即可。

  • 相关阅读:
    ZOJ 2588 Burning Bridges
    POJ 1966 ZOJ 2182 Cable TV Network
    HDU 5348 MZL's endless loop
    HDU 5352 MZL's City
    Tarjan算法求解无向连通图的割点、割边、点双连通分量和边双连通分量的模板
    ZOJ 1119 SPF
    HDU 3452 Bonsai
    HDU 1520 Anniversary party
    POJ 2239 Selecting Courses
    POJ 1144 Network
  • 原文地址:https://www.cnblogs.com/koal/p/4800778.html
Copyright © 2011-2022 走看看