第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

JAVA Web開發(fā)技術(shù)應(yīng)用——監(jiān)聽器

難度初級
時長 1小時30分
學(xué)習(xí)人數(shù)
綜合評分9.70
269人評價 查看評價
9.8 內(nèi)容實用
9.7 簡潔易懂
9.6 邏輯清晰
  • 監(jiān)聽器總結(jié)續(xù) 二、Listenner的注冊 Javaweb的這些特別的監(jiān)聽器注冊比較簡單,因為ServletRequest、HttpSession、ServletContext對象都是容器創(chuàng)建的,所以需要它們的監(jiān)聽器的話,只需要在應(yīng)用的web-info的web.xml里配置即可: <listener> <listener-class>com.test.listener.MyHttpSessionAttributeListener</listener-class> <listener-class>com.test.listener.MyServletContextAttributeListener</listener-class> <!-- ?多個實現(xiàn)相同的Listenner接口,在執(zhí)行時是按web.xml注冊出現(xiàn)的來決定。 --> </listener> 注意:感知型監(jiān)聽器HttpSessionBindingListener、HttpSessionActivationListener不需要注冊。 三、應(yīng)用場景: 由于ervletRequest、HttpSession、ServletContext對象都是容器創(chuàng)建的,什么時候創(chuàng)建,用戶都不知道。通過實現(xiàn)這些對象的監(jiān)聽器后,就可以得知了。比如: 1>在ServletContextLintener監(jiān)聽器的contextInitialized方法中,進(jìn)行應(yīng)用級的資源初始化以便提高效率,在contextDestroyed方法中對應(yīng)用級的資源進(jìn)行釋放。 2>又比如web應(yīng)用中,會存在會話,通常的作法是將當(dāng)前登錄的用戶存放在session會話中。那么如何統(tǒng)計在線人數(shù)話,如何顯示出當(dāng)前登錄的用戶呢。如何踢出某些已登錄的用戶呢。就可以通過HttpSessionAttributeListener監(jiān)聽器的attributeAdded方法,等等。 四、優(yōu)先級順序 ? 監(jiān)聽器->過濾器->Servlet 五、在Servlet3.0下的使用 ? 通過在類前添加注解@WebListener即可,不用在web.xml中配置,在servlet3.0中監(jiān)聽器沒有順序
    查看全部
  • 監(jiān)聽器總結(jié):
    一、監(jiān)聽器分類
    在Servlet規(guī)范中定義了多種類型的監(jiān)聽器,它們用于監(jiān)聽的事件源分別為SerlvetConext,HttpSession和ServletRequest這三個域?qū)ο蟆?br />Servlet規(guī)范針對這三個對象上的操作,又把這多種類型的監(jiān)聽器劃分為三種類型:
    1>監(jiān)聽三個域?qū)ο髣?chuàng)建和銷毀的事件監(jiān)聽器
    2>監(jiān)聽域?qū)ο笾袑傩缘脑黾雍蛣h除的事件監(jiān)聽器
    3>監(jiān)聽綁定到HttpSession域中的某個對象的狀態(tài)的時間監(jiān)聽器。
    a、如三個域?qū)ο蟮膭?chuàng)建與銷毀方法簽名:
    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、三個類型對象域中屬性增、刪、改的監(jiān)聽器(3個)
    ServletContextAttributeListener,
    HttpSessionAttributeListener,
    ServletRequestAttributeListener
    c、感知型監(jiān)聽器(2個):監(jiān)聽自己何時被幫到session上,何時解綁;何時被鈍化,何時被活化(序列化到某個存儲設(shè)置中)。
    注意:這種監(jiān)聽器不需要注冊。某個javabean實現(xiàn)這些接口后就可以監(jiān)聽何時被綁定、解綁或被激活或鈍化。
    HttpSessionBindingListener:實現(xiàn)該接口的類,能檢測自己何時被Httpsession綁定和解綁
    HttpSessionActivationListener:實現(xiàn)該接口的類(要求些javabean必須是實現(xiàn)了Serializable接口的),能監(jiān)測自己何時隨著HttpSession一起激活和鈍化。

    查看全部
  • @統(tǒng)計在線用戶及人數(shù)——(下)
    @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);
    }
    }
    查看全部
  • @統(tǒng)計在線用戶及人數(shù)——(中)
    @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()));
    }
    }
    }
    查看全部
  • @統(tǒng)計在線用戶及人數(shù)——(上)
    @index.jsp
    當(dāng)前在線用戶人數(shù):${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有。
    查看全部
  • @統(tǒng)計在線用戶及人數(shù) 1.統(tǒng)計在線人數(shù):使用ServletSessionListener監(jiān)聽器的初始化和銷毀實現(xiàn)增加和刪除 2.在線用戶信息:使用ServletRequestListener監(jiān)聽器的初始化實現(xiàn)獲取用戶信息: HttpServletRequest對象.getSession().getId();//獲取session的ID HttpServletRequest對象..getRemoteAddr();//獲取用戶ip地址 3.保存:保存于全局的getSession.getServletContext().getAttribute("","")里面 4.${userNumber}是EL表達(dá)式,可以獲取userNumber的值 EL表達(dá)式:取出某一范圍中名稱為username的變量,由于沒有指定哪一個范圍的username,所以它會依序從Page、Request、Session、Application范圍查找。 如果找到username,則直接回傳,如果沒有找到時,則回傳null。

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

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


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

    查看全部
  • 監(jiān)聽域?qū)ο笾械膶傩缘脑黾雍蛣h除的事件監(jiān)聽器 ServletContext、HttpSession、ServletRequest對象的中屬性的增加和刪除有單獨的事件監(jiān)聽器 包括 attributeAdded() attributeRemoved() attributeReplaced() @init.jsp <% ? request.setAttribute("requestName", "requestValue"); ? request.getSession().setAttribute("sessionName", "sessionValue"); ? request.getSession().getServletContext().setAttribute("applicationName", "applicationValue"); ? //request.setAttribute("requestName", "requestValue");//只有這種辦法可以調(diào)用request的replace。 //request.removeAttribute("requestName");//可以調(diào)用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的參數(shù)值; request.getParameter是請求的參數(shù)值,如www.immoc.com/username=imooc。 request——request request.getSession()——session request.getSession().getServletContext()——application

    查看全部
  • @Listener---ServletRequest的事件監(jiān)聽器

    創(chuàng)建和銷毀:
    一個ServletRequest可以注冊多個ServletRequestListener接口。

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

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

    request監(jiān)聽的是用戶的每一個訪問請求。


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

    查看全部
  • 監(jiān)聽器分類: 1.按監(jiān)聽器的對象劃分: a 用戶監(jiān)聽?wèi)?yīng)用程序環(huán)境對象(ServletContext)的時間監(jiān)聽器 b 用于監(jiān)聽用戶會話對象(HttpSession)的事件監(jiān)聽器 c 用于監(jiān)聽請求消息對象(ServletRequest)的事件監(jiān)聽器。 2.按事件劃分 a 監(jiān)聽域?qū)ο笞陨淼膭?chuàng)建和銷毀的事件監(jiān)聽器 b 監(jiān)聽域?qū)ο笾械膶傩缘脑黾雍蛣h除的事件監(jiān)聽器 c 監(jiān)聽綁定到HttpSession域中的某個對象的狀態(tài)的事件監(jiān)聽器 ServletContext的創(chuàng)建和銷毀 實現(xiàn)ServletContextListener接口用于監(jiān)聽它的創(chuàng)建和銷毀事件 一個項目中可以有多個ServletContextListener,但是只有一個ServletContext對象 有兩個事件處理方法: (1)contextInitialized方法: public void contextInitialized( ServletContextEvent sce ) ServletContext創(chuàng)建時調(diào)用 參數(shù) ServletContextEvent 事件對象,可以獲取ServletContext對象以及一些初始化參數(shù) 例如: 1.獲取ServletContext對象: ServletContext sc = sce.getServletContext(); 獲取初始化參數(shù):sc.getInitParmeter("參數(shù)名稱"); 初始化參數(shù)在web.xml中配置: <context-param> <param-name>initParam</param-name> <param-value>imooc</param-value> </context-param> 2.設(shè)置ServletContext屬性:sc.setAttribute("name",obj); 然后在其它地方獲取getAttribute("name") (2)contextDestroyed方法: public void contextDestroyed( ServletContextEvent sce ) ServletContext銷毀時調(diào)用 主要用于數(shù)據(jù)庫鏈接關(guān)閉時釋放一些資源,以免過度的占用。

    查看全部
  • 監(jiān)聽器的啟動順序: 監(jiān)聽器按照注冊順序從上到下執(zhí)行 優(yōu)先級: 監(jiān)聽器>過濾器>Servlet

    查看全部
  • 實現(xiàn)了ServletContextListener接口的類,即創(chuàng)建了一個監(jiān)聽事件源為ServletContext的監(jiān)聽器,當(dāng)服務(wù)器啟動時,便會自動創(chuàng)建一個application對象,此時會調(diào)用此監(jiān)聽器的初始化方法.可以通過初始化方法的參數(shù)來對application對象做出一些操作.當(dāng)服務(wù)器關(guān)閉,application對象銷毀時,也會調(diào)用監(jiān)聽器的銷毀方法,也可以通過參數(shù)來作出一些操作.初始化方法和銷毀方法中的參數(shù)是ServletContextEvent的對象,因此可以通過參數(shù)來獲取到application對象來對其操作. 實現(xiàn)了ServletRequestListener接口的類,即創(chuàng)建了一個監(jiān)聽事件源為ServletRequest的監(jiān)聽器,并且當(dāng)用戶發(fā)出請求時,此時會調(diào)用此監(jiān)聽器的初始化方法,可以通過初始化方法的參數(shù)作出一些操作,當(dāng)request銷毀時,也會調(diào)用監(jiān)聽器的銷毀方法,也可以通過參數(shù)作出相應(yīng)的操作.初始化方法和銷毀方法中的參數(shù)是ServletRequestEvent的對象,因此可以通過參數(shù)來獲取到request對象來對其操作. 實現(xiàn)了HttpSessionListener接口的類,即創(chuàng)建了一個監(jiān)聽事件源為HttpSession的監(jiān)聽器,并且當(dāng)session創(chuàng)建時,此時會調(diào)用此監(jiān)聽器的初始化方法.可以通過初始化方法的參數(shù)作出一些操作,當(dāng)session銷毀時,也會調(diào)用監(jiān)聽器的銷毀方法.也可以通過初始化方法的參數(shù)作出一些操作,初始化方法和銷毀方法中的參數(shù)是HttpSessionEvent的對象,因此可以通過參數(shù)來獲取到session對象來對其操作. 實現(xiàn)了ServletContextListener、ServletRequestListener、HttpSessionListener接口的監(jiān)聽器是監(jiān)聽域?qū)ο笞陨淼膭?chuàng)建與銷毀的事件. ServletContext接口實現(xiàn)了ServletContextListener接口. ServletRequest接口實現(xiàn)了ServletRequestListener接口. HttpSession接口實現(xiàn)了HttpSessionListener接口.

    查看全部
  • Web監(jiān)聽器的用途: 1,統(tǒng)計在線人數(shù)和在線用戶。 2,系統(tǒng)啟動時加載初始化信息。 3,統(tǒng)計網(wǎng)站訪問量。 4,跟Spring結(jié)合。

    查看全部

舉報

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

微信掃碼,參與3人拼團(tuán)

微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復(fù)購買,感謝您對慕課網(wǎng)的支持!