java struts2拦截器_java中的Struts2拦截器详解

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

1、拦截器是什么?

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

2、拦截器的作用:

拦截器可以构成特定的功能。比如权限认证、日志记录和登陆判断。

3、拦截器的原理:

52afb92df408c50ca5f885b372808f90.png

其每一个Action请求都在拦截器中,每一个action可以将操作转交给下面的拦截器,也可以直接退出到界面上。

4、定义拦截器:

(1)自定义一个实现Interceptor接口(不过我初学者一般直接实现框架中的Interceptor)

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

(3)可以需要的action中引用拦截器

Interceptor接口声明了三个方法

public interface Interceptor extends Serializable {

void destroy();

void init();

String intercept(ActionInvocation invocation) throws Exception;

}

Init方法是在action作用之前调用,就是开始给烂机器的初始化操作。

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

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

现在对用户登录进行拦截,代码如下:

public String intercept(ActionInvocation invocation) throws Exception {

System.out.println("在action执行之前");

ActionContext actionContext=invocation.getInvocationContext();

Map session=actionContext.getSession();

Object currentUser=session.get("currentUser");

String result=null;

if(currentUser!=null){

result=invocation.invoke();

}else{

HttpServletRequest request=(HttpServletRequest)invocation.getInvocationContext().get(ServletActionContext.HTTP_REQUEST);

request.setAttribute("error", "请先登录");

result="error";

}

System.out.println("result+"+result);

System.out.println("在action执行之后");

return result;

}

注册拦截器:

class="com.fangchao.interceptor.MyInterceptor">

class="com.fangchao.interceptor.LoginInterceptor">

上述代码中的interceptor-stack是个拦截器栈。到目前为止,就是在下面引用时,比较方便。一般来讲,每个action都会使用defaultStack。

拦截器参数:

配置参数:

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

includeMethods:使用拦截器的方法。

有两种配置方式:

myValidationExcudeMethod

myWorkflowExcludeMethod

或者

myValidationExcludeMethod

myWorkflowExcludeMethod

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值