Struts框架学习之拦截器
2015-06-08 17:03
483 查看
为什么用拦截器?
Struts是基于mvc模式的开发框架。任何框架,都会预先实现一部分功能。struts框架自带功能的实现,是通过一个个拦截器完成的。
Struts早起版本中,核心功能是通过一个类完成的,这个类叫做核心过滤器。
Struts2.0之后的版本,每一个拦截功能,都由一个单独的类实现,形成一个独立的拦截器,用户可以自由组合这些拦截器来完成自己想要的功能。
有了拦截器,我们的开发就类似于组装电脑配件。带来的好处:解耦。
拦截器简介:
Struts2预定义了一些拦截器,实现了某些功能,如文件上传等,默认的拦截器在struts-default.xml文件中配置。
如果使用struts2的相应功能,可以一个个引用拦截器! 也可以定义拦截器栈,包含多个拦截器!开发中就直接使用拦截器栈即可!
struts2定义了默认执行的拦截器栈!
拦截器可以对action请求进行拦截, 从而执行一些预处理操作,预处理操作完成后,控制权进入到action!
action处理请求完成,又回到拦截器!
注意:
如果struts自带的拦截器完成不了需要,用户也可以自定义拦截器!
如果用户自定义了拦截器,并使用,struts2默认的拦截器就不会调用!
自定义拦截器的时候,要引用默认的拦截器!(defaultStack)
<interceptors>
// 拦截器定义
<interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>
拦截器栈(Interceptor Stack): 将拦截器按一定的顺序联结成一条链. 在访问被拦截的方法时, Struts2拦截器链中的拦截器就会按其之前定义的顺序被依次调用。
// 拦截器栈定义 (包含多个拦截器)
<interceptor-stack name="defaultStack">
<interceptor-ref name="exception"/>
<interceptor-ref name="alias"/>
<interceptor-ref name="servletConfig"/>
<interceptor-ref name="i18n"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="chain"/>
<interceptor-ref name="scopedModelDriven"/>
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="multiselect"/>
<interceptor-ref name="staticParams"/>
<interceptor-ref name="actionMappingParams"/>
<interceptor-ref name="params">
</interceptor>
// 执行拦截器
<default-interceptor-ref name="defaultStack"/>
</interceptors>
拦截器与过滤器区别
共同点:都可以对请求进行拦截! 处理一些公用的操作!
区别:
1.作用范围
拦截器是struts2的概念!(只在struts中用)
过滤器是servlet中技术!(在servlet/struts中都可以使用!)
2. 拦截区域
拦截器,拦截的是action中方法的执行!
过滤器,可以拦截任何请求!
Struts2自定义拦截器实现
1、定义一个类实现Interceptor接口
2、实现生命周期方法
3、声明和引用自定义拦截器
Interceptor接口
com.opensymphony.xwork2.interceptor.Interceptor
所有的自定义拦截器都需要实现该接口,且以单例运行。
init: 创建后初始化时被调用, 它在拦截器的生命周期内只被调用一次。
interecept: 每拦截一个动作请求, 该方法就会被调用一次。
destroy: 拦截器被销毁之前被调用, 它在拦截器的生命周期内也只被调用一次.
![](http://img.blog.csdn.net/20150608170451856?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmluZ194aWFuX2hvbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20150608170451856?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmluZ194aWFuX2hvbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
Struts2自带的拦截器
![](http://img.blog.csdn.net/20150608170518360)
Struts是基于mvc模式的开发框架。任何框架,都会预先实现一部分功能。struts框架自带功能的实现,是通过一个个拦截器完成的。
Struts早起版本中,核心功能是通过一个类完成的,这个类叫做核心过滤器。
Struts2.0之后的版本,每一个拦截功能,都由一个单独的类实现,形成一个独立的拦截器,用户可以自由组合这些拦截器来完成自己想要的功能。
有了拦截器,我们的开发就类似于组装电脑配件。带来的好处:解耦。
拦截器简介:
Struts2预定义了一些拦截器,实现了某些功能,如文件上传等,默认的拦截器在struts-default.xml文件中配置。
如果使用struts2的相应功能,可以一个个引用拦截器! 也可以定义拦截器栈,包含多个拦截器!开发中就直接使用拦截器栈即可!
struts2定义了默认执行的拦截器栈!
拦截器可以对action请求进行拦截, 从而执行一些预处理操作,预处理操作完成后,控制权进入到action!
action处理请求完成,又回到拦截器!
注意:
如果struts自带的拦截器完成不了需要,用户也可以自定义拦截器!
如果用户自定义了拦截器,并使用,struts2默认的拦截器就不会调用!
自定义拦截器的时候,要引用默认的拦截器!(defaultStack)
<interceptors>
// 拦截器定义
<interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>
拦截器栈(Interceptor Stack): 将拦截器按一定的顺序联结成一条链. 在访问被拦截的方法时, Struts2拦截器链中的拦截器就会按其之前定义的顺序被依次调用。
// 拦截器栈定义 (包含多个拦截器)
<interceptor-stack name="defaultStack">
<interceptor-ref name="exception"/>
<interceptor-ref name="alias"/>
<interceptor-ref name="servletConfig"/>
<interceptor-ref name="i18n"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="chain"/>
<interceptor-ref name="scopedModelDriven"/>
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="multiselect"/>
<interceptor-ref name="staticParams"/>
<interceptor-ref name="actionMappingParams"/>
<interceptor-ref name="params">
</interceptor>
// 执行拦截器
<default-interceptor-ref name="defaultStack"/>
</interceptors>
拦截器与过滤器区别
共同点:都可以对请求进行拦截! 处理一些公用的操作!
区别:
1.作用范围
拦截器是struts2的概念!(只在struts中用)
过滤器是servlet中技术!(在servlet/struts中都可以使用!)
2. 拦截区域
拦截器,拦截的是action中方法的执行!
过滤器,可以拦截任何请求!
Struts2自定义拦截器实现
1、定义一个类实现Interceptor接口
2、实现生命周期方法
3、声明和引用自定义拦截器
Interceptor接口
com.opensymphony.xwork2.interceptor.Interceptor
所有的自定义拦截器都需要实现该接口,且以单例运行。
init: 创建后初始化时被调用, 它在拦截器的生命周期内只被调用一次。
interecept: 每拦截一个动作请求, 该方法就会被调用一次。
destroy: 拦截器被销毁之前被调用, 它在拦截器的生命周期内也只被调用一次.
Struts2自带的拦截器
相关文章推荐
- spring整合struts2
- Java访问WebService返回XML数据的方法
- 解决eclipse/Myeclipse中出现Resource is out of sync with the file system问题
- Vijava 学习笔记之(VirtualMachine 获取网卡配置信息)
- spring 第一篇(1-1):让java开发变得更简单(上)
- [工作]Eclipse开发,JFace and SWT
- Java 验证 身份证号码是否规范
- eclipse 快捷键
- 阿里云Ubuntu部署java web(1) - 系统配置
- Eclipse安装颜色主题,个性化你的IDE,让你的IDE焕然一新
- Java加密技术(三)对称加密算法PBE
- 从Java的jar文件中读取数据的方法
- Java加密技术(四)非对称加密算法RSA
- Java加密技术(二)对称加密算法DES&AES
- Hibernate+Spring配置
- Spring实战 (第3版)——依赖注入
- Java加密技术(一)单向加密算法MD5&SHA&MAC与BASE64
- Spring MVC过滤器-登录过滤
- Java访问远程服务
- Java中泛型的各种使用