servlet(二)、監(jiān)聽器javax.servlet.Filter-創(chuàng)新互聯(lián)

servlet(二)、監(jiān)聽器 javax.servlet.Filter

一、什么是監(jiān)聽器

javaWeb規(guī)范包括三個(gè)技術(shù)點(diǎn):servlet 、listener 、filter;監(jiān)聽器就是監(jiān)聽某個(gè)對(duì)象的的狀態(tài)變化的組件。監(jiān)聽器是一個(gè)java類,用來監(jiān)聽其他javaBean的變化。在javaWeb中監(jiān)聽器是用來監(jiān)聽三個(gè)對(duì)象(request、session、servletConfig)的狀態(tài)。監(jiān)聽器的相關(guān)概念事件源:
1、被監(jiān)聽的對(duì)象(三個(gè)域?qū)ο?request,session,servletContext)
2、監(jiān)聽器:監(jiān)聽事件源對(duì)象, 事件源對(duì)象的狀態(tài)的變化都會(huì)觸發(fā)監(jiān)聽器 。
3、注冊(cè)監(jiān)聽器:將監(jiān)聽器與事件源進(jìn)行綁定。
4、響應(yīng)行為:監(jiān)聽器監(jiān)聽到事件源的狀態(tài)變化時(shí),所涉及的功能代碼(程序員編寫代碼)

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、鎮(zhèn)雄網(wǎng)絡(luò)推廣、微信小程序開發(fā)、鎮(zhèn)雄網(wǎng)絡(luò)營(yíng)銷、鎮(zhèn)雄企業(yè)策劃、鎮(zhèn)雄品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們大的嘉獎(jiǎng);創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供鎮(zhèn)雄建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:muchs.cn

二、javaWeb的監(jiān)聽器

1、監(jiān)聽的域?qū)ο?/h5>

1) request
2) session
3) servletConfig

2、事件源和監(jiān)聽器綁定的過程

通過配置web.xmlwancheng

3、servlet提供的監(jiān)聽器

servlet提供了8個(gè)監(jiān)聽器

1) 第一類:監(jiān)聽三個(gè)域?qū)ο蟮膭?chuàng)建和銷毀的監(jiān)聽器3個(gè)

對(duì)象類型 對(duì)應(yīng)的監(jiān)聽器
ServletContextServletContextListener
HttpSessionHttpSessionListener
HttpServletRequestServletRequestListener

2) 第二類:監(jiān)聽三個(gè)域?qū)ο笞兏谋O(jiān)聽器(屬性添加,屬性移除,屬性替換)3個(gè)

對(duì)象類型 對(duì)應(yīng)的監(jiān)聽器
ServletContextServletContextAttributeListener
HttpSessionServletRequestAttributeListener
HttpServletRequestHttpSessionAttributeListener

3) 第三類:監(jiān)聽HttpSession對(duì)象中的JavaBean的狀態(tài)的改變.(綁定,解除綁定,鈍化和活化)2個(gè)

對(duì)象類型 對(duì)應(yīng)的監(jiān)聽器
HttpSessionHttpSessionBindingListener(綁定,解除綁定)
HttpSessionHttpSessionActivationListener(鈍化和活化)

三、監(jiān)聽實(shí)例——三大域?qū)ο蟮膭?chuàng)建與銷毀的監(jiān)聽器

1、ServletContextListener

ServletContextListener監(jiān)聽器的主要作用(相當(dāng)于監(jiān)聽tongcat啟動(dòng)和關(guān)閉):

1) 初始化的工作:初始化對(duì)象;初始化數(shù)據(jù)。比如加載數(shù)據(jù)庫(kù)驅(qū)動(dòng),對(duì)連接池的初始化。
2) 加載一些初始化的配置文件;比如spring的配置文件。
3) 任務(wù)調(diào)度(定時(shí)器Timer/TimerTask)

監(jiān)聽ServletContext域的創(chuàng)建與銷毀的監(jiān)聽器,Servlet域的生命周期:在服務(wù)器啟動(dòng)創(chuàng)建,服務(wù)器關(guān)閉時(shí)銷毀;監(jiān)聽器的編寫步驟:

1) 編寫一個(gè)監(jiān)聽器類去實(shí)現(xiàn)監(jiān)聽器接口
2) 覆蓋監(jiān)聽器的方法
3) 需要在web.xml中進(jìn)行配置(注冊(cè))

例子:

2、HttpSessionListener

監(jiān)聽Httpsession域的創(chuàng)建與銷毀的監(jiān)聽器。HttpSession對(duì)象的生命周期:第一次調(diào)用request.getSession時(shí)創(chuàng)建;銷毀有以下幾種情況(服務(wù)器關(guān)閉、session過期、 手動(dòng)銷毀)

例子:統(tǒng)計(jì)在線人數(shù),每一個(gè)瀏覽器訪問都會(huì)記錄一次,當(dāng)一個(gè)瀏覽器退出時(shí)就會(huì)讓在線人數(shù)減掉1.

在src/main/webapp下新建一個(gè)名為web的包,并在web包下面新建兩個(gè)類,分別是:

CountLoginListen.java

package web;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class CountListener implements HttpSessionListener {
        private int count = 0;

        public void sessionCreated(HttpSessionEvent se) {
                count++;
                HttpSession session = se.getSession();
                ServletContext sct = session.getServletContext();
                sct.setAttribute("count", count);
        }

        public void sessionDestroyed(HttpSessionEvent se) {
                count--;
                HttpSession session = se.getSession();
                ServletContext sct = session.getServletContext();
                sct.setAttribute("count", count);
        }
}

LoginOutServlet.java

package web;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class LogoutServlet extends HttpServlet {
        public void service(HttpServletRequest request, HttpServletResponse response) throws IOException {
                response.setContentType("text/html;charset=utf8");
                PrintWriter out = response.getWriter();
                HttpSession session = request.getSession();
                session.invalidate();
                out.close();
        }
}

2) 配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

    <listener>
        <listener-class>web.CountListener</listener-class>
    </listener>

    <servlet>
        <servlet-name>h</servlet-name>
        <servlet-class>web.LogoutServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>h</servlet-name>
        <url-pattern>/logout</url-pattern>
    </servlet-mapping>

</web-app>

3) 在webapp下新建一個(gè)jsp文件,名為:index.jsp

<%@ page language="java" contentType="text/html; charset=utf8"
        pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Insert title here</title>
    </head>
    <body>
        當(dāng)前有<%=application.getAttribute("count").toString() %>
        <a href="logout">登出</a>
    </body>
</html>

3、ServletRequestListener

三、監(jiān)聽實(shí)例——三大域?qū)ο蟮膶傩缘淖兓?/h4>

1、ServletContextAttibuteListener

2、HttpSessionBindingListener

3、HttpSessionActivationListener

三、監(jiān)聽實(shí)例——三大域?qū)ο蟮膶傩缘淖兓?/h4>

1、

2、

3、

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

本文標(biāo)題:servlet(二)、監(jiān)聽器javax.servlet.Filter-創(chuàng)新互聯(lián)
文章分享:http://muchs.cn/article24/deiije.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、搜索引擎優(yōu)化、定制開發(fā)、網(wǎng)站設(shè)計(jì)公司、外貿(mào)建站品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)