Annotation(四)——Struts2注解开发
Hibernate和Spring框架的开发前边总结了,这次看一下流行的MVC流程框架Struts2的注解开发吧。Struts2主要解决了从JSP到Action上的流程管理,如何进行Uri和action类中每个方法的绑定这是重点,在这里先简单看一下配置文件中的简单配置:

<!-- 这是包名和命名空间的声明 -->
<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使用注解开发需要遵循一些规范:
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的实例:

@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包等新的版本现在都是支持注解开发的,不断的学习,不断的优化,不断提高效率,注解开发利弊并存着,我们要懂的扬长避短,让每个框架,每种思想的优点都来为我们开发即可。
Annotation(四)——Struts2注解开发的更多相关文章
- Struts2注解开发
Hibernate和spring框架的开发前边总结了,这次看一下流行的MVC流程框架Struts2的注解开发吧.Struts2主要解决了从JSP到Action上的流程管理,如何进行Uri和action ...
- Struts2知识点小结(四)--拦截器与注解开发
一.Struts2的拦截器(interceptor) 作用:当请求进入struts2框架后(进入之前可以用filter进行拦截),想对请求进行拦截操作(功能增强.权限控制),需要拦截器组件 1.str ...
- Java开发学习(十三)----基于注解开发定义第三方bean及注解开发总结
在前面的博客中定义bean的时候都是在自己开发的类上面写个注解就完成了,但如果是第三方的类,这些类都是在jar包中,我们没有办法在类上面添加注解,这个时候该怎么办? 遇到上述问题,我们就需要有一种更加 ...
- Struts2+Spring3+MyBatis3整合以及Spring注解开发
分类: Web(2) 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在做一个SpringMVC+spring+MyBatis的项目,突然想起以前自己要搭建一个Struts2+Sprin ...
- Spring(四):使用注解开发
本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出一遍就懂!b站搜索狂神说或点击下面链接 https://space.bilibili.com/95256449?spm_id_from=33 ...
- Struts2框架之-注解开发
Struts2主要解决了从JSP到Action上的流程管理,如何进行Uri和action类中每个方法的绑定这是重点,在这里先简单看一下配置文件中的简单配置: <span style=" ...
- Annotation(一)——注解开发介绍
<p>在编程中,一直强调的一点就是注释的编写,注释的规范等等.尤其是越是核心,程序越复杂,逻辑越多的清空下,注释的编写对我们以后的阅读代码,维护软件起着至关重要的作用.一款软件有着好的注释 ...
- Annotation(三)——Spring注解开发
Spring框架的核心功能IoC(Inversion of Control),也就是通过Spring容器进行对象的管理,以及对象之间组合关系的映射.通常情况下我们会在xml配置文件中进行action, ...
- 十四 Spring的AOP的基于AspectJ的注解开发
Spring的AOP的基于AspectJ的注解开发 创建项目,引入jar包 编写目标类.切面类 配置目标类.切面类 在注解文件里开启AOP的开发 <?xml version="1.0& ...
随机推荐
- 判断IE版本的HTML语句详解<!--[if IE]> <![endif]--> - AnswerCard
一个页面里面只能有一句这样的判断 我们常常会在网页的HTML里面看到形如[if lte IE 9]……[endif]的代码,表示的是限定某些浏览器版本才能执行的语句,那么这些判断语句的规则是什么呢?请 ...
- 高性能WEB开发(11) - flush让页面分块,逐步呈现
高性能WEB开发(11) - flush让页面分块,逐步呈现 在处理比較耗时的请求的时候,我们总希望先让用户先看到部分内容,让用户知道系统正在进行处理,而不是无响应.一般大家在处理这样的情况,都使用a ...
- 让你的java开发变得如此 Smart
http://my.oschina.net/huangyong/blog/196408
- Hadoop-2.2.0中文文档—— Common - CLI MiniCluster
目的 使用 CLI MiniCluster, 用户能够简单地仅仅用一个命令就启动或关闭一个单一节点的Hadoop集群,不须要设置不论什么环境变量或管理配置文件. CLI MiniCluster 同一时 ...
- SPOJ 416 - Divisibility by 15(贪心)
糟烂的代码啊... 这个题目思路很简单——末位只可能为0和5,所有数字的和肯定被3整除 没有0和5的肯定不行 否则,把所有数字求和 如果被3整除,则从大到小输出 如果除3余1,则按以下顺序——删1: ...
- source insight3.5中文乱码解决方案
source insight3.5中文乱码,网上看别人说改变宽字体.宋体等方法都不起效.根本原因是,source insight 3.5 不支持Unicode编码,所以导致中文的乱码,将文件转为gb2 ...
- 转自http://blog.slogra.com/post-13.html,关闭centos虚拟机的蜂鸣声
相信对经常在虚拟机做实验的人来说,每次按tab来补全命令的时候是最痛苦的,这个时候是最让人想把 电脑的蜂鸣器给拆下来,让我们来关闭这个烦人的东西吧. 在centos系统下的方法 1.临时解决办法:以 ...
- smarty练习: 设置试题及打印试卷
数据库表格:shiti, shititimu, timu, kemu, xuanxiang 根据科目设置一个可以添加试题的页面:(如下图) 具体的题目从数据库中查出并形成一张试卷的形式 考试试题设置: ...
- Ping命令详解
引言:我们每天都在使用Ping命令,但是我们可能不太清楚Ping的工作原理,对运行结果中的很多细节也不是很清楚.查找了一下资料,现在和大家分享一下Ping的运行原理和相关细节. A.Ping命令的工作 ...
- CentOS 5设置服务器hostname、DNS和IP
CentOS 5如何设置服务器主机名.DNS?设置主机名hostname编辑/etc/hostname文件写入:116.23.14.25 centostest.com其中116.23.14.25 表示 ...