Struts2中拦截器的使用与配置
一,拦截器是什么?
拦截器是在Action执行之前和之后执行的代码,是一个类似于过滤器的类;
二,拦截器的作用
拦截器拦截Action的请求,在Action之前或之后实现某项功能;
三,拦截器的特点
拦截器自由组合,有很高的灵活性,扩展性,有利于系统解耦;
四,拦截器的应用场合
1,struts2的大部分功能都是拦截器完成的,如:接收用户输入,数据验证,实现上传,国际化
2,对action进行时间统计,权限控制等其它特定功能;
3,对action添加功能,使用拦截器,action不需更改
五,如何创建,配置拦截器
1.一般拦截器
2.方法拦截器
1.创建类继承AbstractInterceptor类,重写intercept方法
1: import com.opensymphony.xwork2.ActionInvocation;
2: import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
3:
4: public class TimerInterceptor extends AbstractInterceptor {5:
6: @Override
7: public String intercept(ActionInvocation invocation) throws Exception {8:
9: return invocation.invoke();
10: }
11: }
-
配置拦截器:
-
------------1.定义过滤器:在package标签下添加<interceptors></interceptors>;在其下添加<interceptor>标签,指定name,class属性;
1: <package name="xx" extends="struts-default" namespace="/">2: <interceptors>3: <interceptor name="timer" class="com.interceptor.TimerInterceptor" />4: </interceptors>5: </package>
-----------2.指定引用的拦截器,拦截器栈:在action下添加<interceptor-ref name=”名”>,指定name属性
1: <action name="helloworld" class="com.action.HelloAction">2: .....3: <interceptor-ref name="拦截器名/拦截器栈名" />4: </action>
------------3.定义拦截器器栈:
在<interceptors></interceptors>标签下添加<interceptor-stack>标签,在其下添加指定应用的拦截器
1: <interceptor-stack name="myStack">2: <interceptor-ref name="defaultStack"/>3: <interceptor-ref name="author"/>4: <interceptor-ref name="timer"/>5: </interceptor-stack>
2.方法拦截器
继承MethodFilterInterceptor类,重写doIntercep()方法
1: import com.opensymphony.xwork2.ActionInvocation;2: import com.opensymphony.xwork2.interceptor.AbstractInterceptor;3:4: public class AuthorInterceptor extends AbstractInterceptor {5: @Override6: public String intercept(ActionInvocation invocation) throws Exception {7: ....8: return invocation.invoke();9: }10: }
配置方法拦截器:
<interceptors><interceptor name=”” class=”” /></interceptors>
指定引用的拦截器,指定拦截的方法:
<!--指定需要拦截的方法—>
<interceptor-ref name=”includeMethods”>method1,method2…</interceptor-ref>
<!—指定不拦截的方法—>
<interceptor-ref name=”excludeMethods”>method3,..</interceptor-ref>
例:1.使用拦截器控制用户访问权限;
2.Struts2实现文件上传,使用拦截器限制文件大小,文件类型
===========================================================
OVER
Struts2中拦截器的使用与配置的更多相关文章
- 简单理解Struts2中拦截器与过滤器的区别及执行顺序
简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...
- 2018.11.29 Struts2中拦截器的学习&项目的实际运用
struts2官方架构 拦截器的创建 第一种方式 第二种方式 看源码AbstractInterceptor 底层已经帮我们写过这些方法了 第三种方式(推荐) 拦截器API学习 放行 前后处理 不放行, ...
- struts2中拦截器与过滤器之间的区别
首先是一张经典的struts2原理图 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标准的过滤器链 c) ...
- 转: Struts2中拦截器与过滤器的区别及执行顺序
当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标准的过滤器链 c) FilterDispatecher会 ...
- struts2中拦截器与过滤器的区别
1.拦截器是基于java反射机制的,而过滤器是基于函数回调的. 2.过滤器依赖与servlet容器,而拦截器不依赖与servlet容器. 3.拦截器只能对Action请求起作用,而过滤器则可以对几乎 ...
- 说说struts2中拦截器的请求流程一(模拟大致流程)
本文可作为北京尚学堂struts2课程的学习笔记. 首先 什么是拦截器?拦截器能干什么? 拦截器,顾名思义就是拦截对象然后做操作的东西,至于是拦截谁?那自然是拦截action了.能做什么操作呢?你想让 ...
- springmvc中拦截器的定义和配置
package com.hope.interceptor;import org.springframework.lang.Nullable;import org.springframework.web ...
- Struts2 中拦截器和Action的调用关系(写的很好)
http://blog.csdn.net/hackerain/article/details/6991082
- 通俗易懂之SpringMVC&Struts2前端拦截器详解
直接进入主题吧!一,配置Struts2的拦截器分两步走1配置对应的拦截器类:2在配置文件Struts.xml中进行配置拦截器同时在Strust2中配置拦截器类有三种方法1实现Interceptor接口 ...
随机推荐
- 阿里云正式上线移动直播问答解决方案,助力APP尽情“撒币”!
2018年伊始,互联网圈就刮起了一阵"大佬狂撒币,网友喜答题"的热潮.以映客芝士超人等为代表的直播问答平台,通过答题分奖金的互动模式,迅速引爆网络热点.随后,多个直播和视频平台也上 ...
- bzoj:2423: [HAOI2010]最长公共子序列
Description 字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X=“x0,x1,…,xm-1”,序列Y=“y0, ...
- 微信小程序多列选择器之range-key
<picker mode="multiSelector" bindchange="bindMultiPickerChange2" bindcolumnch ...
- python网络编程(进程与多线程)
multiprocessing模块 由于GIL的存在,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程. multiproce ...
- Linux 离线安装Rubygems详解
很多时候我们会发现,真实的生成环境很多都没有外网,只有内网环境,这个时候我们又需要安装RubyGems,则不能提供yum命令进行在线安装了,这个时候我们就需要下载安装包进行离线安装.本文主要简单介绍如 ...
- 我的第一个python web开发框架(21)——小结
这个小网站终于成功上线,小白除了收获一笔不多的费用外,还得到女神小美的赞赏,心中满满的成就感.这一天下班后,他请老菜一起下馆子,兑现请吃饭的承诺,顺便让老菜点评一下. 小白:老大,在你的指导下终于完成 ...
- 【搬运】Tea算法Java实现工具类
最近在做数据加密,目标是实现平台app的数据安全性,所以准备使用AES+Base64进行加密,适逢一个特长的json串AES加密不了,于是在谷歌了各种算法,判断是否合用,参见 各种加密算法比较 一文中 ...
- 一个简洁的PHP可逆加密函数(分享)
http://www.jb51.net/article/38018.htm 本篇文章是对一个简洁的PHP可逆加密函数进行了详细的分析介绍,需要的朋友参考下 很多时候我们需要对数据进行加密解密,比如 ...
- 手把手教你搭建 vue 环境
第一步 node环境安装 1.1 如果本机没有安装node运行环境,请下载node 安装包进行安装1.2 如果本机已经安装node的运行换,请更新至最新的node 版本下载地址:https://nod ...
- iOS的相对路径和绝对路径
iOS程序有固定的文件访问限制,只能在自己的沙盒内. UIImage *img=[UIImage imageNamed:@"cellicon.png"]; 这段代码从相对路径加载了 ...