- 浏览: 103256 次
- 性别:
- 来自: 深圳
-
文章分类
- 全部博客 (209)
- http://docs.jpush.io/server/java_sdk/ (1)
- SpingMVC ModelAndView (1)
- Model (1)
- Control以及参数传递 (1)
- https://www.alipay.com/ (1)
- 检查指定的字符串列表是否不为空。 (1)
- 转自http://my.oschina.net/rpgmakervx/blog/505434 (1)
- 压缩js (1)
- 含包含 字母数字校验 (1)
- 判断浏览器是ie (1)
- fixbox (0)
- 转自http://www.cnblogs.com/lanzi/archive/2010/10/26/1861338.html (1)
- http://dl2.iteye.com/upload/attachment/0113/2406/afbd8d53-dcad-3afc-8d78-41c1591 (0)
- IDEA (0)
- maven搭建 (0)
- http://www.jeasyuicn.com/api/docTtml/index.htm (1)
- 给tomcat添加运行内存: (1)
- JPUSH推送 (1)
- requestScope (0)
- oracle中plsql安装client10连接数据库 (1)
- 不需要安装oracle11g (1)
- tuikuan (1)
- http://www.hjxmall.com/index.php (1)
- java (1)
- 参考 (1)
- xml签名验签模拟程序 (1)
- 技术网站收集分享 (1)
- Java NIO提供了与标准IO不同的IO工作方式 ------来源于 http://www.iteye.com/magazines/132-Java-NIO (1)
- oracle表查询语句优化 (0)
- oracle (5)
- a (1)
- TenpayHttpClient (2)
- mongodb (1)
- http://www.qcloud.com/product/cmongo.html?utm_source=pcsem1&utm_medium=bdgj46&utm_campaign=baidu (1)
- SpringMVC整合MongoDB开发 (0)
- SpringMVC整合MongoDB开发 https://www.mongodb.org (1)
- Java 语言中常见问题总结 (1)
- 数据库SQL优化大总结 (1)
- 拦截器与过滤器的区别 (1)
- Struts2中拦截器与过滤器的区别及执行顺序 (1)
- Spring声明式事务管理与配置 (0)
- oracle OPERTION (1)
- java 高并发多线程开发 (1)
- Collection 与 map 接口相关集合 (1)
- 多线程开发实践 (1)
- JVM调优总结 转自 http://www.importnew.com/18694.html (1)
- redis 五种数据类型的使用场景 转自于 http://blog.csdn.net/gaogaoshan/article/details/41039581 (1)
- HttpWatch http基础 来自于http://blog.csdn.net/gaogaoshan/article/details/21237555 (1)
- maven 远程仓库 http://blog.csdn.net/gaogaoshan/article/details/40266779 (1)
- 生成Webservice客户端的4中方法 http://blog.csdn.net/gaogaoshan/article/details/8980775 (1)
- http://fgh2011.iteye.com/blog/1564283 (1)
- sleep和wait有什么区别 http://xiaowei2002.iteye.com/blog/2174188 (1)
- JDK中常用包及其类 常见的几种RuntimeException (1)
- Java的运行原理 (1)
- mybatis缓存的使用及理解 http://my.oschina.net/dxqr/blog/123163 (1)
- 软件架构设计分析 (1)
- redis技术总结 (3)
- java面试总结知识点 (1)
- ZooKeeper技术 (1)
- Hadoop (1)
- sso单点登录 (1)
- SpringIOC (1)
- 书签ssssssssssssssssssssss (1)
- spring事务的隔离级别 http://www.cnblogs.com/yangy608/archive/2011/06/29/2093478.html (1)
- 秒杀系统架构分析与实战 http://www.importnew.com/18920.html (1)
- oracle 连接plsql配置 (1)
- maven工程集成springmvc http://blog.csdn.net/fox_lht/article/details/16952683 (1)
- java类序列化与反序列化版本唯一号serialVersionUID (1)
- spring注解用法总结 (1)
- eclipse导入maven项目找不到资源文件方法 (1)
- dubbo (0)
- socket 网络编程 服务器与客户端 编程 (1)
- Thread与Runnable实现线程利用线程插队实现求和操作 (1)
- 生产者与消费者模式 (1)
- JAXB注解 java 关于xml的注解,自动生成xml文件 - @XML*** (1)
- xml 与JAVAbean转换 (1)
- MAP (2)
- decimalToString (1)
- 反编译插件 (0)
- 反编译插件 https://sourceforge.net/projects/jadclipse/?source=typ_redirect (1)
- AWX (1)
- 官网地址Dinp (1)
- public interface ExecutorService extends Executor (1)
- MAIN (1)
- 转自于 http://blog.csdn.net/lufeng20/article/details/24314381 (1)
- JaxbUtil (1)
- HttpXmlClient (0)
- Http post 请求 (1)
- URLDecoder (1)
- spdb (0)
- 订单号生成规则 (1)
- 距离0点毫秒数 (1)
- MyBatis存储过程调用java (1)
- Banks (1)
- 学习网址 (1)
- hots配置oracle数据库配置修改 (1)
- 支付宝文档 (1)
- Jadclipse (1)
- filter (0)
- Filter过滤器 (1)
- 工具类 fixbox (1)
- java quartz (0)
- java quartz 实现定时任务,每个礼拜一到礼拜五定时执行 (1)
- Thread (4)
- getResourceAsStream (1)
- BigData (1)
- 开源架构 (17)
- 架构 (0)
- 文件操作 (2)
- tools (20)
- 测试工具 (1)
- vm (1)
- mq (1)
- blog (1)
- 开源架构搭建技术 (6)
- JAVA细节技术点总结 (1)
- 优化技术 (1)
- LINUX命令使用 (1)
- spring (2)
- 大数据 (1)
- struts2 (1)
- python (1)
- pay (1)
- linux (1)
- 压力测试 (1)
- 代码检查插件 (1)
- 游戏端开发 (1)
- 微信开发相关 (1)
- 搜索引擎 (1)
- 网络技术 (1)
- 分布式部署 (1)
- 堆栈信息 (1)
最新评论
struts2体系结构图:
当接收到一个httprequest ,
a) 当外部的httpservletrequest到来时
b) 初始到了servlet容器 传递给一个标准的过滤器链
c) FilterDispatecher会去查找相应的ActionMapper,如果找到了相应的ActionMapper它将会将控制权限交给ActionProxy
d) ActionProxy将会通过ConfigurationManager来查找配置struts.xml
i. 下一步将会 通过ActionInvocation来负责命令模式的实现(包括调用一些拦截Interceptor框架在调用action之前)
ii. Interceptor做一些拦截或者初始的工作
e) 一旦action返回,会查找相应的Result
f) Result类型可以是 jsp或者freeMark 等
g) 这些组件和ActionMapper一起返回给请求的url(注意拦截器的执行顺序)
h) 响应的返回是通过我们在web.xml中配置的过滤器
i) 如果ActionContextCleanUp是当前使用的,则FilterDispatecher将不会清理sreadlocal ActionContext;如果ActionContextCleanUp不使用,则将会去清理sreadlocals。
1、拦截器是基于java反射机制的,而过滤器是基于函数回调的。
2、过滤器依赖于servlet容器,而拦截器不依赖于servlet容器。
3、拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。
4、拦截器可以访问Action上下文、值栈里的对象,而过滤器不能。
5、在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。
org.apache.struts2.dispatcher.FilterDispatcher的四个功能
org.apache.struts2.dispatcher.FilterDispatcher是Struts2的主要的Filter,负责四个方面的功能:
(1)执行Actions
(2)清除ActionContext
(3)维护静态内容
(4)清除request生命周期内的XWork的interceptors
另注:该过滤器应该过滤所有的请求URL。一般被设置为/*.(过滤所有的请求!)
具体:
(1)执行Actions
过滤器通过ActionMapper对象,来判断是否应该被映射到Action.如果mapper对象指示他应该被映射,过滤链将会被终止,然后Action被调用。这一点非常重要,如果同时使用SiteMesh filter,则SiteMesh filter应该放到该过滤器前,否则Action的输出将不会被装饰。
(2)清除ActionContext
过滤器为了确保内存溢出,会自动的清除ActionContext。这可能会存在一些问题,在和其它的框架集成时,例如SiteMesh。ActionContextCleanUp提供了怎么处理这些问题的一些信息。
(3)维护静态内容
过滤器也会维护在Struts2中使用的一些公共的静态的内容,例如JavaScript文件,CSS文件等。搜索/struts/*范围内的请求,然后将/struts/后面的值映射到一些struts的公共包中,也可以在你的类路径中搜索。默认情况下会去查找以下包:org.apache.struts2.static.template。这样你只用请求/struts/xhtml/styles.css,XHTML UI主题默认的样式表将会被返回。同样,AJAX UI组件需要的JavaScript文件,也可以在org.apache.struts2.static包中被找到。如果你想加入其它被搜索的包,在web.xml中设置filter时,通过给"actionPackages"初始参数一个逗号隔开的包列表值来设定。
需注意的是:他会暴露一些比较敏感的信息例如,properites文件中的数据库连接信息。
注:过滤器支持以下初始参数:
config - 被调入的逗号隔开的XML文件列表。
actionPackages - 被actions扫描的逗号隔开的packages列表。
configProviders - 逗号分隔的实现了ConfigurationProvider接口(建造Configuration时被使用)的实现类。
* - 任意的struts常量。
通过重载createDispatcher()方法,可以自定义dispather。
属性列表:
(1)actionMapper:通过注入,提供一个ActionMapper实例。
(2)dispatcher:暴露给子类一个Dispatcher实例。
(3)encoding:存储StrutsConstants.STRUTS_I18N_ENCODING的设置。
(4)filterConfig:通过初始参数,提供一个FilterConfig实例。
(5)lastModifiedCal:在缓存静态content,提供一个格化的日期用于设定头信息。
(6)log:提供一个logging实例。
(7)patchPrefixs:存储静态资源的路径前缀信息。
(8)serveStatic:存储StrutsConstants.STRUTS_SERVE_STATIC_CONTENT的设置。
(9)serveStaticBrowserCache:存储StrutsConstants.STRUTS_SERVE_STATIC_BROWSER_CACHE的设置。
方法列表:
(1)copy(InputStream input, OutputStream output):从input复制数据到output。
(2)createDispatcher(FilterConfig filterConfig):创建默认的dispatcher对象,如果需要的话,子类可以重载此方法,自定义一个dispatcher对象。
(3)destory():调用dispatcher.cleanup(),依次释放本地线程,销毁dispatcher对象。
(4)doFilter(ServletRequest request, ServeltResponse response, FilterChain chain):处理一个action或处理一个请求的静态内容。
(5)findInputStream(String name, String packagePrefix):搜索类路径下的静态资源。
(6)findStaticResoruce(String name, HttpServletRequest request, HttpServletResponse response):搜索静态的资源,直接复制到相应response的头信息中。
(7)getContentType(String name):获取指定资源的contentType。
(8)getFilterConfig():获取FilterConfig实例。
(9)getServletContext():给WebLogic的一些版本提供一个工作区。
(9)init(FilterConfig filterCongfig):创建默认的dispatcher对象和设置静态资源的默认包信息来初始化filter。
(10)parse(String packages):返回一个数组通过解析一个指定逗号分隔的packages列表。
(11)prepareDispatcherAndWrapRequest(HttpServletRequest request, HttpServletResponse response):对给定的request对象进行封装返回一个封装HttpServletRequest对象。例如显示的处理multipart数据。
(12)setMapper(ActionMapper actionMapper)
(13)setEncoding(String val)
(14)setServeStaticContent(String val)
(15)setServeStaticBrowserCache(String val)
当接收到一个httprequest ,
a) 当外部的httpservletrequest到来时
b) 初始到了servlet容器 传递给一个标准的过滤器链
c) FilterDispatecher会去查找相应的ActionMapper,如果找到了相应的ActionMapper它将会将控制权限交给ActionProxy
d) ActionProxy将会通过ConfigurationManager来查找配置struts.xml
i. 下一步将会 通过ActionInvocation来负责命令模式的实现(包括调用一些拦截Interceptor框架在调用action之前)
ii. Interceptor做一些拦截或者初始的工作
e) 一旦action返回,会查找相应的Result
f) Result类型可以是 jsp或者freeMark 等
g) 这些组件和ActionMapper一起返回给请求的url(注意拦截器的执行顺序)
h) 响应的返回是通过我们在web.xml中配置的过滤器
i) 如果ActionContextCleanUp是当前使用的,则FilterDispatecher将不会清理sreadlocal ActionContext;如果ActionContextCleanUp不使用,则将会去清理sreadlocals。
1、拦截器是基于java反射机制的,而过滤器是基于函数回调的。
2、过滤器依赖于servlet容器,而拦截器不依赖于servlet容器。
3、拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。
4、拦截器可以访问Action上下文、值栈里的对象,而过滤器不能。
5、在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。
org.apache.struts2.dispatcher.FilterDispatcher的四个功能
org.apache.struts2.dispatcher.FilterDispatcher是Struts2的主要的Filter,负责四个方面的功能:
(1)执行Actions
(2)清除ActionContext
(3)维护静态内容
(4)清除request生命周期内的XWork的interceptors
另注:该过滤器应该过滤所有的请求URL。一般被设置为/*.(过滤所有的请求!)
具体:
(1)执行Actions
过滤器通过ActionMapper对象,来判断是否应该被映射到Action.如果mapper对象指示他应该被映射,过滤链将会被终止,然后Action被调用。这一点非常重要,如果同时使用SiteMesh filter,则SiteMesh filter应该放到该过滤器前,否则Action的输出将不会被装饰。
(2)清除ActionContext
过滤器为了确保内存溢出,会自动的清除ActionContext。这可能会存在一些问题,在和其它的框架集成时,例如SiteMesh。ActionContextCleanUp提供了怎么处理这些问题的一些信息。
(3)维护静态内容
过滤器也会维护在Struts2中使用的一些公共的静态的内容,例如JavaScript文件,CSS文件等。搜索/struts/*范围内的请求,然后将/struts/后面的值映射到一些struts的公共包中,也可以在你的类路径中搜索。默认情况下会去查找以下包:org.apache.struts2.static.template。这样你只用请求/struts/xhtml/styles.css,XHTML UI主题默认的样式表将会被返回。同样,AJAX UI组件需要的JavaScript文件,也可以在org.apache.struts2.static包中被找到。如果你想加入其它被搜索的包,在web.xml中设置filter时,通过给"actionPackages"初始参数一个逗号隔开的包列表值来设定。
需注意的是:他会暴露一些比较敏感的信息例如,properites文件中的数据库连接信息。
注:过滤器支持以下初始参数:
config - 被调入的逗号隔开的XML文件列表。
actionPackages - 被actions扫描的逗号隔开的packages列表。
configProviders - 逗号分隔的实现了ConfigurationProvider接口(建造Configuration时被使用)的实现类。
* - 任意的struts常量。
通过重载createDispatcher()方法,可以自定义dispather。
属性列表:
(1)actionMapper:通过注入,提供一个ActionMapper实例。
(2)dispatcher:暴露给子类一个Dispatcher实例。
(3)encoding:存储StrutsConstants.STRUTS_I18N_ENCODING的设置。
(4)filterConfig:通过初始参数,提供一个FilterConfig实例。
(5)lastModifiedCal:在缓存静态content,提供一个格化的日期用于设定头信息。
(6)log:提供一个logging实例。
(7)patchPrefixs:存储静态资源的路径前缀信息。
(8)serveStatic:存储StrutsConstants.STRUTS_SERVE_STATIC_CONTENT的设置。
(9)serveStaticBrowserCache:存储StrutsConstants.STRUTS_SERVE_STATIC_BROWSER_CACHE的设置。
方法列表:
(1)copy(InputStream input, OutputStream output):从input复制数据到output。
(2)createDispatcher(FilterConfig filterConfig):创建默认的dispatcher对象,如果需要的话,子类可以重载此方法,自定义一个dispatcher对象。
(3)destory():调用dispatcher.cleanup(),依次释放本地线程,销毁dispatcher对象。
(4)doFilter(ServletRequest request, ServeltResponse response, FilterChain chain):处理一个action或处理一个请求的静态内容。
(5)findInputStream(String name, String packagePrefix):搜索类路径下的静态资源。
(6)findStaticResoruce(String name, HttpServletRequest request, HttpServletResponse response):搜索静态的资源,直接复制到相应response的头信息中。
(7)getContentType(String name):获取指定资源的contentType。
(8)getFilterConfig():获取FilterConfig实例。
(9)getServletContext():给WebLogic的一些版本提供一个工作区。
(9)init(FilterConfig filterCongfig):创建默认的dispatcher对象和设置静态资源的默认包信息来初始化filter。
(10)parse(String packages):返回一个数组通过解析一个指定逗号分隔的packages列表。
(11)prepareDispatcherAndWrapRequest(HttpServletRequest request, HttpServletResponse response):对给定的request对象进行封装返回一个封装HttpServletRequest对象。例如显示的处理multipart数据。
(12)setMapper(ActionMapper actionMapper)
(13)setEncoding(String val)
(14)setServeStaticContent(String val)
(15)setServeStaticBrowserCache(String val)
相关推荐
Struts2 中拦截器与过滤器的区别及执行顺序 Struts2 中的拦截器(Interceptor)和过滤器(Filter)是两个不同的概念,虽然它们都可以影响请求的处理过程,但它们的作用域、执行顺序和实现机制都有所不同。 拦截器...
在Struts2中,拦截器是实现业务逻辑控制和增强功能的重要机制,它们扮演着类似于AOP(面向切面编程)的角色,允许在动作执行前后插入自定义逻辑。在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何...
本文将深入探讨Struts框架中的拦截器(Interceptor)以及它与过滤器(Filter)的区别,并结合文件上传功能进行讲解。 1. 拦截器与过滤器的概念 - **拦截器**:在Struts2框架中,拦截器是基于AOP(面向切面编程)的...
2. **拦截器链**:在Struts2中,多个拦截器可以形成一个拦截器链,每个拦截器按照定义的顺序依次执行。如果所有拦截器都允许Action执行,那么Action的结果将被传递到下一个拦截器,直到整个链执行完毕。 ### 二、...
在"Struts2 拦截器过滤方法(二十八)"这个主题中,我们将深入探讨Struts2拦截器的工作原理、如何创建自定义拦截器以及它们在实际应用中的作用。 首先,拦截器是基于Java的动态代理机制实现的,它们在Action执行...
在Struts2中,拦截器就像过滤器一样工作,通过链式调用在动作执行前后进行预处理和后处理。 首先,我们来理解一下拦截器的基本概念。拦截器是在Action调用之前和之后执行的一段代码,可以用来做日志记录、权限检查...
在Struts2中,拦截器(Interceptor)扮演着至关重要的角色,它允许开发者在动作执行前后插入自定义逻辑,如日志记录、权限验证等。在本案例中,我们将深入探讨如何使用Struts2拦截器实现登录权限验证,同时结合...
在Struts2中,拦截器工作在Action和结果(Result)之间,形成一个拦截器栈,每个拦截器按照配置的顺序依次执行。 Struts2的拦截器执行流程如下: 1. **初始化拦截器栈**:当Struts2框架启动时,会根据配置文件...
拦截器栈是Struts2中拦截器的组织方式,它将多个拦截器按照预设的顺序组合成一个链式结构。在Action的执行过程中,这些拦截器会被依次调用,每个拦截器都有机会在Action方法执行前后进行干预。拦截器栈的顺序至关...
在Struts2中,每个Action执行前都会经过一系列预定义或自定义的拦截器。这些拦截器按照配置的顺序逐个执行,每个拦截器执行完毕后,会将控制权传递给下一个拦截器,直到最后一个拦截器执行完后再调用Action的`...
在Struts2中,拦截器是基于Java的动态代理机制实现的,它们按照预定义的顺序对Action调用进行拦截,执行特定的任务。登录拦截器通常用于验证用户是否已登录,如果未登录,将重定向到登录页面。 配置登录拦截器主要...
Struts2拦截器是Struts2框架中的一个重要组件,它提供了一种机制允许开发者在Action调用前后插入自定义的行为,甚至能够阻止Action的执行。这种机制在很多企业级Java项目中有着广泛的应用,例如进行数据转换、校验、...
在Struts2中,拦截器(Interceptor)扮演着核心角色,它允许开发者在动作执行前后插入自定义逻辑,实现了灵活的业务处理和增强的功能。 拦截器是Struts2框架的一个重要组成部分,它们是基于责任链模式实现的,可以...
拦截器是Struts2的核心特性之一,它们在Action调用之前和之后执行,扮演着类似于过滤器的角色,允许我们实现诸如日志记录、权限检查、事务管理等通用功能。在深入探讨自定义拦截器之前,我们先理解一下Struts2拦截器...
其中,拦截器(Interceptor)是Struts2中的一个关键特性,用于扩展框架的功能,实现诸如事务管理、权限控制、输入验证等功能。 #### Struts2的处理流程 1. **客户端请求**: 当客户端发起HTTP请求时,请求首先到达...
拦截器是Struts2框架中的一个重要概念,它允许开发者在动作执行前后插入自定义逻辑,比如数据验证、日志记录、性能监控等。在这个场景中,我们将探讨如何使用Struts2拦截器来实现输入数据的过滤,特别是去除前后空格...
在`struts过滤器(拦截器)程序.zip`中,我们可以看到这些概念如何在实际项目中得到运用,包括`web.xml`的配置、`struts.xml`的拦截器定义以及相关的Java源码和JSP页面,它们共同构成了一个完整的Struts2应用实例。
- 在 Struts2 中,拦截器的工作方式类似于过滤器(Filter),但更面向业务逻辑。它们按照预定义的顺序组成一个拦截器栈,当请求到达Action时,会逐个执行这些拦截器。 2. **拦截器的配置** - 在 `struts.xml` ...
在Struts2中,拦截器(Interceptor)扮演着至关重要的角色,它们是实现业务逻辑与展示逻辑分离的关键组件。这篇博文将深入探讨Struts2的拦截器机制及其应用场景。 **拦截器的概念** 拦截器是一种AOP(面向切面编程...