Struts2主要解决了从JSP到Action上的流程管理,如何进行Uri和action类中每个方法的绑定这是重点,在这里先简单看一下配置文件中的简单配置:

  1. <span style="font-size:18px;">  <!-- 这是包名和命名空间的声明 -->
  2. <package name="orgPackage" namespace="/org" extends="struts-default">
  3. <!-- 这是action和方法的声明 -->
  4. <action name="index" class="orgAction" method="index">
  5. <result name="success" type="dispatcher">/jsp/org/index.jsp</result>
  6. </action>
  7. </package>
  8. </span>

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

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

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

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

1,Action要必须继承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的实例:

  1. <span style="font-size:18px;">@Controller//控制层的Spring注解
  2. @Scope("prototype")//支持多例
  3. @ParentPackage("struts-default")  //表示继承的父包
  4. @Namespace(value="/user") //表示当前Action所在命名空间
  5. public class LoginAction extends ActionSupport{
  6. @Resource
  7. private User user; //使用域驱动模式接收表单参数
  8. @Action( //表示请求的Action及处理方法
  9. value="login",  //表示action的请求名称
  10. results={  //表示结果跳转
  11. @Result(name="success",location="/success.jsp",type="redirect"),
  12. @Result(name="login",location="/login.jsp",type="redirect"),
  13. @Result(name="error",location="/error.jsp",type="redirect")
  14. },
  15. interceptorRefs={ //表示拦截器引用
  16. @InterceptorRef("defaultStack"),
  17. @InterceptorRef("timer")
  18. },
  19. exceptionMappings={  //映射映射声明
  20. @ExceptionMapping(exception="java.lang.Exception",result="error")
  21. }
  22. )
  23. public String login() throws Exception {
  24. int i = 1/0 ;
  25. if ("admin".equals(user.getUsercode()) && "admin".equals(user.getUserpswd())) {
  26. Map session = ActionContext.getContext().getSession();
  27. session.put("session_user", user);
  28. return "success";
  29. } else {
  30. return "login";
  31. }
  32. }
  33. }
  34. </span>

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

Struts2框架之-注解开发的更多相关文章

  1. 整合ssm三大框架使用注解开发查询用户信息

    整合ssm三大框架使用注解开发查询用户信息 一.基础知识准备之spring mvc工作原理 二.分析 第一步:发起请求到前端控制器(DispatcherServlet) 第二步:前端控制器请求Hand ...

  2. MyBatis框架之注解开发

    MyBatis注解开发 @Insert注解注解属性value:写入SQL语句 @Options注解实现添加新数据的主键封装注解属性useGeneratedKeys:使用生成的主键,配置为truekey ...

  3. 阶段3 1.Mybatis_04.自定义Mybatis框架基于注解开发_3 基于注解的自定义再分析

    这里只需要 一是连接数据库的 二是映射的 注解是class的方式  dom4j技术获取xml的数据,这是xml的方式获取的下面几个关键的点 注解的方式回去dao类里面的几个主要的信息 User黄色的部 ...

  4. 使用Tomcat数据源的方式访问数据库(MySql) --Struts2框架应用与开发

    1.为方便测试首先创建数据库和表,然后插入测试数据   2.打开Tomcat服务器安装目录的conf/下的context.xml,配置context.xml文件. 在<Context>标签 ...

  5. 阶段3 1.Mybatis_04.自定义Mybatis框架基于注解开发_2 回顾自定义mybatis的流程分析

  6. 阶段3 1.Mybatis_04.自定义Mybatis框架基于注解开发_1 今日课程内容介绍

  7. Annotation(四)——Struts2注解开发

    Hibernate和Spring框架的开发前边总结了,这次看一下流行的MVC流程框架Struts2的注解开发吧.Struts2主要解决了从JSP到Action上的流程管理,如何进行Uri和action ...

  8. Struts2注解开发

    Hibernate和spring框架的开发前边总结了,这次看一下流行的MVC流程框架Struts2的注解开发吧.Struts2主要解决了从JSP到Action上的流程管理,如何进行Uri和action ...

  9. Annotation(三)——Spring注解开发

    Spring框架的核心功能IoC(Inversion of Control),也就是通过Spring容器进行对象的管理,以及对象之间组合关系的映射.通常情况下我们会在xml配置文件中进行action, ...

随机推荐

  1. Visual studio智能感知挡住了当前代码输入行

    AssistX->Listboxes->Enable Visual Assist completion, suggestion and member list in .. 如果勾选了该项就 ...

  2. [2016.01.18]文本替换专家 v5.3

    文本替换专家,界面简洁易用,功能强大实用.支持大小写匹配,支持多级目录.多行文本.多种文件格式的同时批量查找和批量替换.智能准确的区分ANSI.UTF-8(包括无BOM的UTF-8).Unicode. ...

  3. correlation filters in object tracking

    http://www.cnblogs.com/hanhuili/p/4266990.html Correlation Filter in Visual Tracking系列一:Visual Objec ...

  4. SPOJ bsubstr

    题目大意:给你一个长度为n的字符串,求出所有不同长度的字符串出现的最大次数. n<=250000 如:abaaa 输出: 4 2 1 1 1 spoj上的时限卡的太严,必须使用O(N)的算法那才 ...

  5. 【java】之3种方式实现Object和Map之间的转换

    利用commons.BeanUtils实现Obj和Map之间转换,这种是最简单,也是最经常用的 public static Object mapToObject(Map<String, Obje ...

  6. MySQL服务 - MySQL变量类型及变量设置

    一.MySQL变量类型: MySQL通过变量来定义当前服务器的特性,保存状态信息等.我们可以通过手动更改变量的值来配置MySQL,也可以通过变量获得MySQL的当前状态信息.MySQL的变量类型可以从 ...

  7. Java借助Runtime调用外部程序阻塞的代码

    有时候在java代码中会调用一些外部程序,比如SwfTools来转换swf.ffmpeg来转换视频等.如果你的代码这样写:Runtime.getRuntime().exec(command),会发现程 ...

  8. Node.js的process.nextTick(callback)理解

    Node.js是单线程的,基于事件循环,非阻塞 IO的.事件循环中使用一个事件队列,在每个时间点上,系统只会处理一个事件,即使电脑有多个CPU核心,也无法同时并行的处理多个事件.因此,node.js适 ...

  9. jsgen 搭建

    1,mongodb 2,redis  http://www.cnblogs.com/lxx/archive/2013/06/04/3116985.html http://blog.csdn.net/w ...

  10. volley_缓存介绍

    离线缓存就是在网络畅通的情况下将从服务器收到的数据保存到本地,当网络断开之后直接读取本地文件中的数据.如Json 数据缓存到本地,在断网的状态下启动APP时读取本地缓存数据显示在界面上,常用的APP( ...