`

Struts2 中自定义拦截器

阅读更多
在Struts 2中的拦截器,要实现com.opensymphony.xwork2.interceptor.Interceptor接口,在struts.xml中配置。可以用拦截器来完成调用Action业务逻辑之前的预处理或是之后的善后处理。还可以通过配置多个拦截器来满足action需求。

com.opensymphony.xwork2.interceptor.Interceptor接口, 一般不直接使用它.
com.opensymphony.xwork2.interceptor.AbstractInterceptor 抽象类(空实现了Interceptor接口)
自己写拦截器可继承这个抽象类, 重写intercept()方法.实现对某个Action的拦截
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor 抽象类(继承AbstractInterceptor)
自己写拦截器 可继承这个抽象类, 重写doIntercept()方法.  实现对Action的的某个方法的拦截.
excludeMethods(不拦截的方法),includeMethods(要拦截的方法), 多个方法名用豆号隔开

简单例子 --- 自定义拦截器

public class MyInterceptor2 extends AbstractInterceptor {

private String userName; //生成其get/set方法

@Override
public String intercept(ActionInvocation invocation) throws Exception {
   System.out.println("intercept2");
   String result = invocation.invoke();
   return result;
}
}

//权限验证拦截器

public class AuthInterceptor extends AbstractInterceptor {

@Override
@SuppressWarnings("unchecked")
public String intercept(ActionInvocation invocation) throws Exception {
   // TODO Auto-generated method stub
   Map map = invocation.getInvocationContext().getSession();

   if (map.get("user") == null) {
    return Action.LOGIN;
   } else {
    return invocation.invoke();
   }
}
}

在struts.xml中配置自定义拦截器 --- 代码如下

<interceptors>
    <interceptor name="myInterceptor" class="com.stu.interceptor.MyInterceptor"></interceptor>
    <interceptor name="myInterceptor2" class="com.stu.interceptor.MyInterceptor2">
        <param name="userName">Smiles</param> <!--给拦截器中参数附默认值,可以在引用时修改-->
    </interceptor>
    <interceptor name="myInterceptor3" class="com.stu.interceptor.MyInterceptor3"></interceptor>

    <!-- 配置权限拦截器 -->
    <interceptor name="auth" class="com.stu.interceptor.AuthInterceptor"></interceptor>
    <!-- 配置一个拦截器栈 -->
    <interceptor-stack name="myStack">
     <!-- <interceptor-ref name="myInterceptor"></interceptor-ref>
     <interceptor-ref name="myInterceptor2"></interceptor-ref>
     -->
    <interceptor-ref name="defaultStack"></interceptor-ref>
    </interceptor-stack>
   </interceptors>

<global-results> <!-- 配置全局返回页面 -->
    <result name="login" type="redirect">/login.jsp</result> <!--type=”redirect“重定向到login页面-->
   </global-results>

<action name="register" class="com.stu.action.RegisterAction">
    <result name="success">/success.jsp</result>
    <result name="input">/register2.jsp</result>
    <!--<interceptor-ref name="myInterceptor3">
     <param name="includeMethods">execute</param>   配置要拦截的方法
     <param name="excludeMethods">execute</param> 配置不拦截的方法
    </interceptor-ref>-->
    <!-- <interceptor-ref name="auth"></interceptor-ref> 配置权限验证拦截器-->
    <interceptor-ref name="myStack"></interceptor-ref> <!--引入拦截器栈-->
   </action>

action中引用单个自定义拦截器时,要引入struts的默认拦截器<interceptor-ref name="defaultStack"></interceptor-ref>
分享到:
评论

相关推荐

    自定义拦截器struts2源代码

    本篇将深入讲解如何在Struts2中自定义拦截器,并通过提供的源代码进行分析。 拦截器是Struts2框架的核心组件之一,它允许我们在请求到达Action之前或离开Action之后执行一些额外的操作,如日志记录、权限验证、性能...

    struts2的自定义拦截器例子

    在这个"struts2的自定义拦截器例子"中,我们将深入探讨如何创建和使用自定义拦截器。 首先,拦截器的本质是Java的面向切面编程(AOP)思想在Struts2中的体现。它们允许开发者在动作执行前后插入自定义的逻辑,例如...

    Struts2_自定义拦截器_用户权限验证

    本项目“Struts2_自定义拦截器_用户权限验证”将深入探讨如何在Eclipse开发环境中,利用Struts2框架自定义拦截器进行用户权限的验证,并处理各个Action之间的跳转。 首先,我们来看自定义拦截器的创建。在Struts2中...

    JSP 开发之Struts2内建自定义拦截器.docx

    本文将深入探讨Struts2的内建自定义拦截器及其配置。 首先,让我们理解什么是拦截器。拦截器是基于AOP(面向切面编程)思想的,它们在Action调用前后执行,形成一个拦截器链。每个拦截器都可以执行特定的任务,并且...

    Struts2_自定义拦截器

    Struts2_3500_my_interceptor这个文件可能包含了一个示例项目的源代码,你可以通过学习和分析其中的代码,更深入地理解如何在Struts2中创建和使用自定义拦截器。通过实际操作,你会发现自定义拦截器是Struts2框架中...

    struts2 自定义拦截器.rar

    这篇博客文章可能是关于如何在Struts2中创建和使用自定义拦截器的教程。 在Struts2中,拦截器是基于责任链模式实现的,它们按照指定的顺序执行,对请求进行处理。拦截器可以用来进行权限检查、日志记录、事务管理等...

    struts2自定义拦截器配置心得

    Struts2自定义拦截器的配置是Struts2框架中一个非常重要的功能,它允许开发者在Action执行前后插入自定义的逻辑,以实现如权限验证、日志记录、性能监控等多种需求。以下是对标题和描述中涉及的知识点的详细说明: ...

    struts2的一个自定义拦截器小例子

    本示例将聚焦于如何在Struts2中实现一个自定义拦截器。 首先,我们需要了解拦截器在Struts2中的作用。拦截器是AOP(面向切面编程)的一个核心概念,它允许开发者在动作执行前后插入额外的逻辑,如日志记录、权限...

    struts2自定义拦截器

    在Struts2中,自定义拦截器是实现业务逻辑控制、数据验证、权限管理等功能的重要手段。下面将详细探讨如何在Struts2中实现自定义拦截器来完成权限拦截。 首先,我们需要了解Struts2拦截器的工作原理。拦截器是在...

    struts2的自定义拦截器代码

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

    Struts2自定义拦截器

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

    struts2的自定义拦截器代码例子

    总结起来,自定义拦截器是Struts2中的一种强大工具,它使得我们可以插入额外的业务逻辑或增强功能,而无需修改Action的代码。通过理解和熟练使用自定义拦截器,开发者可以更好地控制和优化应用的流程,提高代码的可...

    Struts2--自定义拦截器

    自定义拦截器是Struts2中的一个重要特性,允许我们扩展框架的功能,以实现诸如日志记录、权限检查、性能监控等通用任务。在本文中,我们将深入探讨如何创建和使用自定义拦截器。 首先,了解拦截器的基本概念。在...

    struts2自定义拦截器.pdf

    自定义拦截器是Struts2框架中扩展功能的重要手段,让我们深入探讨如何在Struts2中实现自定义拦截器。 首先,创建一个Web项目是基础步骤,这可以通过IDE如Eclipse或IntelliJ IDEA来完成。确保你的项目包含了Struts2...

    自定义拦截器的实现以及拦截器的详细配置

    本篇文章将深入探讨如何实现自定义拦截器及其在Struts2中的详细配置。 首先,我们来了解自定义拦截器的基本步骤: 1. **创建拦截器类**:自定义拦截器需要继承Struts2提供的`Interceptor`接口或实现`intercept()`...

    struts2 用拦截器 实现用户权限登录

    在添加自定义拦截器时,可以将其插入到默认拦截器栈中,也可以创建自定义的拦截器栈。 ### 五、测试与优化 完成上述步骤后,你可以通过访问受保护的URL来测试拦截器的效果。如果用户未登录,系统应重定向到登录页面...

    Struts2自定义拦截器实现防止重复提交

    总结来说,防止重复提交的自定义拦截器在Struts2中起到了关键作用,通过生成和验证令牌,能够在不依赖Struts2标签的情况下,有效地避免了用户意外或恶意的重复提交,保证了应用的稳定性和数据的一致性。

Global site tag (gtag.js) - Google Analytics