,,java中的Struts2拦截器详解

,,java中的Struts2拦截器详解

本文主要介绍java中Struts2拦截器的简单理解。边肖认为这很好。现在分享给大家,给大家一个参考。来和边肖一起看看吧。

最近在学习struts拦截器,现在总结一下。

1、拦截器是什么?

拦截器相当于过滤器:就是去掉不想要的,留下想要的。拦截器抽象出的一部分代码可以用来完善原来的动作。同时可以减少代码冗余,提高复用率。通俗地说,就是一张网,把不想要的沙子过滤掉,留下水。

2、拦截器的作用:

拦截器可以构成特定的函数。如授权认证、登录和登录判断。

3、拦截器的原理:

每个动作请求都在拦截器里,每个动作都可以把操作传递给下面的拦截器,或者直接退出接口。

4、定义拦截器:

(1)自定义一个接口实现拦截器(但我初学者一般直接在框架中实现拦截器)

(2)在struts.xml中注册已定义的拦截器

(3)可以参考所需动作中的拦截器。

拦截器接口声明了三个方法。

公共接口侦听器扩展Serializable {

void destroy();

void init();

字符串截获(ActionInvocation调用)引发异常;

}

在动作之前调用Init方法,就是开始对烂机进行初始化操作。

Destory方法在拦截器被垃圾回收之前被调用,以恢复由init方法初始化的资源。

拦截器方法是拦截器的主要操作。如果需要调用后续的动作或者拦截器,只需要调用这个方法中的invocation.invoke()方法。在这个方法调用前后,可以插入拦截器在动作调用前后需要做的方法。

现在用下面的代码拦截用户登录:

公共字符串截获(ActionInvocation调用)引发异常{

System.out.println('执行操作前');

action context action context=invocation . getinvocationcontext();

MapString,Object session=action context . getsession();

object currentUser=session . get(' currentUser ');

字符串结果=null

if(currentUser!=null){

result=invocation . invoke();

}否则{

http servlet request request=(http servlet request)invocation . getinvocationcontext()。get(ServletActionContext。HTTP _ REQUEST);

Request.setAttribute('error ','请先登录');

结果=“错误”;

}

System.out.println('result '结果);

System.out.println('动作执行后');

返回结果;

}

注册拦截器:

截击机

拦截器名称='myInterceptor '

class=' com . Fang Chao . interceptor . my interceptor '/interceptor

拦截器名称='loginInterceptor '

class=' com . Fang Chao . interceptor . log in interceptor '/interceptor

拦截器堆栈名称='myStack '

interceptor-ref name=' log in interceptor '/interceptor-ref

interceptor-ref name=' default stack '/interceptor-ref

/拦截器堆栈

/拦截器

上面代码中的拦截器堆栈是一个拦截器堆栈。至此,方便引用如下。一般来说,每个动作都会用到defaultStack。

拦截器参数:

配置参数:

ExcludeMethods:过滤掉不使用拦截器的方法。

IncludeMethods:使用拦截器的方法。

有两种配置:

拦截器-ref name='validation '

param name=' exclude methods ' myvalidationexcutedemethod/param

/interceptor-ref

拦截器-引用名称='工作流'

param name=' exclude methods ' myworkflowexclude method/param

/interceptor-ref

或者

interceptor-ref name=' default stack '

param name=' validation . exclude methods ' myvalidationexclude method/param

param name=' workflow . exclude methods ' myworkflow exclude method/param

/interceptor-ref

这就是本文的全部内容。希望对大家的学习有帮助,支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: