最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

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

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

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

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

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


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

    查看全部
  • 監(jiān)聽(tīng)域?qū)ο笾械膶傩缘脑黾雍蛣h除的事件監(jiān)聽(tīng)器 ServletContext、HttpSession、ServletRequest對(duì)象的中屬性的增加和刪除有單獨(dú)的事件監(jiān)聽(tīng)器 包括 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是請(qǐng)求的參數(shù)值,如www.immoc.com/username=imooc。 request——request request.getSession()——session request.getSession().getServletContext()——application

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

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

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

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

    request監(jiān)聽(tīng)的是用戶的每一個(gè)訪問(wèn)請(qǐng)求。


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

    查看全部
  • 監(jiān)聽(tīng)器分類: 1.按監(jiān)聽(tīng)器的對(duì)象劃分: a 用戶監(jiān)聽(tīng)?wèi)?yīng)用程序環(huán)境對(duì)象(ServletContext)的時(shí)間監(jiān)聽(tīng)器 b 用于監(jiān)聽(tīng)用戶會(huì)話對(duì)象(HttpSession)的事件監(jiān)聽(tīng)器 c 用于監(jiān)聽(tīng)請(qǐng)求消息對(duì)象(ServletRequest)的事件監(jiān)聽(tīng)器。 2.按事件劃分 a 監(jiān)聽(tīng)域?qū)ο笞陨淼膭?chuàng)建和銷毀的事件監(jiān)聽(tīng)器 b 監(jiān)聽(tīng)域?qū)ο笾械膶傩缘脑黾雍蛣h除的事件監(jiān)聽(tīng)器 c 監(jiān)聽(tīng)綁定到HttpSession域中的某個(gè)對(duì)象的狀態(tài)的事件監(jiān)聽(tīng)器 ServletContext的創(chuàng)建和銷毀 實(shí)現(xiàn)ServletContextListener接口用于監(jiān)聽(tīng)它的創(chuàng)建和銷毀事件 一個(gè)項(xiàng)目中可以有多個(gè)ServletContextListener,但是只有一個(gè)ServletContext對(duì)象 有兩個(gè)事件處理方法: (1)contextInitialized方法: public void contextInitialized( ServletContextEvent sce ) ServletContext創(chuàng)建時(shí)調(diào)用 參數(shù) ServletContextEvent 事件對(duì)象,可以獲取ServletContext對(duì)象以及一些初始化參數(shù) 例如: 1.獲取ServletContext對(duì)象: 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銷毀時(shí)調(diào)用 主要用于數(shù)據(jù)庫(kù)鏈接關(guān)閉時(shí)釋放一些資源,以免過(guò)度的占用。

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

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

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

    查看全部

舉報(bào)

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

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

微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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

友情提示:

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