Struts框架学习之拦截器

为什么用拦截器?

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自带的拦截器

时间: 2024-11-14 20:48:14

Struts框架学习之拦截器的相关文章

[原创]java WEB学习笔记74:Struts2 学习之路--自定义拦截器,struts内建的拦截器

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

Struts2 笔记(2) --Struts传值/跳转/拦截器/注解等

1.action中如何接受页面传过来的参数 第一种情况:(同名参数) 例如: 通过页面要把id=1 name=tom age=20这三个参数传给action 1.action里面定义三个成员变量id name age,这个三个变量的名字一定要和所传变量的名字一致. 2.提供get/set方法 3.将来页面把这三个参数传过来的时候,struts2框架会自动的帮我们把这个三个参数值放action中的三个属性里面.(同时还做了类型的转换) 注意:这个工作其实是由defaultStack这个拦截器栈里面

struts执行过程和拦截器

struts执行过程和拦截器 Struts2执行过程 Struts2拦截器概述 1 struts2是框架,封装了很多的功能,struts2里面封装的功能都是在拦截器里面 2 struts2里面封装了很多的功能,有很多拦截器,不是每次这些拦截器都执行,每次执行默认的拦截器 3 struts2里面默认拦截器位置   4 拦截器在什么时候执行? (1)在action对象创建之后,action的方法执行之前 拦截器底层原理 1 拦截器底层使用两个原理 第一个 aop思想 (0)后面在spring里面把a

【JAVA学习】拦截器与过滤器的区别

过滤器 它是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts的action前统一设置字符集,或者去除掉一些非法字符 拦截器 它是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单

Struts2基础学习(五)&mdash;拦截器

一.概述 1.初识拦截器      Interceptor 拦截器类似前面学过的过滤器,是可以在action执行前后执行的代码,是我们做Web开发经常用到的技术.比如:权限控制.日志等.我们也可以将多个Interceptor 连在一起组成Interceptor 栈.     Struts2拦截器,每个拦截器类只有一个对象实例,即采用单例模式,所有引用这个拦截器的Action都共享这一拦截器类的实例,因此在拦截器中如果使用类变量,要注意同步的问题.      注意:              (1

struts2框架之自定义拦截器和配置

struts框架中也存在拦截器,只不过系统自动调用.框架自带的拦截器的配置文件所在的位置为: java Resources--->Libraries--->struts2-core-2.3.36.jar(核心包)--->struts-default.xml 这个配置文件中放置的是框架所有的拦截器,拦截器放置在拦截器栈中<interceptor-stack>.在配置文件中有一个基本拦截器栈,我们如果需要使用拦截器的时候,调用基本拦截器就可以了. 如果我们想要实现自己定义的功能,

Struts 2知识回顾----拦截器(Intercept)总结

什么是Struts 2拦截器? 从软件构架上来说,拦截器是实现了面向方面编程的组件.它将影响了多个业务对象的公共行为封装到一个个可重用的模块,减少了系统的重复代码,实现功能的高度内聚,确保了业务对象的整洁和纯度. 从Java代码上来说,它就是一个普度的Java对象,它只需要实现一个名为Interceptor的接口. 为什么要使用拦截器? 拦截器消除了动作组件中的横切任务(cross-cutting task).例如,日志记录是一个典型的横切关注.以前,我们可能需要为每个动作组件准备一些记录日志的

struts文件上传拦截器中参数的配置(maximumSize,allowedTypes ,allowedExtensions)问题

<interceptor-ref name="fileUpload"> <param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg,image/pjpeg</param> <!-- 图片不能大于5M --> <param name="maximumSize">5242880</param> </

struts文件上传拦截器maximumSize设置文件大小不起作用

<interceptor-ref name="fileUpload">                <param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg,image/pjpeg</param>                <!-- 图片不能大于5M -->                <param name="max