`
weinan
  • 浏览: 39479 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2自定义拦截器与过滤器

阅读更多
1、struts.xml
<struts>
    <!--重置属性 -->
    <constant name="struts.devMode" value="true" />

    <constant name="struts.i18n.encoding" value="utf-8" />
    <!-- 拦截器 -->
    <package name="intercept"  extends="struts-default">
        <interceptors>
            <interceptor name="permission" class="com.mysoft.base.interceptor.PermissionInterceptor" />
            <interceptor-stack name="permissionStack">
                <interceptor-ref name="defaultStack" /><!-- 默认拦截器栈 -->
                <interceptor-ref name="permission" />
            </interceptor-stack>
        </interceptors>
        <!-- 局部使用拦截器 -->
        <!-- <action name="login" class="com.mysoft.base.action.HelloWorldAction" method="login">
            <interceptor-ref name="permissionStack" />
        </action> -->
        <!-- 全局拦截器 -->
        <default-interceptor-ref name="permissionStack"/>
        <global-results>
            <result name="success">/WEB-INF/jsp/login.jsp</result>
        </global-results>
    </package>

</struts>

2、自定义拦截器
package com.mysoft.base.interceptor;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

@SuppressWarnings("serial")
public class PermissionInterceptor implements Interceptor {

    public void destroy() {
    }

    public void init() {
    }

    public String intercept(ActionInvocation invocation) throws Exception {
        Object user = ActionContext.getContext().getSession().get("user");
        if(user!=null) return invocation.invoke();
        ActionContext.getContext().put("message", "您还未登录");
        return "success";
    }

}

引用
拦截器和过滤器的区别:

1、拦截器是基于java的反射机制的,而过滤器是基于函数回调

2、过滤器依赖与servlet容器,而拦截器不依赖与servlet容器

3、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用

4、拦截器可以访问action上下文、值栈里的对象,而过滤器不能

5、在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次



拦截器 :是在面向切面编程的就是在你的service或者一个方法前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。
分享到:
评论

相关推荐

    Struts2自定义拦截器

    在深入探讨自定义拦截器之前,我们先理解一下Struts2拦截器的基本概念。 拦截器(Interceptor)是基于Java的动态代理机制实现的,它可以拦截用户的请求,对请求进行预处理,并且在Action执行后进行后处理。通过在...

    使用struts2拦截器对登陆权限验证

    在Struts2中,拦截器(Interceptor)扮演着至关重要的角色,它允许开发者在动作执行前后插入自定义逻辑,如日志记录、权限验证等。在本案例中,我们将深入探讨如何使用Struts2拦截器实现登录权限验证,同时结合...

    Struts2拦截器实现权限控制demo

    通过实现`Interceptor`接口或继承`AbstractInterceptor`类,我们可以创建自定义拦截器。在Struts2的核心配置文件`struts.xml`中,我们可以定义拦截器链,指定哪些拦截器应用于哪些Action。 权限控制是web应用中不可...

    struts2实例 自定义过滤器 文件上传下载 登录功能

    本实例展示了如何在Struts2环境中实现几个关键功能:自定义过滤器、文件上传下载以及用户登录功能。这些功能是任何Web应用程序的基础组成部分,理解和掌握它们对于提升Web开发技能至关重要。 首先,我们来探讨...

    Struts2 拦截器过滤方法(二十八)

    在"Struts2 拦截器过滤方法(二十八)"这个主题中,我们将深入探讨Struts2拦截器的工作原理、如何创建自定义拦截器以及它们在实际应用中的作用。 首先,拦截器是基于Java的动态代理机制实现的,它们在Action执行...

    struts2的自定义拦截器代码

    2. **配置拦截器**:在Struts2的配置文件(通常为struts.xml)中注册自定义拦截器,并指定其在拦截器栈中的位置。例如: ```xml &lt;struts&gt; &lt;package name="default" namespace="/" extends="struts-default"&gt; ...

    自定义struts(实现拦截器)

    自定义拦截器需要实现`com.opensymphony.xwork2.interceptor.Interceptor`接口,然后在配置文件中声明并配置拦截器。例如,你可能想要创建一个日志拦截器,记录每个Action执行前后的信息。 6. **拦截器栈**: - ...

    struts03:拦截器、过滤器与拦截器的区别、文件上传

    - 可以创建自定义拦截器,用于文件大小检查、文件类型的验证等,确保安全性和合规性。 - 使用Struts2内置的`Prepare interceptor`,在Action执行前完成文件上传的准备工作。 - 通过`Result interceptor`处理文件...

    struts2 拦截器

    3. **注册拦截器**:将自定义拦截器加入到`struts-default`或`struts-plugin`拦截器栈中,或者创建新的拦截器栈并应用到特定Action。 ### 四、Struts2内置拦截器 Struts2提供了一些内置的拦截器,如: 1. **...

    Struts 2 过滤器和拦截器的区别

    ### Struts 2 过滤器与拦截器的深入解析 #### 一、概述 在Struts 2框架中,过滤器(Filter)和拦截器(Interceptor)都是用于处理请求的关键组件,但它们之间存在本质的区别。正确理解这些差异有助于开发者更高效地...

    Struts2 拦截器

    在Struts2中,拦截器就像过滤器一样工作,通过链式调用在动作执行前后进行预处理和后处理。 首先,我们来理解一下拦截器的基本概念。拦截器是在Action调用之前和之后执行的一段代码,可以用来做日志记录、权限检查...

    Struts2编写的通用(拦截器,过滤器)Filter

    拦截器的实现通常包括创建一个自定义拦截器类,该类继承自`org.apache.struts2.interceptor.BaseInterceptor`或实现`Interceptor`接口,并在`intercept()`方法中编写业务逻辑。 **过滤器(Filter)** 过滤器是...

    struts2拦截器原理

    Struts2 拦截器是基于Java的Servlet Filter设计模式的一种实现,它提供了一种在Action执行前后插入额外逻辑的方式。...通过合理的拦截器配置和自定义拦截器实现,可以构建出高效且易于维护的企业级Web应用。

    浅谈Struts2拦截器的原理与实现.docx

    下面是一个简单的自定义拦截器示例: ```java package interceptor; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.Interceptor; public class ...

    12 struts2拦截器

    自定义拦截器需要在配置文件中声明并添加到拦截器栈中,与其他拦截器一起工作。 6. **拦截器栈**: 拦截器栈是由多个拦截器组成的一个链条,它们按顺序执行。同一个拦截器栈中的拦截器可以重复出现,每次出现的...

    Struts2 配置登陆拦截器

    在Struts2中,拦截器是实现业务逻辑控制和处理流程的重要组件,它们可以添加额外的功能,如日志记录、权限检查、事务管理等,而不干扰实际的业务操作。本篇文章将详细介绍如何配置Struts2的登录拦截器,以及其背后的...

    struts2 拦截器(AOP,面向切面编程)

    这个示例可能演示了如何创建一个新的拦截器,以及如何在Struts2配置中应用这个拦截器,从而帮助开发者了解并掌握自定义拦截器的开发和使用。 总结,Struts2的拦截器机制是其强大功能的关键之一,它利用AOP的概念...

    struts2拦截器时序图

    Struts2拦截器是Struts2框架中的一个重要组件,它提供了一种机制允许开发者在Action调用前后插入自定义的行为,甚至能够阻止Action的执行。这种机制在很多企业级Java项目中有着广泛的应用,例如进行数据转换、校验、...

    用struts2拦截器实现输入数据过滤前后空格

    拦截器是Struts2框架中的一个重要概念,它允许开发者在动作执行前后插入自定义逻辑,比如数据验证、日志记录、性能监控等。在这个场景中,我们将探讨如何使用Struts2拦截器来实现输入数据的过滤,特别是去除前后空格...

Global site tag (gtag.js) - Google Analytics