过滤器和拦截器
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
代理类持有目标类对象引用
▪ 程序调用代理类方法,代理类进行处理后再调用目 标类方法
Java动态代理
▪ 利用java.lang.reflect.Proxy和 java.lang.reflect.InvocationHandler接口生成动态代 理对象
▪ 示例 DynamicProxy
在Struts2中编写针对Action的拦截器类,需要实 现Interceptor接口
▪ init()
▪ destory() ▪ doFilter()方法
URL请求可以被过滤器拦截,在doFilter方法中可以根 据需要做预处理,之后再把请求转向到URL指向的目 标资源
过滤器示例1:开发一个编码过滤器,在转向目标 资源之前,将程序中的编码设置为UTF-8
EncodingFilter
查看Struts2自定义拦截器(部分)
▪ servletConfig拦截器 ▪ params拦截器
参考教材4.3节:Struts2框架的调用流程(P73) Debug模式观察Struts2调用流程
业务控制器Action(程序员编写)
▪ Action(1) PPT :Action基础应用 ▪ Action (2) PPT : Action访问Web元素和高级配置
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
过滤器示例1测试运行:
▪ http://localhost:8080/EncodingFilter/1.jsp
Struts2提供了一个前端控制器(过滤器),对所 有请求进行统一处理
过滤器和拦截器(框架提供)
▪ 理解过滤器和拦截器的作用 ▪ 了解Struts2的体系结构和调用流程
Struts2自身提供了很多拦截器,并定义了默认拦 截器栈,该拦截器栈包含的一系列拦截器在调用 Action前后提供了各种基础功能服务
Struts2自身提供了一系列拦截器
Struts2提供的拦截器在struts-default.xml文件的 struts-default包中进行了定义,同时定义了一个 默认拦截器栈
<action name= "hello" class="action.HelloWorldAction">
<result name="success">/HelloWorld.jsp</result>
</action>
</package> </struts>
Action的调用会被struts-defalut.xml文件 中struts-default包所定义的默认拦截器 所拦截
查看Struts2(2.3.4.1版本)的过滤器
拦截器概述 利用Java代理实现拦截功能 在Struts2中开发自定义拦截器 Struts2自带拦截器
Struts2的拦截器可以在Action方法的执行前后拦 截调用,进行自己的一些处理,比如获取请求参 数,进行类型转换等等
拦截器是Struts2最强大的特性之一,也是Struts2 的核心
前面课程重点介绍Struts2的控制器之Action,本 篇介绍过滤器和拦截器
过滤器 拦截器 Struts2体系结构和调用流程
Servlet过滤器是一种Web组件对象,可以拦截请 求和响应
开发过滤器需要实现javax.servlet.Filter接口 Filter接口定义了三个方法
拦截器开发完毕,要在struts.xml中配置该拦截器 要拦截哪个Action
访问: http://localhost:8080/Struts2_HelloWorldIntercep tor/hello?message=helloworld
一个Action可能需要多个拦截器,可以将多个拦 截器组合在一起,组成一个拦截器栈,Action中 引用拦截器栈
ActionInvocation的invoke方法会调 用下一个拦截器,如果没有下一个拦 截器,则调用目标Action
多个Action都需要相同的拦截器或拦截器栈,可 以通过default-interceptor-ref定义一个默认拦截器 或默认拦截器栈
Action中可以不配置拦截器,采用默认拦截器( 栈)
struts-default.xml文件位于struts2-core-2.3.4.1 JAR包根目录下,由框架自动加载
struts-default.xml文件中的struts-default包定义了 一系列拦截器和一个默认的拦截器栈
struts-default.xml文件被自动包含在struts.xml中
Struts School 控 制 术 Action 学 习 回 顾
Struts School课程之
Biblioteka Baidu
与传统MVC开发相比,Struts2框架在控制器部分 改变最大,Struts2的控制器由三部分组成:
▪ 过滤器(框架提供) ▪ 拦截器(框架提供) ▪ 业务控制器——Action(程序员编写)
<package name=“包名称" extends = "struts-default“ >
继承struts-default.xml文件中定义的 struts-default包,自动继承该包 中定义的默认拦截器栈等配置
<struts>
<package name="default" extends="struts-default” >
Struts2拦截器的实现机制:代理模式
▪ Struts2框架生成目标Action的一个代理 ▪ Struts2调用代理对象,代理对象执行必要处理后,
再调用目标Action
简单Java代理编程示例: SimpleProxy
▪ 定义一个接口 ▪ 开发一个实现接口的目标类 ▪ 开发针对目标类的一个代理类,实现接口
▪ 实现Interceptor接口定义的intercept方法
String intercept(ActionInvocation invocation)
通过ActionInvocation对象invoke方 法可以调用到目标Action
Struts2中开发简单拦截器示例
▪ 示例: Struts2_HelloWorldInterceptor
拦截器栈示例: Struts2_HelloWorldInterceptor2
在Struts2中编写针对Action的拦截器类,需要实 现Interceptor接口
▪ 实现Interceptor接口定义的intercept方法
String intercept(ActionInvocation invocation)
过滤器开发完成后,需要在web.xml中配置
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>filter.MyFilter</filter-class>
</filter> <filter-mapping>
所有的请求URL都先到 filter.MyFilter
▪ 程序调用代理类方法,代理类进行处理后再调用目 标类方法
Java动态代理
▪ 利用java.lang.reflect.Proxy和 java.lang.reflect.InvocationHandler接口生成动态代 理对象
▪ 示例 DynamicProxy
在Struts2中编写针对Action的拦截器类,需要实 现Interceptor接口
▪ init()
▪ destory() ▪ doFilter()方法
URL请求可以被过滤器拦截,在doFilter方法中可以根 据需要做预处理,之后再把请求转向到URL指向的目 标资源
过滤器示例1:开发一个编码过滤器,在转向目标 资源之前,将程序中的编码设置为UTF-8
EncodingFilter
查看Struts2自定义拦截器(部分)
▪ servletConfig拦截器 ▪ params拦截器
参考教材4.3节:Struts2框架的调用流程(P73) Debug模式观察Struts2调用流程
业务控制器Action(程序员编写)
▪ Action(1) PPT :Action基础应用 ▪ Action (2) PPT : Action访问Web元素和高级配置
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
过滤器示例1测试运行:
▪ http://localhost:8080/EncodingFilter/1.jsp
Struts2提供了一个前端控制器(过滤器),对所 有请求进行统一处理
过滤器和拦截器(框架提供)
▪ 理解过滤器和拦截器的作用 ▪ 了解Struts2的体系结构和调用流程
Struts2自身提供了很多拦截器,并定义了默认拦 截器栈,该拦截器栈包含的一系列拦截器在调用 Action前后提供了各种基础功能服务
Struts2自身提供了一系列拦截器
Struts2提供的拦截器在struts-default.xml文件的 struts-default包中进行了定义,同时定义了一个 默认拦截器栈
<action name= "hello" class="action.HelloWorldAction">
<result name="success">/HelloWorld.jsp</result>
</action>
</package> </struts>
Action的调用会被struts-defalut.xml文件 中struts-default包所定义的默认拦截器 所拦截
查看Struts2(2.3.4.1版本)的过滤器
拦截器概述 利用Java代理实现拦截功能 在Struts2中开发自定义拦截器 Struts2自带拦截器
Struts2的拦截器可以在Action方法的执行前后拦 截调用,进行自己的一些处理,比如获取请求参 数,进行类型转换等等
拦截器是Struts2最强大的特性之一,也是Struts2 的核心
前面课程重点介绍Struts2的控制器之Action,本 篇介绍过滤器和拦截器
过滤器 拦截器 Struts2体系结构和调用流程
Servlet过滤器是一种Web组件对象,可以拦截请 求和响应
开发过滤器需要实现javax.servlet.Filter接口 Filter接口定义了三个方法
拦截器开发完毕,要在struts.xml中配置该拦截器 要拦截哪个Action
访问: http://localhost:8080/Struts2_HelloWorldIntercep tor/hello?message=helloworld
一个Action可能需要多个拦截器,可以将多个拦 截器组合在一起,组成一个拦截器栈,Action中 引用拦截器栈
ActionInvocation的invoke方法会调 用下一个拦截器,如果没有下一个拦 截器,则调用目标Action
多个Action都需要相同的拦截器或拦截器栈,可 以通过default-interceptor-ref定义一个默认拦截器 或默认拦截器栈
Action中可以不配置拦截器,采用默认拦截器( 栈)
struts-default.xml文件位于struts2-core-2.3.4.1 JAR包根目录下,由框架自动加载
struts-default.xml文件中的struts-default包定义了 一系列拦截器和一个默认的拦截器栈
struts-default.xml文件被自动包含在struts.xml中
Struts School 控 制 术 Action 学 习 回 顾
Struts School课程之
Biblioteka Baidu
与传统MVC开发相比,Struts2框架在控制器部分 改变最大,Struts2的控制器由三部分组成:
▪ 过滤器(框架提供) ▪ 拦截器(框架提供) ▪ 业务控制器——Action(程序员编写)
<package name=“包名称" extends = "struts-default“ >
继承struts-default.xml文件中定义的 struts-default包,自动继承该包 中定义的默认拦截器栈等配置
<struts>
<package name="default" extends="struts-default” >
Struts2拦截器的实现机制:代理模式
▪ Struts2框架生成目标Action的一个代理 ▪ Struts2调用代理对象,代理对象执行必要处理后,
再调用目标Action
简单Java代理编程示例: SimpleProxy
▪ 定义一个接口 ▪ 开发一个实现接口的目标类 ▪ 开发针对目标类的一个代理类,实现接口
▪ 实现Interceptor接口定义的intercept方法
String intercept(ActionInvocation invocation)
通过ActionInvocation对象invoke方 法可以调用到目标Action
Struts2中开发简单拦截器示例
▪ 示例: Struts2_HelloWorldInterceptor
拦截器栈示例: Struts2_HelloWorldInterceptor2
在Struts2中编写针对Action的拦截器类,需要实 现Interceptor接口
▪ 实现Interceptor接口定义的intercept方法
String intercept(ActionInvocation invocation)
过滤器开发完成后,需要在web.xml中配置
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>filter.MyFilter</filter-class>
</filter> <filter-mapping>
所有的请求URL都先到 filter.MyFilter