方法过滤拦截器是只过滤指定的方法,如果使用针对action 的普通的过滤器则会过滤该action内部 所有方法。如果在一个action中同时有多个作为业务逻辑控制的方法存在 的话则会过滤所有的业务逻辑控制方法。当然在一个action中出现超过一个业务逻辑控制方法是不推荐的,也是不符合编码规范的但是这样的形式是可以存在的。为了避免这样的bug采用方法过滤器是最佳选择。

配置文件为:

<action name="login" class="com.inspur.action.LoginAction">
   <result name="success">/success.jsp</result>
   <result name="input">/login.jsp</result>
   <interceptor-ref name="defaultStack"></interceptor-ref>
   <interceptor-ref name="methodInterceptor">
    <param name="name">second</param>
    <param name="excludeMethods">execute</param>
    <param name="includeMethods">execute</param>
   </interceptor-ref>
  </action>

方法过滤器类代码如下:

package com.inspur.interceptor;

import java.util.Date;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;

public class MethodInter extends MethodFilterInterceptor {
 private String name;

public String getName() {
  return name;
 }

public void setName(String name) {
  this.name = name;
 }

@Override
 protected String doIntercept(ActionInvocation invocation) throws Exception {
  System.out.println(name+"start time"+new Date());
  long start=System.currentTimeMillis();
  String result=invocation.invoke();
  System.out.println(name+"end time"+new Date());
  long end=System.currentTimeMillis();
  System.out.println("total time"+(end-start));
  return result;
 }

}

重写抽象类MethodFilterInterceptor的回调方法dointercept()方法实现方法拦截。与普通的拦截器的区别是普通拦截器重写的是intercept()方法。

struts2中的方法过滤拦截器的更多相关文章

  1. struts2复习(五)拦截器总结

    1. 拦截器(Interceptor): 拦截器是Struts2的核心,Struts2的众多功能都是通过拦截器来实现的. 2. 拦截器的配置 1)编写实现Interceptor 接口的类.  2)在s ...

  2. Struts2拦截指定方法的拦截器

    作者:禅楼望月 默认情况下,我们为一个Action配置一个拦截器,该拦截器会拦截该Action中的所有方法,但是有时候我们只想拦截指定的方法.为此,需要使用struts2拦截器的方法过滤特性. 要使用 ...

  3. struts2 javaweb 过滤器、监听器 拦截器 原理

    转: 过滤器.监听器 拦截器 过滤器 创建一个 Filter 只需两个步骤: (1)创建 Filter 处理类: (2)在 web.xml 文件中配置 Filter . 创建 Filter 必须实现 ...

  4. Struts2学习笔记(十)——自定义拦截器

    Struts2拦截器是基于AOP思想实现的,而AOP的实现是基于动态代理.Struts2拦截器会在访问某个Action之前或者之后进行拦截,并且Struts2拦截器是可插拔的:Struts2拦截器栈就 ...

  5. J2EE中的过滤器和拦截器

    过滤器和拦截器的相似之处就是拦截请求,做一些预处理或者后处理. 而过滤器和拦截器的区别在于过滤器是相对HTTP请求而言的,而拦截器是相对Action中的方法的. 过滤器:访问web服务器的时候,对一个 ...

  6. Struts2学习:interceptor(拦截器)的使用

    对于需要登陆验证.权限验证等功能的网站,每一次请求,每一个action都写一段验证的代码,未免显得冗余且不易维护.struts2提供了拦截器interceptor,为这些页面提供一个切面,或者说公共组 ...

  7. Spring MVC 方法注解拦截器

    应用场景,在方法级别对本次调用进行鉴权,如api接口中有个用户唯一标示accessToken,对于有accessToken的每次请求可以在方法加一个拦截器,获得本次请求的用户,存放到request或者 ...

  8. vue中怎样实现 路由拦截器

    vue中怎样实现 路由拦截器(当用户没有登录的时候,跳转到登录页面,已经登录的时候,不能跳转到登录页,除非后台token失效) 在 我们需要实现这样 一个功能,登录拦截 其实就是 路由拦截,首先在定义 ...

  9. Struts2中动态方法的调用

    Struts2中动态方法调用就是为了解决一个action对应多个请求的处理,以免action太多. 主要有一下三种方法:指定method属性.感叹号方式和通配符方式.推荐使用第三种方式. 1.指定me ...

随机推荐

  1. C#常用的内置委托

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  2. SQLServer服务器数据库之间的数据操作(完整版)

    分类: 数据库开发技术 ---------------------------------------------------------------------------------- -- Au ...

  3. 加密html

    2009年4月4日 周六 22:18 <HTML> <HEAD> <meta http-equiv="Content-Type" content=&q ...

  4. HDU 2510 - 符号三角形

    DFS后打表 #include <iostream> using namespace std; ,,,,,,,,,,,,,,,,,,,,,,,,}; int main() { int n; ...

  5. CSS+DIV实现文字一行内显示,并且过多的文字以点来代替

    有些时候我们在使用CSS+DIV进行排版实现大量的文字的时候,为了页面的美观,这里需要将文字在div中一行显示,并且将过多的文字进行隐藏,以点号进行代替.当鼠标放上面的时候会以title的形式显示所有 ...

  6. Java三大特征之继承(二)

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  7. Java之利用Socket获取网站内容

    public void main(String[] args){ String host = "123.126.113.42"; int port = 80; Socket s = ...

  8. 第一局 ThreeJS-开始

    本文介绍ThreeJS使用的大体流程.(由于水平有限,请大家多多指教.) 1.ThreeJS下载和引入: (1)下载地址:https://github.com/mrdoob/three.js/arch ...

  9. ZRender源码分析2:Storage(Model层)

    回顾 上一篇请移步:zrender源码分析1:总体结构 本篇进行ZRender的MVC结构中的M进行分析 总体理解 上篇说到,Storage负责MVC层中的Model,也就是模型,对于zrender来 ...

  10. Android Studio .grade文件知识

    1.位置 2.问题:当AndroidStudio版本不同的时候,导致.gradle文件版本不同(当前为2.10),因为AndroidStudio升级的时候会自动升级.gradle.这样通过svn加载到 ...