博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Java从入门到放弃》入门篇:Struts2的拦截器基本语法
阅读量:4972 次
发布时间:2019-06-12

本文共 2709 字,大约阅读时间需要 9 分钟。

拦截器,顾名思义,是拦截不是打劫!!!(图片来自于网络,如果有版权或道德问题,请通知本博主删除,谢谢)

是贼个样子滴wKioL1l__fKiIMqHAAKhGk9OcQ8075.png,而不是这样滴。

 

闲扯完了,回到正题,struts2中的拦截器到底是什么东东呢?我们来百度一下···

呃,错了,我们来回顾一下,我们这种熟练工当然不需要百度来查了!!!

记住,是回顾,回顾,回顾!!!

咳~,请打开我的第二篇博客,看到那张struts2的原理图了没,在Action上下有很多的

interceptor,这个就是拦截器,struts2默认配置了很多拦截器,具体的内容,大家可以打开struts2-core-2.2.1.jar中的struts-default.xml文件,看看里面的配置信息。

像前面我们的Action中定义的属性如何得到页面传递的数据,就是拦截器的作用。

还有上一篇写的数据校验方法validate为什么能够自动调用,也是拦截器的作用。

 

一不小心,又聊了五毛钱的废话,好吧,进入正题!!!

接下来我们就聊聊如果自定义拦截器。至于是劫财,还是劫色,那就看各位看官的意思了···

(再次声明,图片来源于网络,有问题请联系博主)

 

struts2中的自定义拦截器有两种,一种劫财,一种劫色!!!

啊呸,是一种拦截类(类中的所有方法都拦截),一种拦截方法!!!

  1. AbstractInterceptor(类拦截器)

  2. MethodFilterInterceptor(方法拦截器)

 

具体用法如下:

一、AbstractInterceptor(类拦截器)

    1.1)自定义类MyInterceptor继承AbstractInterceptor,并实现对应方法

1
2
3
4
5
6
7
8
9
10
public 
class 
MyInterceptor 
extends 
AbstractInterceptor {
    
@Override
    
public 
String intercept(ActionInvocation invocation) 
throws 
Exception {
        
String result;
    
System.out.println(
"Action执行之前进行拦截!"
);
    
result = invocation.invoke();
//表示我黑风岭劫完了,你可以去下一站了
    
System.out.println(
"截完了,继续吧..."
);
    
return 
result;
    
}
}

    1.2)修改struts.xml,添加拦截器,并使用该拦截器拦截对应的Action

1
2
3
4
5
6
7
8
9
10
11
12
<
package 
name
=
"default" 
namespace
=
"/" 
extends
=
"struts-default"
>
    
<
interceptors
>
        
<
interceptor 
name
=
"myInterceptor" 
class
=
"com.pxy.interceptor.MyInterceptor"
></
interceptor
>
    
</
interceptors
>
    
<!-- 通配符方式调用 -->
    
<
action 
name
=
"smng_*" 
class
=
"com.pxy.action.Hello" 
method
=
"{1}"
>
        
<
result 
name
=
"{1}"
>/WEB-INF/jsp/singer_{1}.jsp</
result
>
    
<
result 
name
=
"input"
>/WEB-INF/jsp/singer_{1}.jsp</
result
>
    
<!-- 绑定拦截器 -->
    
<
interceptor-ref 
name
=
"myInterceptor"
></
interceptor-ref
>
    
</
action
>
</
package
>

    1.3)访问http://localhost:8888/strutsDemo/smng_xxx.action查看结果。(这儿的xxx替换成CURD方法)

wKioL1mAC8zReSUqAAAPaTrHcNI616.png-wh_50

二、MethodFilterInterceptor(方法拦截器)

    现在我们只拦截deletet和select方法。实现步骤如下:

    2.1)修改自定义类MyInterceptor,让其继承MethodFilterInterceptor类,并实现对应方法

1
2
3
4
5
6
7
8
9
10
public 
class 
MyInterceptor 
extends 
MethodFilterInterceptor {
    
@Override
    
protected 
String doIntercept(ActionInvocation invocation) 
throws 
Exception {
    
String result;
    
System.out.println(
"Action执行之前进行拦截!"
);
    
result = invocation.invoke();
    
System.out.println(
"截完了,继续吧..."
);
    
return 
result;
    
}
}

    2.2)修改struts.xml文件,并配置拦截器要拦截的方法

1
2
3
4
5
6
7
8
<!-- 通配符方式调用 -->
    
<
action 
name
=
"smng_*" 
class
=
"com.pxy.action.Hello" 
method
=
"{1}"
>
    
<
result 
name
=
"{1}"
>/WEB-INF/jsp/singer_{1}.jsp</
result
>
    
<
result 
name
=
"input"
>/WEB-INF/jsp/singer_{1}.jsp</
result
>
    
<
interceptor-ref 
name
=
"myInterceptor"
>
        
<
param 
name
=
"includeMehtods"
>delete,select</
param
>
    
</
interceptor-ref
>
    
</
action
>

    2.3)访问http://localhost:8888/strutsDemo/smng_xxx.action查看结果。

    从上图可以看到,update方法并没有被拦截器拦截。

 

好了,关于如果拦截收过路费的问题,我们就研究到这儿

至于各位客官想截什么,接下来可以自己玩玩了···

 

转载于:https://www.cnblogs.com/yixueyuan/p/7268956.html

你可能感兴趣的文章
Hat’s Words
查看>>
Java中instanceof关键字的用法总结
查看>>
引用类型-Function类型
查看>>
洗牌Shuffle'm Up POJ-3087 模拟
查看>>
设计模式之享元模式
查看>>
Nginx Configuration 免费HTTPS加密证书
查看>>
(转)Android 仿订单出票效果 (附DEMO)
查看>>
数据库多张表导出到excel
查看>>
态度决定品质
查看>>
微信小程序去除button默认样式
查看>>
11/26
查看>>
Where does Visual Studio look for C++ Header files?
查看>>
Java打包可执行jar包 包含外部文件
查看>>
Docker容器运行ASP.NET Core
查看>>
WPF图片浏览器(显示大图、小图等)
查看>>
.Net码农学Android---系统架构和基本概念
查看>>
Windows Phone开发(37):动画之ColorAnimation
查看>>
DevExpress的Web控件汉化方法
查看>>
js中escape,encodeURI,encodeURIComponent 区别(转)
查看>>
结对编程项目-四则运算整体总结
查看>>