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的实例:
<span style="font-size:18px;">@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";
} }
}
</span>综上,为Struts2框架中注解的开发。三大框架都利用注解开发,和配置文件开发,效率会大大提升的。各种框架,jar包等新的版本现在都是支持注解开发的,不断的学习,不断的优化,不断提高效率,注解开发利弊并存着,我们要懂的扬长避短,让每个框架,每种思想的优点都来为我们开发即可。
Struts2注解详解的更多相关文章
- Struts2注解详解(转)
一,引入支持Struts2支持注解开发jar包: struts2-convention-plugin-2.1.8.1.jar(支持Struts2框架注解开发的jar包) 二,Struts2使用注解开发 ...
- 引用 struts2标签详解 - wo的的日志 - 网易博客
引用 元元 的 struts2标签详解 引用 COLD 的 struts2标签详解 要在jsp中使用Struts2的标志,先要指明标志的引入.通过jsp的代码的顶部加入以下的代码: <%@t ...
- @RequestBody, @ResponseBody 注解详解(转)
原文地址: https://www.cnblogs.com/qq78292959/p/3760651.html @RequestBody, @ResponseBody 注解详解(转) 引言: 接上一篇 ...
- @ModelAttribute注解详解
@ModelAttribute注解详解 1.@ModelAttribute定义: 被该注解定义的方法,会在该方法所在的controller的任何目标方法执行之前执行 2.@ModelAttribute ...
- SpringMVC 常用注解 详解
SpringMVC 常用注解 详解 SpringMVC 常用注解 1.@RequestMapping 路径映射 2.@Requ ...
- Struts2常量详解
-----------------siwuxie095 Struts2 常量详解 Struts2 的常量大多在默认的配置文件中已经配置好,但根据 用户需求和开发要求的不同,可能需要修改这些常量值,修改 ...
- 【转】@RequestParam @RequestBody @PathVariable 等参数绑定注解详解
@RequestParam @RequestBody @PathVariable 等参数绑定注解详解 2014-06-02 11:24 23683人阅读 评论(2) 收藏 举报 目录(?)[+] 引言 ...
- Java基础13:反射与注解详解
Java基础13:反射与注解详解 什么是反射? 反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性. Orac ...
- @PathVariable @RequestParam @RequestBody等参数绑定注解详解
一.分类 handler method 参数绑定常用的注解,我们根据他们处理的Request的内容不同分为四类: 处理request uri 部分的注解: @PathVariable;(这里指ur ...
随机推荐
- Android-广播发送与接收(Java代码中订阅)
Android四大组件之一广播,使用的也比较多,广播可大致分为两种,一种是Android系统区域的广播,是由系统指令发出,例如:点亮屏幕广播,开机过程中的一些广播 省略…, 然而还有一种广播就是我们自 ...
- auc的本质
AUC的本质 定义 auc是roc曲线下的面积.其中,roc是横坐标为fpr,纵坐标是tpr的坐标系上的曲线. TPR(true positive rate):所有正样本中被预测为正的比例 FPR(f ...
- .net core 使用redis 基于 StackExchange.Redis
一.添加引用包 StackExchange.Redis Microsoft.Extensions.Configuration 二.修改配置文件 appsettings.json { " ...
- .net core 高性能对象映射
关于对象转换已经有不少轮子(AutoMapper,TinyMapper) .出于项目需要,手动造一个简单轮子.先贴代码 1.采用静态泛型类缓存,避免了拆箱装箱操作. 2.对于转换对象中有,字段名一样但 ...
- javascript AJAX简单原理及什么是ajax
AJAX简单原理供初学者理解 AJAX的原理: Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面.这其 ...
- vc6.0 Buile菜单下 Profile的作用
Profile的作用 帮助你分析并发现程序运行的瓶颈,找到耗时所在,同时也能帮助你发现不会被执行的代码.从而最终实现程序的优化. Profile的组成 Profile包括3个命令行工具:PREP,PR ...
- [agc007f] Shik and Copying String 模拟神题
Description "全"在十分愉快打工,第0天,给了他一个仅有小写字母构成的长度为N的字符串S0,在之后的第i天里,"全"的工作是将Si−1复制一份到 ...
- iOS 键盘的监听 调整view的位置
iOS在处理键盘的出现和消失时需要监听UIKeyboardWillChangeFrameNotifications/UIKeyboardDidHideNotifications - (void)vie ...
- MyEclipse迁移过程中Tomcat版本不一致的解决办法
MyEclipse迁移过程中Tomcat版本不一致的解决办法 下面就是在MyEclipse2013迁移被Tomcat6.0X绑定的项目迁移到MyEclipse2014 Tomcat8.0X,报如下pr ...
- Python的__getattribute__二三事
本来以为自己对__getattribute__已经比较了解了,结果用到的时候,才发现有一些知识点之前一直没有真正弄明白,记录如下(针对python3,python2差异较大): object类有__g ...