#Web系统与技术实验十_第1页
#Web系统与技术实验十_第2页
#Web系统与技术实验十_第3页
#Web系统与技术实验十_第4页
#Web系统与技术实验十_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验十 Servlet 事件处理网络 112 李海佩 2一、实验目的了解在哪些对象上可以产生事件;掌握 ServletContext 和 HttpSession 对象上的事件处理方法。了解在 ServletRequest 对象上的事件及处理方法。二、实验原理在 Web 应用程序中,事件的处理也是通过事件监听器接口处理的。Web 应用事件处理的原理为:当 Web 应用中某些状态改变时, Servlet 容器就产生某种事件,如 ServletContext 对象初始化时会产生 ServletContextEvent 事件,此时 Servlet 容器就会从注册的事件监听器 中寻找处理该事件的监听器对

2、象,并执行相应的代码。监听对象监听器接口监听事件ServletContextServletContextListenerServletContextAttributeListenerServletContextEventHttpSessionHttpSessionListenerServletContextAttributeEventHttpSessionEventHttpSessionActivationListenerHttpSessionAttributeListenerHttpSessionBindingEventHttpSessionBindingListenerServletReq

3、uestServletRequestListenerServletRequestAttributeListenerServletRequestEvent表 13.1 监听器接口与事件类ServletRequestAttributeEvent在 Servlet 2.4 规范中共定义了 6 种事件类型和 8 个事件监听器接口,它们可以处理三 种对象上的事件,如表 13.1 所示:三、实验内容与步骤 context = (Context arg0.getServletContext( 。(ServletContext context.removeAttribute(dataSource 。 (Ser

4、vletContext context.log( 应用程序已关闭: +new Date( 。public void contextInitialized(ServletContextEvent arg0 context = (Context arg0.getServletContext( 。 try if(context=null context = new InitialContext( 。 dataSource (DataSourcecontext.lookup(java:comp/env/jdbc/sampleDS 。 catch (Exception e (ServletContext

5、 context.log(Exception+e 。(ServletContext context.setAttribute(dataSource,dataSource 。 (ServletContext context.log( 应用程序已启动: +new Date( 。public void attributeAdded(ServletContextAttributeEvent arg0 context = (Context arg0.getServletContext( 。 (ServletContext context.log( 添 加 一 个 属 性 +arg0.getName(+:

6、+arg0.getValue( 。public void attributeRemoved(ServletContextAttributeEvent arg0 context = (Context arg0.getServletContext( 。 (ServletContext context.log( 删 除 一 个 属 性 +arg0.getName(+:+arg0.getValue( 。public void attributeReplaced(ServletContextAttributeEvent arg0 context = (Context arg0.getServletCon

7、text( 。 (ServletContext context.log( 替 换 一 个 属 性 +arg0.getName(+:+arg0.getValue( 。【步骤 2】注册监听器类。修改 web.xml 文件,加入下面代码:listener.MyListener【步骤 3】编写一个测试 Servlet。import java.io.* 。import java.util.Date 。import javax.servlet.* 。import javax.servlet.http.* 。public class EventTestServlet extends HttpServletS

8、ervletContext context =null 。public void init(context = getServletConfig(.getServletContext( 。public void doGet(HttpServletRequest request,HttpServletResponse responsethrows ServletException, IOException response.setContentType(text/html 。 PrintWriter out = response.getWriter( 。 out.println(Event Te

9、st 。 Integer anInteger =new Integer(100 。Date aDate = new Date( 。context.setAttribute(obj,anInteger 。 / 添加属性 context.setAttribute(obj,aDate 。 / 替换属性 context.removeAttribute(obj 。 / 删除属性 out.println(+ 已在 ServletContext 对象上添加、替换和删除了属性 。 out.println( 。out.close( 。【步骤 4】修改 web.xml ,加入下面代码:EventTestServl

10、et EventTestServletEventTestServlet /eventtest步骤 5】重新启动 Tomcat,然后使用下面 URL 访问 EventTestServlet :helloapp/eventtest额,因为 Tomcat 一直无法正常打开页面,路径是对的,自己演示不了。 显示界面如下:图 13.1 EventTestServlet 程序的运行结果步骤 6】检查日志文件打开 logs 目录中的 localhost.2018-05-15.log 日志文件 (HttpServletRequestpublicvoid requestInitialized(ServletRe

11、questEvent arg0 HttpServletRequest request = arg0.getServletRequest( 。if (request.getRequestURI(.equals( /helloapp/online count + 。, newarg0.getServletContext(.setAttribute( countInteger( count 。【步骤 2】注册事件监听器,在 web.xml 文件中加入下面代码:listener.MySessionListener【步骤 3】编写一个测试 Servlet ,如下所示:import java.io.* 。

12、import javax.servlet.* 。import javax.servlet.http.* 。public class OnlineCountServlet extends HttpServletpublic void doGet(HttpServletRequest request,HttpServletResponse responsethrows ServletException, IOException HttpSession session = request.getSession(true。ServletContext context = getServletConfi

13、g(.getServletContext( 。Integer count =(Integercontext.getAttribute(onlineCount 。 response.setContentType(text/html 。 charset=gb2312 。PrintWriter out = response.getWriter( 。 out.println(Session Event Test 。 out.println(+ 当前在线人数: +count+ 。out.println( 。out.close( 。步骤 4】修改 web.xml 文件,加入下面代码:OnlineCount

14、Servlet OnlineCountServletOnlineCountServlet /online【步骤 5】使用 URL 地址 http: /localhost:8080/ch10/online 访问 OnlineCountServlet 。再启动两个浏览器窗口访问该Servlet,计数器就会增加,而点击浏览器的“刷新”按钮,计数器不会增加 因为没有开始新会话)。图 13.2 OnlineCountServlet 程序的运行结果 publicvoidrequestInitialized(ServletRequestEvent arg0 HttpServletRequest reques

15、t = (HttpServletRequest arg0.getServletRequest( 。if (request.getRequestURI(.equals( /helloapp/listener_test.jsp count + 。arg0.getServletContext(.setAttribute( count , new Integer( count 。【步骤 2】注册监听器 listener.MyRequestListener 【步骤 3】编写一个 JSP页面 listener_test.jsp 。 Listener test欢迎您,您的 IP 地址是 % 自应用程序启动以来,该页面被访问了%

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论