乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      web.xml中l(wèi)istener作用及使用

       Erica_Shea 2015-01-05

      一.WebContextLoaderListener 監(jiān)聽類
      它能捕捉到服務器的啟動和停止,在啟動和停止觸發(fā)里面的方法做相應的操作!
      它必須在web.xml 中配置才能使用,是配置監(jiān)聽類的

      二.下面是搜集的一些listener方面的知識
      簡例一
      監(jiān)聽用戶上線與退出,顯示在線用戶

      1、登陸頁面 Login.jsp

      <%@page pageEncoding="gb2312" contentType="text/html; charset=gb2312" %>
      <%
      session=request.getSession(false);
      if(session!=null)session.invalidate();
      %>
      <html>
      <head><title></title></head>
      <body>
      <form action="isOnline.jsp" method="post">
      用戶名:<input type="text" name="uName"/>
      <input type="submit" value="上線">
      </form>
      </body>
      </html>

      2、控制頁面(只是為了說明監(jiān)聽器問題,所以簡單了點...) isOnline.jsp

      <%@page pageEncoding="gb2312" contentType="text/html; charset=gb2312" %>
      <html>
      <head><title></title></head>
      <body>
      <%
      session=request.getSession();
      session.setAttribute("userName",request.getParameter("uName"));
      response.sendRedirect("showOnline.jsp");
      %>
      </body>
      </html>


      3、顯示頁面 showOnline.jsp

      <%@page pageEncoding="gb2312" contentType="text/html; charset=gb2312" import="java.util.ArrayList" %>
      <html>
      <head><title></title></head>
      <body>
      <%
      ArrayList showList=(ArrayList)(getServletContext().getAttribute("list"));
      out.print("在線人數(shù) "+showList.size()+"<br>");
      for(int i=0;i<showList.size();i++){
      out.print(showList.get(i)+"在線"+"<br>");
      }
      %>
      <br>
      <a href="Login.jsp">退出</a>
      </body>
      </html>

      4、配置頁面 web.xml

      <?xml version="1.0" encoding="gb2312"?>
      <!DOCTYPE web-app
          PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
          "http://java./dtd/web-app_2_3.dtd">
      <web-app>
      <listener>
          <listener-class>org.xiosu.listener.onlineListener</listener-class>
      </listener>
      </web-app>

      5、監(jiān)聽器 onlineListener.java

      package org.xiosu.listener;

      import java.util.ArrayList;
      import javax.servlet.ServletContext;
      import javax.servlet.http.HttpSessionAttributeListener;
      import javax.servlet.http.HttpSessionBindingEvent;
      import javax.servlet.http.HttpSessionEvent;
      import javax.servlet.http.HttpSessionListener;

      public class onlineListener implements HttpSessionListener,
      HttpSessionAttributeListener {
      // 參數(shù)
      ServletContext sc;
      ArrayList list = new ArrayList();
      // 新建一個session時觸發(fā)此操作
      public void sessionCreated(HttpSessionEvent se) {
      sc=se.getSession().getServletContext();
      System.out.println("新建一個session");
      }
      // 銷毀一個session時觸發(fā)此操作
      public void sessionDestroyed(HttpSessionEvent se) {
      System.out.println("銷毀一個session");
      if (!list.isEmpty()) {
         list.remove((String) se.getSession().getAttribute("userName"));
         sc.setAttribute("list", list);
      }
      }
      // 在session中添加對象時觸發(fā)此操作,在list中添加一個對象
      public void attributeAdded(HttpSessionBindingEvent sbe) {
      list.add((String) sbe.getValue());
      sc.setAttribute("list", list);
      }
      // 修改、刪除session中添加對象時觸發(fā)此操作
      public void attributeRemoved(HttpSessionBindingEvent arg0) {
      }
      public void attributeReplaced(HttpSessionBindingEvent arg0) {
      }
      }


      說明:本例只為簡單介紹監(jiān)聽器,并未進行安全方面設置。

      監(jiān)聽器也叫Listener,是Servlet的監(jiān)聽器,它可以監(jiān)聽客戶端的請求、服務端的操作等。通過監(jiān)聽器,可以自動激發(fā)一些操作,比如監(jiān)聽在線的用 戶的數(shù)量。當增加一個HttpSession時,就激發(fā)sessionCreated(HttpSessionEvent   se)方法,這樣
      就可以給在線人數(shù)加1。常用的監(jiān)聽接口有以下幾個:
      ServletContextAttributeListener監(jiān)聽對ServletContext屬性的操作,比如增加、刪除、修改屬性。
      ServletContextListener監(jiān)聽ServletContext。當創(chuàng)建ServletContext時,激發(fā) contextInitialized(ServletContextEvent   sce)方法;當銷毀ServletContext時,激發(fā)contextDestroyed(ServletContextEvent   sce)方法。
      HttpSessionListener監(jiān)聽HttpSession的操作。當創(chuàng)建一個Session時,激發(fā)session   Created(HttpSessionEvent   se)方法;當銷毀一個Session時,激發(fā)sessionDestroyed   (HttpSessionEvent   se)方法。
      HttpSessionAttributeListener監(jiān)聽HttpSession中的屬性的操作。當在Session增加一個屬性時,激發(fā) attributeAdded(HttpSessionBindingEvent   se)   方法;當在Session刪除一個屬性時,激發(fā)attributeRemoved(HttpSessionBindingEvent   se)方法;當在Session屬性被重新設置時,激發(fā)attributeReplaced(HttpSessionBindingEvent   se)   方法。
      example:隨服務器啟動
      web-app>

            com.tb.listener.CountStartListener


      package com.tb.listener;
      import javax.servlet.ServletContextEvent;
      import javax.servlet.ServletContextListener;
      import javax.servlet.http.HttpServlet;
      import com.tb.timertask.DoCountTask;
      public class CountStartListener extends HttpServlet implements ServletContextListener
      {
      private static final long serialVersionUID = 1824920962239905170L;
      public CountStartListener()
      {
         // TODO Auto-generated constructor stub
      }
      public void contextDestroyed(ServletContextEvent arg0)
      {
         // TODO Auto-generated method stub
      }
         public void contextInitialized(ServletContextEvent arg0)
        
         DoCountTask.dotask();
      }
      }


      概述:

      Servlet監(jiān)聽器用于監(jiān)聽一些重要事件的發(fā)生,監(jiān)聽器對象可以在事情發(fā)生前、發(fā)生后可以做一些必要的處理。

      接口:

      目前Servlet2.4和JSP2.0總共有8個監(jiān)聽器接口和6個Event類,其中HttpSessionAttributeListener與

      HttpSessionBindingListener 皆使用HttpSessionBindingEvent;HttpSessionListener和 HttpSessionActivationListener則都使用HttpSessionEvent;其余Listener對應的Event如下所示:

       

      Listener接口

      Event類

      ServletContextListener

      ServletContextEvent

      ServletContextAttributeListener

      ServletContextAttributeEvent

      HttpSessionListener

      HttpSessionEvent

      HttpSessionActivationListener

      HttpSessionAttributeListener

      HttpSessionBindingEvent

      HttpSessionBindingListener

      ServletRequestListener

      ServletRequestEvent

      ServletRequestAttributeListener

      ServletRequestAttributeEvent

      分別介紹:

      一 ServletContext相關監(jiān)聽接口

      補充知識:

      通過ServletContext 的實例可以存取應用程序的全局對象以及初始化階段的變量。

      在JSP文件中,application 是 ServletContext 的實例,由JSP容器默認創(chuàng)建。Servlet 中調用 getServletContext()方法得到 ServletContext 的實例。

      注意:

      全局對象即Application范圍對象,初始化階段的變量指在web.xml中,經(jīng)由<context-param>元素所設定的變量,它的范圍也是Application范圍,例如:

      <context-param>

      <param-name>Name</param-name>

      <param-value>browser</param-value>

      </context-param>

      當容器啟動時,會建立一個Application范圍的對象,若要在JSP網(wǎng)頁中取得此變量時:

      String name = (String)application.getInitParameter("Name");

      或者使用EL時:

      ${initPara.name}

      若是在Servlet中,取得Name的值方法:

      String name = (String)ServletContext.getInitParameter("Name");

      1.ServletContextListener:

      用于監(jiān)聽WEB 應用啟動和銷毀的事件,監(jiān)聽器類需要實現(xiàn)javax.servlet.ServletContextListener 接口。

      ServletContextListener 是 ServletContext 的監(jiān)聽者,如果 ServletContext 發(fā)生變化,如服務器啟動時 ServletContext 被創(chuàng)建,服務器關閉時 ServletContext 將要被銷毀。

      ServletContextListener接口的方法:

      void contextInitialized(ServletContextEvent sce)

      通知正在接受的對象,應用程序已經(jīng)被加載及初始化。

      void contextDestroyed(ServletContextEvent sce)

      通知正在接受的對象,應用程序已經(jīng)被載出。

      ServletContextEvent中的方法:

      ServletContext getServletContext()

      取得ServletContext對象

      2.ServletContextAttributeListener:用于監(jiān)聽WEB應用屬性改變的事件,包括:增加屬性、刪除屬性、修改屬性,監(jiān)聽器類需要實現(xiàn)javax.servlet.ServletContextAttributeListener接口。

      ServletContextAttributeListener接口方法:

      void attributeAdded(ServletContextAttributeEvent scab)

      若有對象加入Application的范圍,通知正在收聽的對象

      void attributeRemoved(ServletContextAttributeEvent scab)

      若有對象從Application的范圍移除,通知正在收聽的對象

      void attributeReplaced(ServletContextAttributeEvent scab)

      若在Application的范圍中,有對象取代另一個對象時,通知正在收聽的對象

      ServletContextAttributeEvent中的方法:

      java.lang.String getName()

      回傳屬性的名稱

      java.lang.Object getValue()

      回傳屬性的值

      二、HttpSession相關監(jiān)聽接口

      1.HttpSessionBindingListener接口

      注意:HttpSessionBindingListener接口是唯一不需要再web.xml中設定的Listener

      當我們的類實現(xiàn)了HttpSessionBindingListener接口后,只要 對象加入 Session范圍(即調用HttpSession對象的setAttribute方法的時候)或從Session范圍中移出(即調用 HttpSession對象的 removeAttribute方法的時候或Session Time out的時候)時,容器分別會自動調用下列兩個方法:

      void valueBound(HttpSessionBindingEvent event)

      void valueUnbound(HttpSessionBindingEvent event)

      思考:如何實現(xiàn)記錄網(wǎng)站的客戶登錄日志, 統(tǒng)計在線人數(shù)?

      2.HttpSessionAttributeListener接口

      HttpSessionAttributeListener監(jiān)聽HttpSession中的屬性的操作。

      當在Session增加一個屬性時,激發(fā) attributeAdded(HttpSessionBindingEvent se) 方法;當在Session刪除一個屬性時,激發(fā)attributeRemoved(HttpSessionBindingEvent se)方法;當在Session屬性被重新設置時,激發(fā)attributeReplaced(HttpSessionBindingEvent se) 方法。這和ServletContextAttributeListener比較類似。

      3.HttpSessionListener接口

      HttpSessionListener監(jiān)聽 HttpSession的操作。當創(chuàng)建一個Session時,激發(fā)session Created(HttpSessionEvent se)方法;當銷毀一個Session時,激發(fā)sessionDestroyed (HttpSessionEvent se)方法。

      4.HttpSessionActivationListener接口

      主要用于同一個Session轉移至不同的JVM的情形。

      四、ServletRequest監(jiān)聽接口

      1.ServletRequestListener接口

      和ServletContextListener接口類似的,這里由ServletContext改為ServletRequest

      2.ServletRequestAttributeListener接口

      和ServletContextListener接口類似的,這里由ServletContext改為ServletRequest

      有的listener可用于統(tǒng)計網(wǎng)站在線人數(shù)及訪問量。 如下:

      服務器啟動時(實現(xiàn)ServletContextListener監(jiān)聽器contextInitialized方法),讀取數(shù)據(jù)庫,并將其用一個計數(shù)變量保存在application范圍內(nèi)

      session創(chuàng)建時(實現(xiàn)HttpSessionListener監(jiān)聽器sessionCreated方法),讀取計數(shù)變量加1并重新保存

      服務器關閉時(實現(xiàn)ServletContextListener監(jiān)聽器contextDestroyed方法),更新數(shù)據(jù)庫


      轉自: http://www./wx886104/archive/2010/06/01/322419.html

       

            http://hht83.blog.163.com/blog/static/44037112008324232278/

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多