过滤器(filter)、监听器(listener)
---------------------------------------------------------------------------------------------------------------------------
SessionID原理概述:
- 浏览器发送一次请求到服务器,服务器首先判断,该请求是否携带一个SessionID值
- 如果这次请求没有携带一个SessionID值,服务器就知道了,这是第一次来访问该服务器
- 浏览器与该服务器开始建立会话
- 服务器会在相应请求的同时,将产生一个SessionID,作为该次会话的标识
- 再把这个SessionID发给浏览器,浏览器就拥有一个SessionID了
- 当再次访问该服务器时,浏览器会携带那个SessionID,被传到服务器
- 服务器首先判断该请求是否携带一个SessionID值,此时有了,代表这不是一个新的会话的请求
- 如果浏览器两个请求之间的时间太长,超出服务器等待的时间,服务器会删除这个session对象
- 删除后,再次发送到该服务器,因为服务器里没有这个session对象了,就不能判断请求是否携带SessionID值
- 也就是说判断不出来,就认为这是一个新的会话开始,又会产生一个SessionID,作为这次新会话的标识
- 又把这个SessionID发给浏览器,浏览器就拥有一个新的SessionID了
- 在会话开始时,服务器会自动分配一个空间(session对象),SessionID就在session对象里
-----------------------------------------------------------------------------
filter翻译为过滤器。在web项目中,经常需要在正式处理请求前,做一些特殊的处理或常用的例程,于是就发明了这个filter。
作用:
- 过滤非法文字和信息。
- 设置统一字符编码。
- 对用户进行登录验证 。
- 改变图片文件格式。
- 对相应内容做压缩处理。
- 对XML的输出使用XSLT来进行转换。
步骤:
- 第一步:通过在web.xml中的元素和元素来配置filter,以决定用户请求的URL应被哪些filter类来处理一次。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 步骤二:编写filter的Servlet类。
- 我们的filter类需要实现父接口javax.servlet.Filter。
- 实现父接口的各个方法。包括init(),doFilter(),destroy(),这3个方法。
- init()方法和destroy()方法分别用来初始化和销毁时调用。
- init()方法在 Filter 生命周期中仅执行一次。服务器启动时就会执行。
- destory()方法在Filter的生命周期中仅执行一次,即Web容器卸载Filter对象之前调用它。主要做释放资源的操作。
- 对doFilter(req,resp,chain)方法操作。
- chain.doFilter(request,response)。
注意:chain参数则通过调用自己的doFilter方法来将请求向下传递,如果没有调用doFilter()方法,则相当于阻止了本次请求。
创建如下:
本文详细阐述了SessionID的工作原理,包括浏览器与服务器间如何通过SessionID建立会话,以及会话的生命周期管理。同时介绍了过滤器(filter)的作用及配置方法,并解释了监听器(listener)的功能和实现步骤。
309

被折叠的 条评论
为什么被折叠?



