亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

JAVA Web開發技術應用——監聽器

難度初級
時長 1小時30分
學習人數
綜合評分9.70
269人評價 查看評價
9.8 內容實用
9.7 簡潔易懂
9.6 邏輯清晰
  • 監聽器總結續 二、Listenner的注冊 Javaweb的這些特別的監聽器注冊比較簡單,因為ServletRequest、HttpSession、ServletContext對象都是容器創建的,所以需要它們的監聽器的話,只需要在應用的web-info的web.xml里配置即可: <listener> <listener-class>com.test.listener.MyHttpSessionAttributeListener</listener-class> <listener-class>com.test.listener.MyServletContextAttributeListener</listener-class> <!-- ?多個實現相同的Listenner接口,在執行時是按web.xml注冊出現的來決定。 --> </listener> 注意:感知型監聽器HttpSessionBindingListener、HttpSessionActivationListener不需要注冊。 三、應用場景: 由于ervletRequest、HttpSession、ServletContext對象都是容器創建的,什么時候創建,用戶都不知道。通過實現這些對象的監聽器后,就可以得知了。比如: 1>在ServletContextLintener監聽器的contextInitialized方法中,進行應用級的資源初始化以便提高效率,在contextDestroyed方法中對應用級的資源進行釋放。 2>又比如web應用中,會存在會話,通常的作法是將當前登錄的用戶存放在session會話中。那么如何統計在線人數話,如何顯示出當前登錄的用戶呢。如何踢出某些已登錄的用戶呢。就可以通過HttpSessionAttributeListener監聽器的attributeAdded方法,等等。 四、優先級順序 ? 監聽器->過濾器->Servlet 五、在Servlet3.0下的使用 ? 通過在類前添加注解@WebListener即可,不用在web.xml中配置,在servlet3.0中監聽器沒有順序
    查看全部
    0 采集 收起 來源:監聽器總結

    2019-04-01

  • 監聽器總結:
    一、監聽器分類
    在Servlet規范中定義了多種類型的監聽器,它們用于監聽的事件源分別為SerlvetConext,HttpSession和ServletRequest這三個域對象。
    Servlet規范針對這三個對象上的操作,又把這多種類型的監聽器劃分為三種類型:
    1>監聽三個域對象創建和銷毀的事件監聽器
    2>監聽域對象中屬性的增加和刪除的事件監聽器
    3>監聽綁定到HttpSession域中的某個對象的狀態的時間監聽器。
    a、如三個域對象的創建與銷毀方法簽名:
    ServletRequestListener有以下兩個方法
    void requestDestroyed(ServletRequestEvent sre)
    void requestInitialized(ServletRequestEvent sre)
    HttpSessionListener有以下兩個方法
    void sessionCreated(HttpSessionEvent se)
    void sessionDestroyed(HttpSessionEvent se)
    ServletContextListener
    void contextDestroyed(ServletContextEvent sce)
    void contextInitialized(ServletContextEvent sce)
    b、三個類型對象域中屬性增、刪、改的監聽器(3個)
    ServletContextAttributeListener,
    HttpSessionAttributeListener,
    ServletRequestAttributeListener
    c、感知型監聽器(2個):監聽自己何時被幫到session上,何時解綁;何時被鈍化,何時被活化(序列化到某個存儲設置中)。
    注意:這種監聽器不需要注冊。某個javabean實現這些接口后就可以監聽何時被綁定、解綁或被激活或鈍化。
    HttpSessionBindingListener:實現該接口的類,能檢測自己何時被Httpsession綁定和解綁
    HttpSessionActivationListener:實現該接口的類(要求些javabean必須是實現了Serializable接口的),能監測自己何時隨著HttpSession一起激活和鈍化。

    查看全部
    0 采集 收起 來源:監聽器總結

    2019-04-01

  • @統計在線用戶及人數——(下)
    @MyServletRequestListener.java
    @WebListener
    public class MyServletRequestListener implements ServletRequestListener {

    private ArrayList<User> userList;//在線用戶List

    @Override
    public void requestDestroyed(ServletRequestEvent arg0) {

    }

    @Override
    public void requestInitialized(ServletRequestEvent arg0) {

    userList = (ArrayList<User>)arg0.getServletContext().getAttribute("userList");

    if(userList==null)
    userList = new ArrayList<User>();

    HttpServletRequest request = (HttpServletRequest) arg0.getServletRequest();
    String sessionIdString = request.getSession().getId();

    if(SessionUtil.getUserBySessionId(userList,sessionIdString)==null){
    User user = new User();
    user.setSessionIdString(sessionIdString);
    user.setFirstTimeString(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
    user.setIpString(request.getRemoteAddr());
    userList.add(user);
    }
    arg0.getServletContext().setAttribute("userList", userList);
    }
    }
    查看全部
  • @統計在線用戶及人數——(中)
    @MyHttpSessionListener.java
    @WebListener
    public class MyHttpSessionListener implements HttpSessionListener {

    private int userNumber = 0;

    @Override
    public void sessionCreated(HttpSessionEvent arg0) {
    userNumber++;
    arg0.getSession().getServletContext().setAttribute("userNumber", userNumber);
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent arg0) {
    userNumber--;
    arg0.getSession().getServletContext().setAttribute("userNumber", userNumber);

    ArrayList<User> userList = null;//在線用戶List

    userList = (ArrayList<User>)arg0.getSession().getServletContext().getAttribute("userList");

    if(SessionUtil.getUserBySessionId(userList, arg0.getSession().getId())!=null){
    userList.remove(SessionUtil.getUserBySessionId(userList, arg0.getSession().getId()));
    }
    }
    }
    查看全部
  • @統計在線用戶及人數——(上)
    @index.jsp
    當前在線用戶人數:${userNumber}
    <hr>
    <%
    ArrayList<User> userList = (ArrayList<User>) request.getServletContext().getAttribute("userList");
    if (userList != null) {
    for (int i = 0; i < userList.size(); i++) {
    User user = userList.get(i);
    %>
    IP:<%=user.getIpString()%>
    <hr>
    FirstTime:<%=user.getFirstTimeString()%>
    <hr>
    SessionId:<%=user.getSessionIdString()%>
    <hr>
    <%
    }
    }
    %>

    @SessionUtil.java
    public class SessionUtil {

    public static Object getUserBySessionId(ArrayList<User> userList, String sessionIdString) {
    for (int i = 0; i < userList.size(); i++) {
    User user = userList.get(i);
    if (user.getSessionIdString().equals(sessionIdString)) {
    return user;
    }
    }
    return null;
    }
    }

    @User.java
    public class User {
    private String sessionIdString;
    private String ipString;
    private String firstTimeString;
    //setter、getter...
    }

    Ps:session是沒有獲取IP地址方法,但request有。
    查看全部
  • @統計在線用戶及人數 1.統計在線人數:使用ServletSessionListener監聽器的初始化和銷毀實現增加和刪除 2.在線用戶信息:使用ServletRequestListener監聽器的初始化實現獲取用戶信息: HttpServletRequest對象.getSession().getId();//獲取session的ID HttpServletRequest對象..getRemoteAddr();//獲取用戶ip地址 3.保存:保存于全局的getSession.getServletContext().getAttribute("","")里面 4.${userNumber}是EL表達式,可以獲取userNumber的值 EL表達式:取出某一范圍中名稱為username的變量,由于沒有指定哪一個范圍的username,所以它會依序從Page、Request、Session、Application范圍查找。 如果找到username,則直接回傳,如果沒有找到時,則回傳null。

    查看全部
  • @Listener---Servlet3.0使用前提

    1、使用Servlet3.0新標準Jar包;
    2、JDK版本必須1.6以上;
    3、編譯器的編譯級別為6.0;
    4、在web.xml文件中,使用3.0規范;
    5、使用支持servlet3.0特性的web容器,比如tomcat7.0


    查看全部
  • 監聽器的分類-按監聽事件劃分: 1、監聽器綁定到HttpSession域中的某個對象的狀態事件監聽器; 2、HttpSession中的對象狀態: (1)綁定:通過setAttribute(); (2)解除綁定:removeAttribute(); (3)鈍化:將session對象序列化到存儲設備上 (4)活化:將session對象從存儲設備上進行恢復 3、session鈍化機制: (1)把服務器中不常使用的session對象暫時的序列化到系統文件或是數據庫中,當使用時反序列化到內存中,整個過程有服務器自動完成。 (2)session的鈍化機制由SessionManager管理 4、實現綁定和解除綁定,創建一個【普通的javabean】綁定和解除綁定需實現【HttpSessionBindingListener】接口; 實現鈍化和活化,需實現HttpSessionActivationListener接口和Serializable接口

    查看全部
  • 監聽域對象中的屬性的增加和刪除的事件監聽器 ServletContext、HttpSession、ServletRequest對象的中屬性的增加和刪除有單獨的事件監聽器 包括 attributeAdded() attributeRemoved() attributeReplaced() @init.jsp <% ? request.setAttribute("requestName", "requestValue"); ? request.getSession().setAttribute("sessionName", "sessionValue"); ? request.getSession().getServletContext().setAttribute("applicationName", "applicationValue"); ? //request.setAttribute("requestName", "requestValue");//只有這種辦法可以調用request的replace。 //request.removeAttribute("requestName");//可以調用request的remove。 ? %> ? @destory.jsp <% ? request.removeAttribute("requestName"); ? request.getSession().removeAttribute("sessionName"); ? request.getSession().getServletContext().removeAttribute("applicationName"); ? %> ? ? request.getAttribute的值獲得是從request.setAttribute的值,不能獲取類似www.immoc.com/username=imooc的參數值; request.getParameter是請求的參數值,如www.immoc.com/username=imooc。 request——request request.getSession()——session request.getSession().getServletContext()——application

    查看全部
  • @Listener---ServletRequest的事件監聽器

    創建和銷毀:
    一個ServletRequest可以注冊多個ServletRequestListener接口。

    有兩個事件處理方法:
    requestInitialized方法:
    ????public void requestInitialized(ServletRequestEvent sre)
    ????request創建時調用,獲取ServletRequest對象和傳遞的參數。
    requestDestroyed方法:
    ????ublic void requestDestroyed(ServletRequestEvent sre)
    ????request銷毀時調用

    主要用途:
    ????讀取參數
    ????記錄訪問歷史

    request監聽的是用戶的每一個訪問請求。


    查看全部
  • HttpSession的創建和銷毀 實現HttpSessionListener接口用于監聽它的創建和銷毀事件 一個HttpSession可以注冊多個HttpSessionListener接口, 一個web應用中可以有多個HttpSession對象 有兩個事件處理方法: sessionCreated方法: public void sessionCreated(HttpSessionEvent se) session創建時調用 sessionDestroyed方法: public void sessionDestroyed(HttpSessionEvent se) session銷毀時調用 HttpSessionListener的主要用途: 統計在線人數 記錄訪問日志,記錄訪問時間、訪問的ip /** * 銷毀session * 1.關閉服務器 * 2.關閉瀏覽器 * 3.不關閉瀏覽器,session超時 */ 不關閉瀏覽器,session超時 可以在web.xml配置session超時的時間 <session-config> <session-timeout>0</session-timeout> </session-config> 0:session沒有超時的限制 1:session超時1分鐘后銷毀,但是并不是準確的一分鐘

    查看全部
  • 監聽器分類: 1.按監聽器的對象劃分: a 用戶監聽應用程序環境對象(ServletContext)的時間監聽器 b 用于監聽用戶會話對象(HttpSession)的事件監聽器 c 用于監聽請求消息對象(ServletRequest)的事件監聽器。 2.按事件劃分 a 監聽域對象自身的創建和銷毀的事件監聽器 b 監聽域對象中的屬性的增加和刪除的事件監聽器 c 監聽綁定到HttpSession域中的某個對象的狀態的事件監聽器 ServletContext的創建和銷毀 實現ServletContextListener接口用于監聽它的創建和銷毀事件 一個項目中可以有多個ServletContextListener,但是只有一個ServletContext對象 有兩個事件處理方法: (1)contextInitialized方法: public void contextInitialized( ServletContextEvent sce ) ServletContext創建時調用 參數 ServletContextEvent 事件對象,可以獲取ServletContext對象以及一些初始化參數 例如: 1.獲取ServletContext對象: ServletContext sc = sce.getServletContext(); 獲取初始化參數:sc.getInitParmeter("參數名稱"); 初始化參數在web.xml中配置: <context-param> <param-name>initParam</param-name> <param-value>imooc</param-value> </context-param> 2.設置ServletContext屬性:sc.setAttribute("name",obj); 然后在其它地方獲取getAttribute("name") (2)contextDestroyed方法: public void contextDestroyed( ServletContextEvent sce ) ServletContext銷毀時調用 主要用于數據庫鏈接關閉時釋放一些資源,以免過度的占用。

    查看全部
  • 監聽器的啟動順序: 監聽器按照注冊順序從上到下執行 優先級: 監聽器>過濾器>Servlet

    查看全部
  • 實現了ServletContextListener接口的類,即創建了一個監聽事件源為ServletContext的監聽器,當服務器啟動時,便會自動創建一個application對象,此時會調用此監聽器的初始化方法.可以通過初始化方法的參數來對application對象做出一些操作.當服務器關閉,application對象銷毀時,也會調用監聽器的銷毀方法,也可以通過參數來作出一些操作.初始化方法和銷毀方法中的參數是ServletContextEvent的對象,因此可以通過參數來獲取到application對象來對其操作. 實現了ServletRequestListener接口的類,即創建了一個監聽事件源為ServletRequest的監聽器,并且當用戶發出請求時,此時會調用此監聽器的初始化方法,可以通過初始化方法的參數作出一些操作,當request銷毀時,也會調用監聽器的銷毀方法,也可以通過參數作出相應的操作.初始化方法和銷毀方法中的參數是ServletRequestEvent的對象,因此可以通過參數來獲取到request對象來對其操作. 實現了HttpSessionListener接口的類,即創建了一個監聽事件源為HttpSession的監聽器,并且當session創建時,此時會調用此監聽器的初始化方法.可以通過初始化方法的參數作出一些操作,當session銷毀時,也會調用監聽器的銷毀方法.也可以通過初始化方法的參數作出一些操作,初始化方法和銷毀方法中的參數是HttpSessionEvent的對象,因此可以通過參數來獲取到session對象來對其操作. 實現了ServletContextListener、ServletRequestListener、HttpSessionListener接口的監聽器是監聽域對象自身的創建與銷毀的事件. ServletContext接口實現了ServletContextListener接口. ServletRequest接口實現了ServletRequestListener接口. HttpSession接口實現了HttpSessionListener接口.

    查看全部
  • Web監聽器的用途: 1,統計在線人數和在線用戶。 2,系統啟動時加載初始化信息。 3,統計網站訪問量。 4,跟Spring結合。

    查看全部

舉報

0/150
提交
取消
課程須知
親,要學習本門課程需要對JSP和Servlet有所了解呦。如未學習上述知識,可移步網站相關課程。
老師告訴你能學到什么?
通過對本課程的學習,可以掌握監聽器的基礎知識,深入了解監聽器的處理機制和分類方式,并可以讓自己更快的動手編寫監聽器的例子。

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!