`
neil-jh
  • 浏览: 147809 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论
阅读更多

Struts2XWork)提供的拦截器的功能说明:

 

拦截器

名字

说明

Alias Interceptor

alias

在不同请求之间将请求参数在不同名字件转换,请求内容不变

Chaining Interceptor

chain

让前一个Action的属性可以被后一个Action访问,现在和chain类型的result<result type=”chain”>)结合使用。

Checkbox Interceptor

checkbox

添加了checkbox自动处理代码,将没有选中的checkbox的内容设定为false,而html默认情况下不提交没有选中的checkbox

Cookies Interceptor

cookies

使用配置的name,value来是指cookies

Conversion Error Interceptor

conversionError

将错误从ActionContext中添加到Action的属性字段中。

Create Session Interceptor

createSession

自动的创建HttpSession,用来为需要使用到HttpSession的拦截器服务。

Debugging Interceptor

debugging

提供不同的调试用的页面来展现内部的数据状况。

Execute and Wait Interceptor

execAndWait

在后台执行Action,同时将用户带到一个中间的等待页面。

Exception Interceptor

exception

将异常定位到一个画面

File Upload Interceptor

fileUpload

提供文件上传功能

I18n Interceptor

i18n

记录用户选择的locale

Logger Interceptor

logger

输出Action的名字

Message Store Interceptor

store

存储或者访问实现ValidationAware接口的Action类出现的消息,错误,字段错误等。

Model Driven Interceptor

model-driven

如果一个类实现了ModelDriven,将getModel得到的结果放在Value Stack中。

Scoped Model Driven

scoped-model-driven

如果一个Action实现了ScopedModelDriven,则这个拦截器会从相应的Scope中取出model调用ActionsetModel方法将其放入Action内部。

Parameters Interceptor

params

将请求中的参数设置到Action中去。

Prepare Interceptor

prepare

如果Acton实现了Preparable,则该拦截器调用Action类的prepare方法。

Scope Interceptor

scope

Action状态存入sessionapplication的简单方法。

Servlet Config Interceptor

servletConfig

提供访问HttpServletRequestHttpServletResponse的方法,以Map的方式访问。

Static Parameters Interceptor

staticParams

struts.xml文件中将<action>中的<param>中的内容设置到对应的Action中。

Roles Interceptor

roles

确定用户是否具有JAAS指定的Role,否则不予执行。

Timer Interceptor

timer

输出Action执行的时间

Token Interceptor

token

通过Token来避免双击

Token Session Interceptor

tokenSession

Token Interceptor一样,不过双击的时候把请求的数据存储在Session

Validation Interceptor

validation

使用action-validation.xml文件中定义的内容校验提交的数据。

Workflow Interceptor

workflow

调用Actionvalidate方法,一旦有错误返回,重新定位到INPUT画面

Parameter Filter Interceptor

N/A

从参数列表中删除不必要的参数

Profiling Interceptor

profiling

通过参数激活profile

 

另外AbstractInterceptor提供了一个简单的Interceptor的实现,这个实现为:

public abstract class AbstractInterceptor implements Interceptor {

 

     public void init() {

    }

   

    public void destroy() {

    }

 

 

    public abstract String intercept(ActionInvocation invocation) throws Exception;

}

在不需要编写initdestroy方法的时候,只需要从AbstractInterceptor继承而来,实现intercept方法即可。

 

我们尝试编写一个Session过滤用的拦截器,该拦截器查看用户Session中是否存在特定的属性(LOGIN属性)如果不存在,中止后续操作定位到LOGIN,否则执行原定操作,代码为:

public class CheckLoginInterceptor extends AbstractInterceptor {

    public static final String LOGIN_KEY = "LOGIN";

    public static final String LOGIN_PAGE = "global.login";

 

    public String intercept(ActionInvocation actionInvocation) throws Exception {

 

        System.out.println("begin check login interceptor!");

        // LoginAction不做该项拦截

        Object action = actionInvocation.getAction();

        if (action instanceof LoginAction) {

            System.out.println("exit check login, because this is login action.");

            return actionInvocation.invoke();

        }

 

        // 确认Session中是否存在LOGIN

        Map session = actionInvocation.getInvocationContext().getSession();

        String login = (String) session.get(LOGIN_KEY);

        if (login != null && login.length() > 0) {

            // 存在的情况下进行后续操作。

            System.out.println("already login!");

            return actionInvocation.invoke();

        } else {

            // 否则终止后续操作,返回LOGIN

            System.out.println("no login, forward login page!");

            return LOGIN_PAGE;

        }

    }

}

 

注册拦截器

<interceptors>

            <interceptor

name="login" 

class="com.jpleasure.teamware.util.CheckLoginInterceptor"/>

            <interceptor-stack name="teamwareStack">

                <interceptor-ref name="login"/>

                <interceptor-ref name="defaultStack"/>

            </interceptor-stack>

</interceptors>

 

将上述拦截器设定为默认拦截器:

<default-interceptor-ref name="teamwareStack"/>

这样在后续同一个package内部的所有Action执行之前都会被login拦截。

分享到:
评论

相关推荐

    struts2常用拦截器

    struts2常用拦截器,struts2经常用到的拦截器,熟悉熟悉

    struts2.X 拦截器源码

    `defaultStack`是Struts2提供的默认拦截器栈,包含了如`exception`、`params`、`i18n`等常用拦截器。 了解了拦截器的基本原理后,我们可以通过`Struts2.x 拦截器.avi`这个视频文件深入学习Struts2拦截器的实现细节...

    struts2拦截器_动力节点Java学院整理

    - **局部配置**:在Action配置中,可以通过`&lt;interceptor-ref&gt;`标签引入拦截器,例如引用Struts2的`defaultStack`,这是一个预定义的拦截器堆栈,包含许多常用拦截器。如果需要自定义拦截器,可以使用`...

    理解拦截器用于在某个方法或字段被访

    以下是一些常用的Struts 2拦截器: - **Alias Interceptor**:允许在不同请求之间转换请求参数的名称。 - **Chaining Interceptor**:使得前一个Action的属性可以被后一个Action访问。 - **Checkbox Interceptor...

    struts2拦截器的使用方法

    Struts2提供了许多内置的拦截器,比如`defaultStack`拦截器堆栈,包含了多个常用的拦截器,如模型驱动(ModelDriven)、参数拦截器(Parameters)、验证器(Validation)等。使用内置拦截器可以大大简化开发过程。 ...

    在Ejb中加入拦截器

    - `@AroundInvoke`:在EJB方法调用前后都可执行,是最常用的拦截器方法,可以捕获并控制方法的执行流程。 **4. 拦截器的顺序** EJB拦截器的执行顺序由它们的声明顺序决定,如果有多个拦截器,会按照声明的顺序依次...

    登录拦截器(通用版)

    6. **Spring Security框架**:在Java Web开发中,Spring Security是一个常用的实现登录拦截器的框架。它提供了一套全面的安全解决方案,包括认证、授权、CSRF防护、会话管理等功能。 7. **URL路由与访问控制**:...

    拦截器和控制器的区别

    拦截器和过滤器的区别 1、拦截器基于动态代理 , 过滤器基于函数回调 2、拦截器不依赖于servlet容器,通过动态代理实现,过滤器依赖于servlet容器 3、拦截器在方法前后,异常前后等调用,而过滤器只能在请求前和请求...

    struts2内置拦截器简介

    常用内置拦截器详解 ##### 2.1 Exception 此拦截器用于捕获Action执行过程中发生的异常,并将异常信息转发到指定的结果页面。当某个Action抛出异常时,如果配置了此拦截器,则会跳转到配置的错误页面,通常用于显示...

    Java SpringBoot实现的过滤器(和拦截器)控制登录页面跳转

    本项目主要关注的是如何使用过滤器(Filter)和拦截器(Interceptor)来实现登录页面的控制与跳转。以下是对这些知识点的详细说明: 1. **SpringBoot**: SpringBoot是Spring框架的一个子项目,旨在简化Spring应用...

    Mybatis分页拦截器

    1. 配置拦截器:在Mybatis的配置文件中,需要添加拦截器的配置,指定使用的拦截器类,并可能需要设置相关的属性,如分页插件的参数等。 2. 分页参数:在Mapper接口或XML文件中,不需要显式地写分页SQL,只需传递...

    java拦截器

    - **代码复用**:通过将常用的功能(如日志记录、权限检查等)封装在拦截器中,可以显著提高代码的复用性。 - **易于维护**:将横切关注点(Cross-cutting Concerns)从业务逻辑中分离出来,使得业务逻辑更加清晰,...

    Struts1 拦截器(SAIF)的使用

    Struts1 框架是Java Web开发中的一个经典MVC框架,它的核心组件之一就是拦截器(Interceptor)。拦截器在Struts1中扮演着重要角色,它允许开发者在动作执行前后插入自定义的逻辑,比如日志记录、权限验证、事务管理...

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

    在实际应用中,你还需要在Struts2的配置文件(通常是`struts.xml`)中注册这个自定义拦截器,并将其应用到相应的Action上,以确保在执行Action之前先经过拦截器的检查。 总结来说,防止重复提交的自定义拦截器主要...

    spring配置JSON拦截器VIEW

    在Web开发中,拦截器是一种常用的机制,用于在请求被实际处理之前或之后执行特定的操作,如日志记录、权限验证等。JSON(JavaScript Object Notation)则是一种轻量级的数据交换格式,广泛应用于前后端交互。 在...

    Struts2的拦截器的小例子程序

    1. **内置拦截器**:Struts2提供了多种内置拦截器,例如`modelDriven`、`servletConfig`、`chain`、`debugging`等,这些拦截器已经实现了常用的功能,可以直接在配置文件中引用使用。 2. **自定义拦截器**:对于...

    基于java的企业级应用开发:拦截器.ppt

    【基于Java的企业级应用开发:拦截器】 在Java企业级应用开发中,Spring MVC框架提供了一种名为拦截器(Interceptor)的功能,它与Servlet中的过滤器(Filter)类似,但有其独特的用法和功能。拦截器主要用于在用户...

    分页拦截器文件上传下载springmvc

    这里我们探讨的主题是“分页拦截器文件上传下载springmvc”,这涉及到几个关键知识点:分页、拦截器、Spring MVC以及文件操作。 首先,让我们了解**分页**。在Web应用中,通常会遇到数据量庞大的情况,一次性加载...

Global site tag (gtag.js) - Google Analytics