Hibernate和spring框架的开发前边总结了,这次看一下流行的MVC流程框架Struts2的注解开发吧。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. Annotation(四)——Struts2注解开发

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

  2. Struts2知识点小结(四)--拦截器与注解开发

    一.Struts2的拦截器(interceptor) 作用:当请求进入struts2框架后(进入之前可以用filter进行拦截),想对请求进行拦截操作(功能增强.权限控制),需要拦截器组件 1.str ...

  3. Struts2框架之-注解开发

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

  4. struts2注解

    一.配置web.xml <filter> <filter-name>struts2</filter-name> <filter-class>org.ap ...

  5. SpringMVC第二篇【过滤编码器、注解开发、requestMapping、业务方法与传统参数】

    SpringMVC过滤编码器 在SpringMVC的控制器中,如果没有对编码进行任何的操作,那么获取到的中文数据是乱码! 即使我们在handle()方法中,使用request对象设置编码也不行!原因也 ...

  6. Spring _day02_IoC注解开发入门

    1.Spring IoC注解开发入门 1.1 注解开发案例: 创建项目所需要的jar,四个基本的包(beans core context expression ),以及两个日志记录的包,还要AOP的包 ...

  7. Spring笔记13--SSH--全注解开发

    SSH全注解开发: (1) 在Action类中添加注解,实现Struts2的注解开发(@NameSpace.@ParentPackage.@Action...) package com.tongji. ...

  8. Strusts2笔记9--防止表单重复提交和注解开发

    防止表单重复提交: 用户可能由于各种原因,对表单进行重复提交.Struts2中使用令牌机制防止表单自动提交.以下引用自北京动力节点:

  9. Struts2注解详解

    一,引入支持Struts2支持注解开发jar包: struts2-convention-plugin-2.1.8.1.jar(支持Struts2框架注解开发的jar包) 二,Struts2使用注解开发 ...

随机推荐

  1. git submodule的使用

    1.在项目中使用Submodule 为当前工程添加submodule,命令如下:git submodule add 仓库地址 路径仓库地址:是指子模块仓库地址URL.路径:指将子模块放置在当前工程下的 ...

  2. PHP学习9——MySQL数据库

    主要内容: MySQL的启动 MySQL数据库操作 数据库表设计 创建和查看表 修改表结构 MySQL语句操作 数据库备份与恢复 PHP操作MySQL数据库 面向对象的数据库操作 MySQL数据库是目 ...

  3. Why Isn't curr_items Decreasing When Items Expire?

    Why Isn't curr_items Decreasing When Items Expire?

  4. 暗示net core

    using (var scope = ServiceProvider.CreateScope()){ var aSubscriber = Activator.CreateInstance(aSubsc ...

  5. 在线课程笔记—.NET基础

    关于学习北京理工大学金旭亮老师在线课程的笔记. 介绍: 在线课程网址:http://mooc.study.163.com/university/BIT#/c 老师个人网站:http://jinxuli ...

  6. golang学习之生成代码文档

    go doc 工具会从 Go 程序和包文件中提取顶级声明的首行注释以及每个对象的相关注释,并生成相关文档. 一般用法: go doc package 获取包的文档注释,例如:go doc fmt 会显 ...

  7. .net core 填坑记之—格式转换问题

    最近在将项目从.net 迁移到.net core环境中,迁移完成后,发布于Windows平台上进行测试,所有功能均能正常运行. 为了项目能够在正式环境也能正常运行,提前进行Linux环境部署(Cent ...

  8. 给tomcat7w.exe改名字

    在平常使用tomcat的过程中,经常会在自己的电脑上安装两个tomcat,而且使用tomcat的tomcat7w.exe界面比较方便,即 但是两个tomcat的名字一样,也只能启动一个tomcat. ...

  9. html和css入门 (三)

    文本样式 color 文本颜色 属性名 color 属性值 预定义的颜色名 | 十六进制值的颜色值 | RGB颜色值 默认值 依赖用户代理 描述 设置文本的颜色 direction 文本方向( 属性名 ...

  10. css伪元素详解

    css的伪元素,之所以被称为伪元素,是因为他们不是真正的页面元素,html没有对应的元素,但是其所有用法和表现行为与真正的页面元素一样,可以对其使用诸如页面元素一样的css样式,表面上看上去貌似是页面 ...