- 1、本文档共84页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
jsp程序设计入门沈泽刚、秦玉平主编的javaweb第二版第08章Servlet高级应用选编
第 8 章 ;;本章内容;本章内容;8.1 Web监听器;8.1 Web监听器;8.1.1 监听ServletContext事件;1.处理ServletContextEvent事件;1.处理ServletContextEvent事件;2.处理ServletContextAttributeEvent事件;2.处理ServletContextAttributeEvent事件;2.处理ServletContextAttributeEvent事件;;下面的listenerTest.jsp页面是对监听器的测试,这里使用了监听器对象创建的数据源对象。
程序8.2 listenerTest.jsp
在该页面中首先通过隐含对象application的getAttribute()得到数据源对象,然后创建ResultSet对象访问数据库。
;8.1.2 监听请求事件 ;1. 处理ServletRequestEvent事件;1. 处理ServletRequestEvent事件;2. 处理ServletRequestAttributeEvent事件;在上述方法中传递的参数为ServletRequestAttributeEvent类的对象,该类定义了下面两个方法。
public String getName():返回在请求对象上添加、删除或替换的属性名。
public Object getValue():返回在请求对象上添加、删除或替换的属性值。
注意??当替换属性时,该方法返回的是替换之前的属性值。;下面的MyRequestListener监听器类监听对某个页面的请求并记录自应用程序启动以来被访问的次数。
程序8.3 MyRequestListener.java
下面是一个测试JSP页面:
程序8.4 onlineCount.jsp;8.1.3 监听会话事件;1. 处理HttpSessionEvent事件;2. 处理会话属性事件;HttpSessionBindingEvent类中定义了下面三个方法。
public HttpSession getSession():返回发生改变的会话对象。
public String getName():返回绑定到会话对象或从会话对象解除绑定的属性名。
public Object getValue():返回在会话对象上添加、删除或替换的属性值。;下面定义的监听器类实现了HttpSessionListener接口,它用来监视当前所有会话对象。当一个会话对象创建时,将其添加到一个ArrayList对象中并将其设置为ServletContext作用域的属性以便其他资源可以访问。当销毁一个会话对象时,从ArrayList中删除会话。
程序8.5 MySessionListener.java
程序8.6 sessionDisplay.jsp;3. 处理会话属性绑定事件;下面定义的User类实现了HttpSessionBindingListener接口。当将该类的一个对象绑定到会话对象上时,容器将调用valueBound(),当从会话对象上删除该类的对象时,容器将调用valueUnbound(),这里向日志文件写入有关信息。
程序8.7 User.java
程序从HttpSessionBindingEvent对象中检索会话对象,从会话对象中得到ServletContext对象并使用log()登录消息。;下面是一个Servlet,它接受登录用户的用户名和口令,然后创建一个User对象并将其绑定到会话对象上。
程序8.8 LoginServlet.java
; 8.1.4 事件监听器的注册 ;在web.xml文件中并没有指定哪个监听器类处理哪个事件,这是因为当容器需要处理某种事件时,它能够找到有关的类和方法。容器实例化指定的类并检查类实现的全部接口。对每个相关的接口,它都向各自的监听器列表中添加一个实例。容器按照DD文件中指定的类的顺序将事件传递给监听器。这些类必须存放在WEB-INF\classes目录中或者与其他Servlet类一起打包在JAR文件中。
提示:可以在一个类中实现多个监听器接口。这样,在部署描述文件中就只需要一个listener元素。容器就仅创建该类的一个实例并把所有的事件都发送给该实例。;8.2 Web过滤器;8.2.1 什么是过滤器;8.2.1 什么是过滤器;1. 过滤器是如何工作的;2. 过滤器的用途;8.2.2 过滤器API;1. Filter接口;doFilter()是实现过滤的方法。如果客户请求的资源与该过滤器关联,容器将调用该方法,格式如下:
public void doFilter(ServletRequest request,
文档评论(0)