一,拦截器是什么?

拦截器是在Action执行之前和之后执行的代码,是一个类似于过滤器的类;

二,拦截器的作用

拦截器拦截Action的请求,在Action之前或之后实现某项功能;

三,拦截器的特点

拦截器自由组合,有很高的灵活性,扩展性,有利于系统解耦;

四,拦截器的应用场合

1,struts2的大部分功能都是拦截器完成的,如:接收用户输入,数据验证,实现上传,国际化

2,对action进行时间统计,权限控制等其它特定功能;

3,对action添加功能,使用拦截器,action不需更改

五,如何创建,配置拦截器

1.一般拦截器

2.方法拦截器

    1.    1.创建类继承AbstractInterceptor类,重写intercept方法

    2.   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.           

          配置拦截器:

------------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:   @Override
  6:   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中拦截器的使用与配置的更多相关文章

  1. 简单理解Struts2中拦截器与过滤器的区别及执行顺序

    简单理解Struts2中拦截器与过滤器的区别及执行顺序 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标 ...

  2. 2018.11.29 Struts2中拦截器的学习&项目的实际运用

    struts2官方架构 拦截器的创建 第一种方式 第二种方式 看源码AbstractInterceptor 底层已经帮我们写过这些方法了 第三种方式(推荐) 拦截器API学习 放行 前后处理 不放行, ...

  3. struts2中拦截器与过滤器之间的区别

    首先是一张经典的struts2原理图 当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标准的过滤器链 c) ...

  4. 转: Struts2中拦截器与过滤器的区别及执行顺序

    当接收到一个httprequest , a) 当外部的httpservletrequest到来时 b) 初始到了servlet容器 传递给一个标准的过滤器链 c) FilterDispatecher会 ...

  5. struts2中拦截器与过滤器的区别

    1.拦截器是基于java反射机制的,而过滤器是基于函数回调的. 2.过滤器依赖与servlet容器,而拦截器不依赖与servlet容器.  3.拦截器只能对Action请求起作用,而过滤器则可以对几乎 ...

  6. 说说struts2中拦截器的请求流程一(模拟大致流程)

    本文可作为北京尚学堂struts2课程的学习笔记. 首先 什么是拦截器?拦截器能干什么? 拦截器,顾名思义就是拦截对象然后做操作的东西,至于是拦截谁?那自然是拦截action了.能做什么操作呢?你想让 ...

  7. springmvc中拦截器的定义和配置

    package com.hope.interceptor;import org.springframework.lang.Nullable;import org.springframework.web ...

  8. Struts2 中拦截器和Action的调用关系(写的很好)

    http://blog.csdn.net/hackerain/article/details/6991082

  9. 通俗易懂之SpringMVC&Struts2前端拦截器详解

    直接进入主题吧!一,配置Struts2的拦截器分两步走1配置对应的拦截器类:2在配置文件Struts.xml中进行配置拦截器同时在Strust2中配置拦截器类有三种方法1实现Interceptor接口 ...

随机推荐

  1. Mark下js最大精确整数范围,业务中出现的疑难bug

    今天在跟后端联调中,偶然发现几个数据的id居然一样,我就询问了下后端这是什么情况,然而后端告诉我说并没有相同的id,于是开始一起排查问题.   排查中发现,从后端拿来的数据在浏览器控制台NetWork ...

  2. JavaScript基础知识(JSON、Function对象、原型、引用类型)

    19.JSON 概念:JavaScript 对象表示法(JavaScript Object Notation),是一种轻量级的数据交换格式  特点:易于程序员编写和查看:易于计算机解析和生成 数据结构 ...

  3. deeplearning.ai 人工智能行业大师访谈 Yoshua Bengio 听课笔记

    1. 如何走上人工智能的研究的?Bengio说他小时候读了很多科幻小说,1985年(64年出生,21岁)研究生阶段开始阅读神经网络方面的论文,对这个领域产生了热情. 2. 如何看深度学习这些年的发展? ...

  4. (亲测)1分钟破解IDM权限,傻瓜都能学会的破解方法(番外篇:利用破解工具直接破解IDM)

    Internet Download Manager (IDM)是比较好用的一款下载工具~ 上一节我讲到一种利用修改防火墙来进行阻止访问服务器,请参看这篇文章(亲测)躺着破解IDM下载权限,治疗不用破解 ...

  5. 江西理工大学南昌校区cool code竞赛

    这次比赛原本就是来打酱油的,想做个签到题就走!一开始不知道1002是签到题,一直死磕1001,WA了四发过了,回头一看Rank,三十名,我靠!看了1001的AC率,在我AC之前只有一个人AC了,当时我 ...

  6. MySQL数据库全备

    #function:MYSQL自动全备 #version:1.0.0 #author:wangyanlin #date:2017/08/03 #---------------------------- ...

  7. SSH私用私钥登陆

    1.导入私钥,将私钥文件放到当前登陆用户目录下的.ssh目录下 2.指定私钥登陆,ssh -i .ssh/ssh_rsa  root@target.com 如果出现了下面这种情况 这是因为私钥文件权限 ...

  8. flume1.8 Sources类型介绍(二)

    1 Flume Sources 1.1 Avro Source 监听Avro端口,从Avro client streams接收events.要求属性是粗体字. agent a1例子: ipFilter ...

  9. 在Linux上如何查看Python3自带的帮助文档?

    俩个步骤: 在Linux终端下输入: ortonwu@ubuntu:~$ pydoc -p 8000 pydoc server ready at http://localhost:8000/ 打开浏览 ...

  10. 拿到List<Map<String,String>>对用属性的值。。。。。。。

    list.get(i).get("orderNumber") 来拿到下面的对应属性的值