Struts2拦截器总结<转>
由于项目中在登录跳转到其他应用程序模块的时候有用到拦截器,因此查看了一下相关资料。
原文地址:http://blog.csdn.net/sendfeng/article/details/4248120
Struts2拦截器总结:
一、编写拦截器
1、 实现接口com.opensymphony.xwork2.Intercepter(或继承com.opensymphony.xwork2.AbstractInterceptor)
2、 在interceptor方法中加入如下代码:
public String intercept(ActionInvocation arg0) throws Exception {
System.out.println("Before"); //在Action之前调用
String result = arg0.invoke(); //如果此拦截器之后还有拦截器,则调用下个拦截器的intercept方法
//如果之后没有了拦截器,则调用Action的execute方法
System.out.println("After");
return result;
}
二、在Struts.xml中配置拦截器
1、 在struts.xml中声明拦截器和拦截器Stack,拦截器Stack可以包括多个拦截器和其他Stack。
<interceptors>
<!-- 拦截器 -->
<interceptor name="MyInterceptor" class="com.test.interceptor.MyInterceptor"></interceptor>
<!-- 拦截器Stack -->
<interceptor-stack name="validationWorkflowStack">
<interceptor-ref name="basicStack"/>
<interceptor-ref name="validation"/>
<interceptor-ref name="workflow"/>
</interceptor-stack>
</interceptors>
2、 将拦截器配置到单个Action中,只拦截此Action中的execute方法。
<action name="register" class="com.test.action.RegisterAction" method="test">
<result name="success">/success.jsp</result>
<result name="input">/register2.jsp</result>
<interceptor-ref name="MyInterceptor"></interceptor-ref>
</action>
3、 将拦截器配置到所有Action中,拦截所有Action中的execute方法。
<default-interceptor-ref name="MyInterceptor"></default-interceptor-ref>
对已经单独配置了拦截器的Action不起作用
三、拦截Action中指定的方法
1、 继承com.opensymphony.xwork2.interceptor.MethodFilterInterceptor。
2、 因为是针对某个Action的方法,所以只能配置在Action内部
<action name="register" class="com.test.action.RegisterAction" method="test">
<result name="success">/success.jsp</result>
<result name="input">/register2.jsp</result>
<interceptor-ref name="MyInterceptor">
<param name="includeMethod">test,execute</param><!-- 拦截text和execute方法,方法间用逗号分隔 -->
<param name="excludeMethod">myfun</param> <!-- 不拦截myfun方法 -->
</interceptor-ref>
</action>
四、struts2拦截器的interceptor方法中,参数ActionInvocation可用来获取页面用户输入的信息。
public String intercept(ActionInvocation arg0) throws Exception {
Map map = arg0.getInvocationContext().getSession();
if(map.get("user") == null) {
return Action.LOGIN;
} else {
return arg0.invoke();
}
}
Struts2拦截器总结<转>的更多相关文章
- Struts2 拦截器配置以及实现
@(Java ThirdParty)[Struts|Interceptor] Struts2 拦截器配置以及实现 Struts2的拦截器应用于Action,可以在执行Action的方法之前,之后或者两 ...
- struts2 拦截器
拦截器:对Action的访问.可以拦截到Action中某个方法.与过滤器不同,过滤器过滤的是请求.过滤JSP.html.但是拦截器不能拦截jsp.html的访问. Struts2 拦截器在访问某个 A ...
- Struts2拦截器的使用 (详解)
Struts2拦截器的使用 (详解) 如何使用struts2拦截器,或者自定义拦截器.特别注意,在使用拦截器的时候,在Action里面必须最后一定要引用struts2自带的拦截器缺省堆栈default ...
- struts2拦截器
一.自定义拦截器 struts2拦截器类似于servlet过滤器 首先定义一个拦截器这个拦截器实现了Interceptor接口: package cn.orlion.interceptor; impo ...
- Struts2拦截器模拟
前言: 接触Struts2已经有一段时间,Student核心内容就是通过拦截器对接Action,实现View层的控制跳转.本文根据自身理解对Struts2进行一个Java实例的模拟,方便大家理解! 示 ...
- Struts2拦截器初涉
Struts2拦截器初涉 正在练习struts,本例是从一个pdf上摘抄的例子,那本pdf都不知道叫什么名字,不过感觉很适合初学者. 在这里要实现一个简单的拦截器"GreetingInter ...
- 浅谈Struts2拦截器的原理与实现
拦截器与过滤器 拦截器是对调用的Action起作用,它提供了一种机制可以使开发者定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行.同时也是提供了 ...
- 基于SSH2框架Struts2拦截器的登录验证实现(转)
大象在这里假设你已经弄清楚了Struts2拦截器的基本概念,可以进入实际运用了.那么我们在之前的基础上只需要做下小小的改变,就可以使用Struts2的拦截器机制实现登录的验证. 修改数 ...
- struts2拦截器interceptor的三种配置方法
1.struts2拦截器interceptor的三种配置方法 方法1. 普通配置法 <struts> <package name="struts2" extend ...
- Struts2拦截器原理以及实例
一.Struts2拦截器定义 1. Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现. 2. ...
随机推荐
- 什么是SEO?SEO干嘛的?怎么做SEO?
黑帽seo分享了这么多SEO的东西,今天在群时面遇到群亲问到了什么是SEO?SEO是干嘛的?蜗牛认为,是时候让大家知道这些不为外人所知的真相了.且听蜗牛慢慢道来吧. 一.什么是SEO?SEO是干嘛的? ...
- [Oracle] Data Pump 详细使用教程(5)- 命令交互模式
[Oracle] Data Pump 详细使用教程(1)- 总览 [Oracle] Data Pump 详细使用教程(2)- 总览 [Oracle] Data Pump 详细使用教程(3)- 总览 [ ...
- 如何判断JDK是32位还是64位
第一种方法 在CMD窗口中使用java -version 命令进行查看 如果是64位的则会显示 Java HotSpot<TM>64-Bit 字样,32位的则没有类似信息. 注:这是Sun ...
- +load,+initialize原理
+load,+initialize原理 1.load 父类的load方法在子类load方法之前调用,分类的load方法在原来类load方法之后调用,依赖类的load方法会在自己之前调用,总之所有的类的 ...
- tcpdump 命令行抓包工具
为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3898248.html ...
- 第五篇:python高级之面向对象高级
python高级之面向对象高级 python高级之面向对象高级 本节内容 成员修饰符 特殊成员 类与对象 异常处理 反射/自省 单例模式 1.成员修饰符 python的类中只有私有成员和公有成员两 ...
- 11.2 afternoon
#include<iostream> #include<cstdio> #define ll long long using namespace std; ll n,ans; ...
- 转--Oracle DB 服务器系统时间修改问题与 SCN 关系的深入研究
论坛里一个朋友说将DB 服务器系统时间往往后修改了3个月(从11年改成10年),启动DB报600的错误. 一. 先做个测试 1.1 关闭DB SQL> shutdown immediate Da ...
- C#生成缩略图不清晰模糊问题的解决方案!
之前网上找了个生成缩略图的代码,改了改直接用了.问题来了,等比例缩略图时总是发现左边.上边的边线大概有一像素的白边,领导不乐意了,那咱就改吧.图片放大了才发现,那个好像是渐变的颜色,晕,这样的功能领导 ...
- ActionResult 常见问题
1:在Asp.net Mvc 2中由于对数据的保护,当返回类型为JsonResult时 ,默认情况下request需要为post.(可使用 return Json(person,JsonReque ...