- 浏览: 3366686 次
- 性别:
- 来自: 珠海
文章分类
- 全部博客 (1633)
- Java (250)
- Android&HTML5 (111)
- Struts (10)
- Spring (236)
- Hibernate&MyBatis (115)
- SSH (49)
- jQuery插件收集 (55)
- Javascript (145)
- PHP (77)
- REST&WebService (18)
- BIRT (27)
- .NET (7)
- Database (105)
- 设计模式 (16)
- 自动化和测试 (19)
- Maven&Ant (43)
- 工作流 (36)
- 开源应用 (156)
- 其他 (16)
- 前台&美工 (119)
- 工作积累 (0)
- OS&Docker (83)
- Python&爬虫 (28)
- 工具软件 (157)
- 问题收集 (61)
- OFbiz (6)
- noSQL (12)
最新评论
-
HEZR曾嶸:
你好博主,这个不是很理解,能解释一下嘛//左边+1,上边+1, ...
java 两字符串相似度计算算法 -
天使建站:
写得不错,可以看这里,和这里的这篇文章一起看,有 ...
jquery 遍历对象、数组、集合 -
xue88ming:
很有用,谢谢
@PathVariable映射出现错误: Name for argument type -
jnjeC:
厉害,困扰了我很久
MyBatis排序时使用order by 动态参数时需要注意,用$而不是# -
TopLongMan:
非常好,很实用啊。。
PostgreSQL递归查询实现树状结构查询
http://my.oschina.net/ydsakyclguozi/blog/398403
Listener 我是这样理解他的,他是一种观察者模式的实现:我们在 web.xml 中配置 listener 的时候就是把一个被观察者放入的观察者的观察对象队列中,当被观察者触发了注册事件时观察者作出相应的反应。在 jsp/servlet 中具体的实现是在 web.xml 中注册 Listener ,由 Container 在特定事件发生时呼叫特定的实现 Listener 的类。
总体上说 servlet 中有主要有 3 类事件既: Servlet 上下文事件、会话事件与请求事件总共有 8 个 listener( 部分类容转载于 http://ritaleo.javaeye.com/blog/48751 ) 接口,我们在 web.xml 中注册时对应上自己对相应接口的实现类即可:
Servlet 中的 Listener 和 Event:在 JSP 2.0/Servlet 2.4 中,共有八个 Listener 接口,六个 Event 类别。
1. ServletContextListener 接口
[ 接口方法 ] contextInitialized() 与 contextDestroyed()
[ 接收事件 ] ServletContextEvent
[ 触发场景 ] 在 Container 加载 Web 应用程序时(例如启动 Container 之后),会呼叫 contextInitialized() ,而当容器移除 Web 应用程序时,会呼叫 contextDestroyed () 方法。
2. ServletContextAttributeListener
[ 接口方法 ] attributeAdded() 、 attributeReplaced() 、 attributeRemoved()
[ 接收事件 ] ServletContextAttributeEvent
[ 触发场景 ] 若有对象加入为 application ( ServletContext )对象的属性,则会呼叫 attributeAdded() ,同理在置换属性与移除属性时,会分别呼叫 attributeReplaced() 、 attributeRemoved() 。
3. HttpSessionListener
[ 接口方法 ] sessionCreated() 与 sessionDestroyed ()
[ 接收事件 ] HttpSessionEvent
[ 触发场景 ] 在 session ( HttpSession )对象建立或被消灭时,会分别呼叫这两个方法。
4. HttpSessionAttributeListener
[ 接口方法 ] attributeAdded() 、 attributeReplaced() 、 attributeRemoved()
[ 接收事件 ] HttpSessionBindingEvent
[ 触发场景 ] 若有对象加入为 session ( HttpSession )对象的属性,则会呼叫 attributeAdded() ,同理在置换属性与移除属性时,会分别呼叫 attributeReplaced() 、 attributeRemoved() 。
5. HttpSessionActivationListener
[ 接口方法 ] sessionDidActivate() 与 sessionWillPassivate()
[ 接收事件 ] HttpSessionEvent
[ 触发场景 ] Activate 与 Passivate 是用于置换对象的动作,当 session 对象为了资源利用或负载平衡等原因而必须暂时储存至硬盘或其它储存器时(透 过对象序列化),所作的动作称之为 Passivate ,而硬盘或储存器上的session 对象重新加载 JVM 时所采的动作称之为 Activate ,所以容 易理解的, sessionDidActivate() 与sessionWillPassivate() 分别于 Activeate 后与将 Passivate 前呼叫。
6. ServletRequestListener
[ 接口方法 ] requestInitialized() 与 requestDestroyed()
[ 接收事件 ] RequestEvent
[ 触发场景 ] 在 request ( HttpServletRequest )对象建立或被消灭时,会分别呼叫这两个方法。
7. ServletRequestAttributeListener
[ 接口方法 ] attributeAdded() 、 attributeReplaced() 、 attributeRemoved()
[ 接收事件 ] HttpSessionBindingEvent
[ 触发场景 ] 若有对象加入为 request ( HttpServletRequest )对象的属性,则会呼叫 attributeAdded() ,同理在置换属性与移除属性时,会分别呼叫 attributeReplaced() 、 attributeRemoved() 。
8. HttpSessionBindingListener
[ 接口方法 ] valueBound() 与 valueUnbound()
[ 接收事件 ] HttpSessionBindingEvent
[ 触发场景 ] 实现 HttpSessionBindingListener 接口的类别,其实例如果被加入至 session ( HttpSession )对象的属性中,则会 呼叫 valueBound() ,如果被从 session ( HttpSession )对象的属性中移除,则会呼叫valueUnbound() ,实现 HttpSessionBindingListener 接口的类别不需在 web.xml 中设定。
具体使用方法:在 web.xml 中添加如下语句:
其中 YouAchieveListener 为你实现的某个 Listener 接口的实现类 com.servlet .listener . 为你的包名。
Filter : Filter 技术是 servlet 2.3 新增加的功能 . (以下部分类容转载于http://www.programfan.com/article/1836.html )
Filter 的使用户可以改变一 个 request 或修改一个 response 。 Filter 不是一个 servlet, 它不能产生一个 response,但是他能够在一个 request 到达 servlet 之前预先处理 request, 也可以在一个响应离开 servlet 时处理 response 。
一个 filter 包括:
1. 在 servlet 被调用之前截获 ;
2. 在 servlet 被调用之前检查 servlet request;
3. 根据需要修改 request 头和 request 数据 ;
4. 根据需要修改 response 头和 response 数据 ;
5. 在 servlet 被调用之后截获 .
Filter 和 servlet 的对应关系为多对多的关系 ,也就是说你可以配置一个 filter 到一个或多个 servlet; 而一个 servlet可以有多个 filter 。几个实用的 filter 包括:用户辨认 filter, 日志 filter, 审核 filter, 加密 filter, 符号 filter, 能改变 xml内容的 XSLT filter 等 .
一个 filter 必须实现 javax.servlet.Filter 接口并定义三个方法 :
1.void setFilterConfig(FilterConfig config) // 设置 filter 的配置对象 ;
2. FilterConfig getFilterConfig() // 返回 filter 的配置对象 ;
3. void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) // 执行 filter 的工作 .
服务器每次只调用 setFilterConfig 方法一次准备 filter 的处理 ; 调用 doFilter 方法多次以处理不同的请求.FilterConfig 接口有方法可以找到 filter 名字及初始化参数信息 . 服务器可以设置 FilterConfig 为空来指明 filter 已经终结 .
每一个 filter 从 doFilter() 方法中得到当前的 request 及 response. 在这个方法里 , 可以进行任何的针对 request 及response 的操作 .( 包括收集数据 , 包装数据等 ).filter 调用 chain.doFilter() 方法把控制权交给下一个 filter. 一个filter 在 doFilter() 方法中结束 . 如果一个 filter 想停止 request 处理而获得对 response 的完全的控制 , 那它可以不调用下 一个 filter.
一个 filter 可以包装 request 或 response 以改变几个方法和提供用户定制的属性 .Api2.3 提供了HttpServletRequestWrapper 和 HttpServletResponseWrapper 来实现 . 它们能分派最初的 request 和 response.如果要改变一个方法的特性 , 必须继 承 wapper 和重写方法 . 下面是一段简单的日志 filter 用来记录所有 request 的持续时间 .
当 server 调用 setFilterConfig(),filter 保存 config 信息 . 在 doFilter() 方法中通过 config 信息得到 servletContext.如果要运行这个 filter, 必须去配置到 web.xml 中 . 以 tomcat4.01 为例 :
从上面的事例中可以看出, filter 和 servlet 是在 web.xml 中配置起来的。
Listener 我是这样理解他的,他是一种观察者模式的实现:我们在 web.xml 中配置 listener 的时候就是把一个被观察者放入的观察者的观察对象队列中,当被观察者触发了注册事件时观察者作出相应的反应。在 jsp/servlet 中具体的实现是在 web.xml 中注册 Listener ,由 Container 在特定事件发生时呼叫特定的实现 Listener 的类。
总体上说 servlet 中有主要有 3 类事件既: Servlet 上下文事件、会话事件与请求事件总共有 8 个 listener( 部分类容转载于 http://ritaleo.javaeye.com/blog/48751 ) 接口,我们在 web.xml 中注册时对应上自己对相应接口的实现类即可:
Servlet 中的 Listener 和 Event:在 JSP 2.0/Servlet 2.4 中,共有八个 Listener 接口,六个 Event 类别。
1. ServletContextListener 接口
[ 接口方法 ] contextInitialized() 与 contextDestroyed()
[ 接收事件 ] ServletContextEvent
[ 触发场景 ] 在 Container 加载 Web 应用程序时(例如启动 Container 之后),会呼叫 contextInitialized() ,而当容器移除 Web 应用程序时,会呼叫 contextDestroyed () 方法。
2. ServletContextAttributeListener
[ 接口方法 ] attributeAdded() 、 attributeReplaced() 、 attributeRemoved()
[ 接收事件 ] ServletContextAttributeEvent
[ 触发场景 ] 若有对象加入为 application ( ServletContext )对象的属性,则会呼叫 attributeAdded() ,同理在置换属性与移除属性时,会分别呼叫 attributeReplaced() 、 attributeRemoved() 。
3. HttpSessionListener
[ 接口方法 ] sessionCreated() 与 sessionDestroyed ()
[ 接收事件 ] HttpSessionEvent
[ 触发场景 ] 在 session ( HttpSession )对象建立或被消灭时,会分别呼叫这两个方法。
4. HttpSessionAttributeListener
[ 接口方法 ] attributeAdded() 、 attributeReplaced() 、 attributeRemoved()
[ 接收事件 ] HttpSessionBindingEvent
[ 触发场景 ] 若有对象加入为 session ( HttpSession )对象的属性,则会呼叫 attributeAdded() ,同理在置换属性与移除属性时,会分别呼叫 attributeReplaced() 、 attributeRemoved() 。
5. HttpSessionActivationListener
[ 接口方法 ] sessionDidActivate() 与 sessionWillPassivate()
[ 接收事件 ] HttpSessionEvent
[ 触发场景 ] Activate 与 Passivate 是用于置换对象的动作,当 session 对象为了资源利用或负载平衡等原因而必须暂时储存至硬盘或其它储存器时(透 过对象序列化),所作的动作称之为 Passivate ,而硬盘或储存器上的session 对象重新加载 JVM 时所采的动作称之为 Activate ,所以容 易理解的, sessionDidActivate() 与sessionWillPassivate() 分别于 Activeate 后与将 Passivate 前呼叫。
6. ServletRequestListener
[ 接口方法 ] requestInitialized() 与 requestDestroyed()
[ 接收事件 ] RequestEvent
[ 触发场景 ] 在 request ( HttpServletRequest )对象建立或被消灭时,会分别呼叫这两个方法。
7. ServletRequestAttributeListener
[ 接口方法 ] attributeAdded() 、 attributeReplaced() 、 attributeRemoved()
[ 接收事件 ] HttpSessionBindingEvent
[ 触发场景 ] 若有对象加入为 request ( HttpServletRequest )对象的属性,则会呼叫 attributeAdded() ,同理在置换属性与移除属性时,会分别呼叫 attributeReplaced() 、 attributeRemoved() 。
8. HttpSessionBindingListener
[ 接口方法 ] valueBound() 与 valueUnbound()
[ 接收事件 ] HttpSessionBindingEvent
[ 触发场景 ] 实现 HttpSessionBindingListener 接口的类别,其实例如果被加入至 session ( HttpSession )对象的属性中,则会 呼叫 valueBound() ,如果被从 session ( HttpSession )对象的属性中移除,则会呼叫valueUnbound() ,实现 HttpSessionBindingListener 接口的类别不需在 web.xml 中设定。
具体使用方法:在 web.xml 中添加如下语句:
< listener > < listener -class > com.servlet .listener .YouAchieveListener < /listener -class > < /listener >
其中 YouAchieveListener 为你实现的某个 Listener 接口的实现类 com.servlet .listener . 为你的包名。
Filter : Filter 技术是 servlet 2.3 新增加的功能 . (以下部分类容转载于http://www.programfan.com/article/1836.html )
Filter 的使用户可以改变一 个 request 或修改一个 response 。 Filter 不是一个 servlet, 它不能产生一个 response,但是他能够在一个 request 到达 servlet 之前预先处理 request, 也可以在一个响应离开 servlet 时处理 response 。
一个 filter 包括:
1. 在 servlet 被调用之前截获 ;
2. 在 servlet 被调用之前检查 servlet request;
3. 根据需要修改 request 头和 request 数据 ;
4. 根据需要修改 response 头和 response 数据 ;
5. 在 servlet 被调用之后截获 .
Filter 和 servlet 的对应关系为多对多的关系 ,也就是说你可以配置一个 filter 到一个或多个 servlet; 而一个 servlet可以有多个 filter 。几个实用的 filter 包括:用户辨认 filter, 日志 filter, 审核 filter, 加密 filter, 符号 filter, 能改变 xml内容的 XSLT filter 等 .
一个 filter 必须实现 javax.servlet.Filter 接口并定义三个方法 :
1.void setFilterConfig(FilterConfig config) // 设置 filter 的配置对象 ;
2. FilterConfig getFilterConfig() // 返回 filter 的配置对象 ;
3. void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) // 执行 filter 的工作 .
服务器每次只调用 setFilterConfig 方法一次准备 filter 的处理 ; 调用 doFilter 方法多次以处理不同的请求.FilterConfig 接口有方法可以找到 filter 名字及初始化参数信息 . 服务器可以设置 FilterConfig 为空来指明 filter 已经终结 .
每一个 filter 从 doFilter() 方法中得到当前的 request 及 response. 在这个方法里 , 可以进行任何的针对 request 及response 的操作 .( 包括收集数据 , 包装数据等 ).filter 调用 chain.doFilter() 方法把控制权交给下一个 filter. 一个filter 在 doFilter() 方法中结束 . 如果一个 filter 想停止 request 处理而获得对 response 的完全的控制 , 那它可以不调用下 一个 filter.
一个 filter 可以包装 request 或 response 以改变几个方法和提供用户定制的属性 .Api2.3 提供了HttpServletRequestWrapper 和 HttpServletResponseWrapper 来实现 . 它们能分派最初的 request 和 response.如果要改变一个方法的特性 , 必须继 承 wapper 和重写方法 . 下面是一段简单的日志 filter 用来记录所有 request 的持续时间 .
public class LogFilter implements Filter { FilterConfig config; public void setFilterConfig(FilterConfig config) { this.config = config; } public FilterConfig getFilterConfig() { return config; } public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) { ServletContext context = getFilterConfig().getServletContext(); long bef = System.currentTimeMillis(); chain.doFilter(req, res); // no chain parameter needed here long aft = System.currentTimeMillis(); context.log("Request to " + req.getRequestURI() + ": " + (aft-bef)); } }
当 server 调用 setFilterConfig(),filter 保存 config 信息 . 在 doFilter() 方法中通过 config 信息得到 servletContext.如果要运行这个 filter, 必须去配置到 web.xml 中 . 以 tomcat4.01 为例 :
<filter> <filter-name> log //filter 名字 </filter-name> <filter-class> LogFilter //filter class( 上例的 servlet) </filter-class> </filter> <filter-mapping> <!-- 配置这个filter跟servlet关联 --> <filter-name>log</filter-name> <servletname>servletname</servlet-name> </filter-mapping> <servlet> <servlet-name>servletname</servletname> <servletclass>servletclass</servlet-class> </servlet> <servlet-mapping> <servlet-name>servletname</servlet-name> <url-pattern>*</url-pattern> </servlet-mapping>
从上面的事例中可以看出, filter 和 servlet 是在 web.xml 中配置起来的。
发表评论
-
JSTL 的 if else : 有 c:if 没有 else 的处理
2016-06-14 09:52 1294http://blog.csdn.net/xiyuan1999 ... -
基于spring,Atomikos,mybatis的分布式动态数据源JTA实现
2016-04-27 16:37 1032原文;http://www.blogjava.net/zuxi ... -
Servlet3.0新特性@WebServlet
2016-03-09 21:35 1577http://my.oschina.net/u/2416019 ... -
Spring+Mybatis+Velocity
2015-12-17 09:55 939原文: http://my.oschina.net/langh ... -
Freemarker页面语法
2015-12-03 10:29 1175Freemarker页面语法http://ji ... -
session过期后自动跳转到登陆页
2015-12-02 15:36 2539session过期后自动跳转到登陆页http://blog.c ... -
apache shiro - 动态创建filterchaindefinitions
2015-12-01 14:33 2487http://www.360doc.com/content/1 ... -
java代码中获取classpath路径
2015-11-27 11:40 1970http://blog.csdn.net/magi1201/a ... -
springmvc整合 sitemesh + freemarker+spring ioc
2015-11-24 19:30 2269使用freemarker.properties配置方式: ht ... -
Sitemesh 3 的使用及配置
2015-11-17 09:33 1014Sitemesh 3 的使用及配置 http://www.cn ... -
SpringMVC + Mybatis + Shiro 权限整合
2015-11-14 14:06 8701详细见参考文章: 基于Spring + Spring MVC ... -
Spring Security 3.2.x 配置
2014-06-15 22:02 3861使用 Spring Security 保护 Web 应用的安全 ... -
SpringMVC + WebSocket + X
2014-06-12 10:45 4559官方文档:WebSocket Support http://d ... -
JSTL empty判断空值
2014-06-06 08:51 1296http://sphinx-yong.iteye.com/bl ... -
weblogic getServletContext().getRealPath("/")
2014-05-30 08:35 1818http://1185734295.iteye.com/blo ... -
上传文件到虚拟路径下
2014-05-16 23:44 1964http://guard.iteye.com/blog/206 ... -
在 Web 项目中应用 Apache Shiro
2014-03-17 15:00 1046http://www.ibm.com/developerwor ... -
SpringMVC3.2.x + Hibernate4.2.x + ecache + Spring Security 3.0.5
2014-01-20 09:24 1321这只是部分代码,一些代码可以参考:http://panyong ... -
SpringMVC3.2.x + Hibernate4.2.x + ecache
2013-05-18 12:50 2074附件是源码 pom.xml ---------------- ... -
ELResolver Escapes JSP EL Values To Prevent Cross-Site Scripting
2013-04-25 20:15 2278JspFactory.getDefaultFactory()返 ...
相关推荐
Filter过滤器和Listener监听器详解 Filter过滤器 Filter的简介 对资源的访问进行过滤,相当于小区的保安,进去要检查,出去还要检查。 Filter的使用 编写一个类,继承并实现javax.servlet.Filter。 package ...
Java Web基础与实例教程的PPT,自己制作的PPT,将近400页,免费分享,童鞋们努力学习吧。
给大家介绍了spring-boot中如何定义过滤器、监听器和拦截器,对Spring Boot 编写Servlet、Filter、Listener、Interceptor的相关知识感兴趣的朋友一起看看吧
1、Servlet 是 JavaEE的...JavaWeb 三大组件分别是:**Servlet 程序、Filter 过滤器、Listener 监听器**。 3、Servlet 是运行在服务器上的一个 java 小程序,它可以接收客户端发送过来的请求,并响应 数据给客户端。
1.Filter 什么是过滤器 其中最重要的就是filter功能.它使用户可以改变一个request和修改一个response. Filter 不是一个servlet... JavaWeb的三大组件分别是:Servlet程序 Listener监听器 Filter过滤器. Filter过滤器是一
项目简介 本项目是基于J2EE的Servlet的在线蛋糕店管理系统,本项目有三种权限:游客、用户、管理员。 ...用户:浏览查看商品、...后端:Servlet、过滤器filter、监听器Listener、jdbc 前端:Jsp、Jquery、Ajax、bootstrap
1、Filter的理解和应用 实现一个禁止缓存的过滤器。 要求和提示: (1)禁止浏览器缓存所有动态页面;...通过监听器记录在线用户的姓名,在页面进行用户姓名的显示,同时实现对某个用户的强制下线功能。
第2篇为基础篇,内容包括Servlet技术、JSP技术、会话跟踪、过滤器Filter、监听器Listener等;第3篇为高级篇,内容包括JSTL标签库的使用、如何自定义标签、资源国际化、数据库概述、JDBC详解、XML概述等;第4篇为...
三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤器 Filter 过滤器它是 JavaEE 的规范。也就是接口 Filter 过滤器它的作用是:拦截请求,过滤响应。 拦截请求常见的应用场景有: 1、权限检查 2、...
1.6.1 监听器(Listener)顺序 ...............................................................................................................14 1.6.2 注解处理 .............................................
第14章 讲解Servlet中的监听器(Listener)技术。 第15章 讲解Servlet过滤器(Filter)技术。 第16章 讲解使用Apache Commons FileUpload实现文件上传,同时讲解了JavaMail和如何运用Apache Commons Email组件发送...
课程涵盖:Servlet程序、Filter过滤器、Listener监听器、JSP页面、EL表达式、JSTL标签库、jQuery框架、Cookie技术、Session会话、JSON使用、Ajax请求等全部Web开发核心技术点,并在讲解知识点过程中带领大家完成一个...
主要内容包括:Servlet、JSP、EL表达式、JSTL标签库、Filter过滤器、Listener监听器。在讲解过程中采用的手法是从0到1,让小白学会源码分析,让大牛眼前一亮。总之,不管你是小白,还是已经在从事Java开发的工作者,...
JAVA EE 开发手册 JavaEE是一个开放的、 基于标准的平台,用以开发、部署和管理N层结构、面向Web的,以服务器为中心的企业级应用。 JavaEE的具有可扩展性、性能和可靠性。...8、监听器Listener 9、注解( Annotation)
课程涵盖:Servlet程序、Filter过滤器、Listener监听器、JSP页面、EL表达式、JSTL标签库、jQuery框架、Cookie技术、Session会话、JSON使用、Ajax请求等全部Web开发核心技术点,并在讲解知识点过程中带领大家完成一个...
项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...
tomcat、xml、servlet、jsp、listener监听器、EL、JSTL、Cookie、Session、Filter过滤器、JSON、AJAX、i18n、文件上传下载
springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存,quartz定时任务(没有具体业务实现)等技术点都在项目中实现了,可谓是麻雀虽小五脏俱全!...
springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存,quartz定时任务(没有具体业务实现)等技术点都在项目中实现了,可谓是麻雀虽小五脏俱全!...
springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存,quartz定时任务(没有具体业务实现)等技术点都在项目中实现了,可谓是麻雀虽小五脏俱全!...