1. Мониторинг введения
1.1. Концепция слушателя
Слушатель - это объект, специально используемый для прослушивания и обработки событий или изменений состояния, происходящих на других объектах. Когда ситуация возникает в контролируемом объекте, соответствующие действия будут предприняты немедленно. Слушатель на самом деле является обычной Java -программой, которая реализует определенный интерфейс. Эта программа специально используется для прослушивания вызовов методов или изменений свойств другого объекта Java. Когда приведенное выше событие происходит в слушании объекта, определенный метод слушателя выполняется немедленно.
1.2. Дело слушателя-Event слушатель, слушающий окно окна
Пакет me.gacl.listener.demo; import java.awt.frame; import java.awt.event.windowevent; import java.awt.event.windowlistener; открытый класс Demo1 { /***Механизм прослушивания событий Java*1. Слушание событий включает в себя три компонента: источник события, объект события, слушатель событий*2. Когда на источник события возникает действие, оно позвонит в метод прослушивателя событий и передает объект события при вызове метода. * Разработчики могут получить источник события через объект события в слушателе, тем самым работая на источнике события. */ public static void main (string [] args) {frame f = new Frame (); F.SetSize (400, 400); f.setvisible (true); // Зарегистрировать прослушивание событий F.AddWindowListener (new WindowListener () {public void windowActivated (windowEvent e) {} public void windowsclosed (windowevent e) {}/*** Когда форма окна будет закрыто, будет услышан WindowLestener,* прослушивание будет назовать, чтобы обработать витрину obhos -obhos obhos -obhose ( Источник события через объект события eFrame f = (Frame) E.GetSource (); e) {}}); }}1.3. Разработать объект, к которому можно слушать другие объекты
Когда мы делаем разработку, мы пишем слушателей, чтобы контролировать другие объекты. Итак, что мы должны делать, если мы хотим спроектировать объект, чтобы этот объект мог слушать другие объекты? Мы можем спроектировать объект в соответствии со строгой моделью обработки событий, и этот объект можно слушать другими объектами. Модель обработки событий включает в себя три компонента: источник событий, объект события и прослушивание событий.
Давайте разработаем объект человека в соответствии с моделью обработки событий. Конкретный код заключается в следующем:
Пакет me.gacl.observer;/*** @classname: человек (источник события)* @description: разработка класса человека в качестве источника события. Поведение объектов этого класса (например, еда, бег) можно слушать другими объектами* @author: одинокий кангланг* @date: 2014-9-9-9 9:26:06 PM **/ Public Class Person {/ *** @Field: слушатель* Определите переменную PersonListener в классе человека, чтобы вспомнить прошедшего слушателя*/ private Personlister Sliereser; /** * @method: Eat * @description: Поведение дизайнера: eat * @anthor: The Lone and Hurrogance * * /public void eat () {if (слушатель! Source*/ Slieder.doeat (новое событие (это)); }} /*** @method: run* @description: Поведение дизайнера: run* @anthor: The Lone and Hurrogance** /public void run () {if (слушатель! * Объект события инкапсулирует источник события, и это в новом событии (это) представляет источник события*/ alinger.dorun (новое событие (это)); }} / ** * @method: RegisterListener * @description: этот метод используется для регистрации слушателя, который слушает поведение объектов класса человека * @anthor: The Awo Boff * * @param слушатель * / public void RegisterListener (PersonListener Helloder) {this.Listener = Слушатель; }}/*** @ClassName: PersonListener (Event Helloader)* @description: дизайн интерфейса слушателя для человека класс (источник события)* @author: Lonely Canglang* @Date: 2014-9-9 9:28:06 PM **/Interface PersonListener {/*** @method: Doeat: DOEAT* @description: этот метод используется для контроля над поведением. * Когда класс реализации реализует метод DOEAT, вы можете контролировать действие объекта класса человека eat (et) * @anthor: одинокий Canglang * * @param e */ void doeat (event e); /** * @method: dorun * @description: Этот метод используется для прослушивания поведения объекта человека (запустить). * Когда класс реализации реализует метод Dorun, вы можете прослушать Action of Person Class Object Run (run)* @anthor: 克克** @param e*/ void dorun (Event e);}/ *** @classname: Event (Event Object)* @description: Design Event Class для Encapsulate Source* @author: 克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克 � Event (Источник) } public getSource () {return Source; } public void setSource (Person Source) {this.source = source; }}После такой конструкции объекты класса Peron могут слушать другие объекты. Тестовый код заключается в следующем:
Пакет me.gacl.observer; открытый класс PersonTest { / ** * @method: main * @description: test Person Class * @anthor: The Hurrogant Wolf * * @param args * / public void main (string [] args) {// Человек p = новый человек (); // Зарегистрируйте слушателя, который слушает поведение p -объектов p -объектов P.GregisterListener (new PersonListener () {// Слушайте p eathed fortion public void doeat (event e) {person p = e.getSource (); System.out.println (p + "eath");} // Слушание p -управления public dorun (event e) {e -e) {efer p = e.getge (); System.out.println (p + "eath"); // p eath P.Eat (); // p running p.run (); }}Результаты работы:
me.gacl.observer.person@4a5ab2 едят me.gacl.observer.person@4a5ab2 работает
2. Слушатели в Javaweb
2.1. Основные понятия
Слушатели в Javaweb - это специальный класс, определенный в спецификации сервлета. Они используются для прослушивания событий создания и разрушения объектов домена, таких как ServletContext, HTTPSessession и ServletRequest в веб -приложениях, а также для прослушивания событий, в которых модифицируются свойства в этих объектах домена.
2.2. Классификация слушателей сервлетов
Существует несколько типов слушателей, определенных в спецификации сервлета. Источниками событий, используемыми для прослушивания, являются ServletContext, Httpsession и ServletRequest. Спецификация сервлета делит несколько типов слушателей на три типа для операций на этих трех объектах:
• Слушатель событий, который слушает создание и разрушение самого объекта домена.
• Слушатель событий, который слушает для добавления и удаления свойств в доменных объектах.
• Слушатель событий, который слушает статус объекта в домене HTTPSession.
2.3. Слушайте создание и разрушение объектов домена ServletContext
Интерфейс ServletContextListener используется для прослушивания событий создания и разрушения объектов ServletContext. Все классы, которые реализуют интерфейс ServletContextListener, могут прослушать создание и разрушение объектов ServletContext.
• Когда создается объект ServletContext, запущен метод контекста -инициализированного (ServletContexTevent Scet).
• Когда объект ServletContext уничтожен, активируется метод контекста (ServletContexTextent Scet).
• Время для создания и уничтожения объектов домена ServletContext:
Create: Server Startup создает ServletContext для каждого веб -приложения
Разрушение: закройте ServletContext, представляющий каждое веб -приложение, прежде чем сервер будет закрыт.
Пример: напишите класс MyServLetContextListener, реализуйте интерфейс ServletContextListener, прослушайте создание и разрушение объектов ServletContext
1. Напишите слушателя со следующим кодом:
пакет me.gacl.web.listener; import javax.servlet.servletContexTextent; импорт javax.servlet.servletContextLister;/*** @ClassName: MyServletContextListener* @Description: MyServletContextLister внедряет, что verletContextener interface,* Таким образом, вы прослушивает CREATIONSECOURE. * @author: гордый волк* @date: 2014-9-9 10:26:16 PM **/ открытый класс MyServletContextListener реализует ServletContextLister {@Override public void contextIniTizized (ServletContexTeventSent Scet) {System.out.println ("Слива объекта ServletContextextextevent) {System.out.println (" Слива объекта ServletContextextextevent); } @Override public void contextDestroyed (ServletContexTevent Scet) {System.out.println ("Уничтожение объекта ServletContext"); }}2. Зарегистрируйте слушатель в файле web.xml
Мы упомянули выше, что для прослушивания источников событий вы должны зарегистрировать слушателя в источник событий, чтобы контролировать действие источника события. В Javaweb регистрация прослушивания настроена в файле web.xml следующим образом:
<? xml version = "1.0" Encoding = "utf-8"?> <web-app arser = "3.0" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: xsi = "http://www.w3.org/2001/xmlschema electsmance "/www.w3. xsi: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xxsd"> </jaseme-male> </javaee/web-app_3_0. <Welcome-file-list> <selcoveryfile> index.jsp </wervedied-file> </wervediefile-list> <!-Зарегистрируйте слушатель для прослушивания объектов ServletContext-> <Learser> <SOMPRICATE> SERVLETCONTEXTLISTERENENER </description> <!-Класс получателя, который реализует интерфейс ServletContextreder-> <lloader-class> me.gacl.web.listener.myservletcontextlister </stirlerer-class> </sluster> </web-app>
После этих двух шагов мы завершили написание и регистрацию слушателя. Когда веб -сервер начнется, он автоматически зарегистрирует слушатель, настроенный в web.xml для объекта ServletContext. Таким образом, разработанный слушатель MyServletContextListener может прослушать объект ServletContext.
2.4. Слушайте создание и разрушение объектов домена Httpsession
Интерфейс httpsessionListener используется для прослушивания создания и разрушения объектов HTTPSession. При создании сеанса метод сеанса Create (HttpsessionEvent SE) активируется при уничтожении сеанса, и активируется метод SessionDestroyed (HttpsessionEvent SE).
Пример: напишите класс MyhttpsessionListener, реализуйте интерфейс httpsessionListener и прослушайте создание и разрушение объектов Httpsession
1. Напишите слушателя со следующим кодом:
Пакет me.gacl.web.listener; import javax.servlet.http.httpsessionEvent; import javax.servlet.http.httpsessionListener;/*** @classname: MyhttpsessionListener* @description: MyhttpsessionLister Class. Объект httpsession можно слушать. * @author: одинокий Canglang* @date: 2014-9-9 11:04:33 PM **/ Public Class MyhttpsessionListener реализует httpsessionListener {@Override public void sessionCreated (httpsessionEvent se) {system.out.println (se.getsession () "Создан !!"); }/* Время разрушения httpsession должно быть настроено в web.xml, следующим образом:* <session-config> <session-timeout> 1 </session-timeout> </session-config> эта конфигурация означает, что сеанс разрушается через 1 минуту*/@override public void sessiondestroyed (httpsessionevent se) {System.out.out.print. }}2. Зарегистрируйте слушатель в файле web.xml
<!-Зарегистрируйте прослушивание для прослушивания объектов HTTPSession-> <Learser> <SOMNAD> httpsessionListener Hellocer </description> <Sirlicer-class> me.gacl.web.listener.myhttpsessionListener </stirlicer-class> </sluster> <! -> <session-config> <!-Настройте разрушение объекта Httpsession 1 минута позже-> <Session-Timeout> 1 </session-timeout> </session-config>
Когда мы получаем доступ к странице JSP, будет создан объект HTTPSession. В настоящее время мы можем наблюдать процесс создания объекта httpsession в httpsessionlistener. Мы можем написать страницу JSP, чтобы наблюдать процесс создания объекта httpsession.
Следующим образом: index.jsp
< %@ page language = "java" import = "java.util.*" pageencoding = "utf-8" %> <! Doctype html> <html> <head> <tite> httpsessionListener, прослушивающий слушатель. Идентификатор созданного сеанса: $ {pagecontext.session.id} </body> </html>Результаты работы следующие:
2.5. Слушайте создание и разрушение объектов домена ServletRequest
Когда интерфейс ServletRequestListener используется для прослушивания создания и разрушения объекта ServletRequest, будет вызван метод прослушивателя запроса. Когда объект запроса будет уничтожен, будет вызван метод прослушивателя запроса.
ServletRequest Domain создание объекта и сроки разрушения:
Создание: Каждый раз, когда пользователь посещает, объект запроса будет создан, объект запроса будет уничтожен: текущий доступ закончится, объект запроса будет уничтожен.
Пример: напишите класс myservletrequestlistener, реализуйте интерфейс ServletRequestListener, прослушайте создание и разрушение объектов ServletRequest
1. Напишите слушателя со следующим кодом:
Пакет me.gacl.web.listener; import javax.servlet.servletrequestevent; import javax.servlet.servletrequestlistener;/*** @classname: myservletrequestlistener* @description: Myservletrequestlister включает в себя ServletRequestener. объект. * @author: гордый волк* @Date: 2014-9-9 11:50:08 **/ открытый класс MyServletRequestListener реализует ServletRequestListener {@Override public void requestDestroyed (ServletRequestevent sre) {System.out.println (sre.getservquest () + "; } @Override public void requestInitialization (ServletRequestevent sre) {System.out.println (sre.getServletRequest () + "Создан !!"); }}2. Зарегистрируйте слушатель в файле web.xml
<!-Зарегистрируйте слушатель для прослушивания объекта ServletRequest-> <Learser> <SOMNAD> SERVLETREQUESTLISTERENER SLEESER </description> <licaler-class> me.gacl.web.listener.myservletrequestlistener </sluster-class> </sluster>
Результаты теста следующие:
Из результата запуска мы видим, что пользователь создает объект запроса каждый раз, когда он обращается к обращению, и объект запроса будет уничтожен после завершения доступа.
Вышесказанное - краткое объяснение слушателя.