Dans le développement Web Java, les écouteurs et les rappels d'interface sont des concepts très importants. Ils peuvent être utilisés pour écouter divers événements afin que des mesures appropriées puissent être prises lorsque les événements se produisent.
Dans une application Web Java, un Listener est un composant qui peut être utilisé pour écouter les événements qui se produisent dans l'application Web. L'auditeur peut écouter les événements suivants :
Création et destruction de ServletContext
Création et destruction de HttpSession
Création et destruction de ServletRequest
L'auditeur peut écouter les événements correspondants en implémentant ce qui suit interface:
ServletContextListener
HttpSessionListener
ServletRequestListener
Par exemple, le code suivant montre comment écouter les événements de création et de destruction de ServletContext en implémentant ServletContextListe ner interface :
public class MyServletContextListener implements ServletContextListener { public void contextInitialized(ServletContextEvent event) { // ServletContext创建时执行的代码 } public void contextDestroyed(ServletContextEvent event) { // ServletContext销毁时执行的代码 } }
La fonction de rappel est un modèle de programmation qui permet à une fonction d'être transmise en tant que paramètre à une autre fonction, puis d'être appelée à l'intérieur de cette fonction pour exécuter un rappel. En Java, les rappels peuvent être implémentés à l'aide d'interfaces.
Par exemple, le code suivant montre comment utiliser les rappels d'interface pour implémenter l'écoute d'événements :
public interface MyEventListener { void onEvent(Event event); } public class EventSource { private MyEventListener listener; public void setEventListener(MyEventListener listener) { this.listener = listener; } public void fireEvent(Event event) { if (listener != null) { listener.onEvent(event); } } } public class MyEventListenerImpl implements MyEventListener { public void onEvent(Event event) { // 处理事件的代码 } }
Dans le code ci-dessus, la classe EventSource représente la source de l'événement, qui peut définir l'écouteur d'événement via la méthode setEventListener(). L'interface MyEventListener représente un écouteur d'événement, qui possède une méthode onEvent(), qui est appelée lorsqu'un événement se produit. La classe MyEventListenerImpl implémente l'interface MyEventListener, qui contient l'implémentation de la méthode onEvent() pour gérer les événements.
Un type spécial d'écouteur utilisé pour écouter les événements dans les applications Web est appelé écouteur Web. Les auditeurs Web peuvent écouter les événements suivants :
Création et destruction de ServletContext
Création et destruction de HttpSession
Création et destruction de ServletRequest
Changements de statut d'attribut dans HttpSession
Par exemple, le Le code suivant montre comment surveiller les modifications de l'état des attributs dans HttpSession en implémentant l'interface HttpSessionAttributeListener :
public class MyHttpSessionAttributeListener implements HttpSessionAttributeListener { public void attributeAdded(HttpSessionBindingEvent event) { // HttpSession中添加属性时执行的代码 } public void attributeRemoved(HttpSessionBindingEvent event) { // HttpSession中删除属性时执行的代码 } public void attributeReplaced(HttpSessionBindingEvent event) { // HttpSession中替换属性时执行的代码 } }
Dans une application Web Java, il existe trois portées : ServletContext, HttpSession et ServletRequest . Vous pouvez écouter ces événements de création et de destruction de portée en écrivant les écouteurs appropriés.
Par exemple, le code suivant montre comment écouter les événements de création et de destruction de ces trois scopes en implémentant les interfaces ServletContextListener, HttpSessionListener et ServletRequestListener :
public class MyServletContextListener implements ServletContextListener { public void contextInitialized(ServletContextEvent event) { // ServletContext创建时执行的代码 } public void contextDestroyed(ServletContextEvent event) { // ServletContext销毁时执行的代码 } } public class MyHttpSessionListener implements HttpSessionListener { public void sessionCreated(HttpSessionEvent event) { // HttpSession创建时执行的代码 } public void sessionDestroyed(HttpSessionEvent event) { // HttpSession销毁时执行的代码 } } public class MyServletRequestListener implements ServletRequestListener { public void requestInitialized(ServletRequestEvent event) { // ServletRequest创建时执行的代码 } public void requestDestroyed(ServletRequestEvent event) { // ServletRequest销毁时执行的代码 } }
En plus de pouvoir écoutez trois rôles Les événements de création et de destruction de domaine, ainsi que les modifications de l'état de leurs attributs, peuvent également être surveillés. Vous pouvez écouter ces événements en implémentant le Listener correspondant.
Par exemple, le code suivant montre comment surveiller les changements d'état des attributs dans ces trois portées en implémentant les interfaces ServletContextAttributeListener, HttpSessionAttributeListener et ServletRequestAttributeListener :
public class MyServletContextAttributeListener implements ServletContextAttributeListener { public void attributeAdded(ServletContextAttributeEvent event) { // ServletContext中添加属性时执行的代码 } public void attributeRemoved(ServletContextAttributeEvent event) { // ServletContext中删除属性时执行的代码 } public void attributeReplaced(ServletContextAttributeEvent event) { // ServletContext中替换属性时执行的代码 } } public class MyHttpSessionAttributeListener implements HttpSessionAttributeListener { public void attributeAdded(HttpSessionBindingEvent event) { // HttpSession中添加属性时执行的代码 } public void attributeRemoved(HttpSessionBindingEvent event) { // HttpSession中删除属性时执行的代码 } public void attributeReplaced(HttpSessionBindingEvent event) { // HttpSession中替换属性时执行的代码 } } public class MyServletRequestAttributeListener implements ServletRequestAttributeListener { public void attributeAdded(ServletRequestAttributeEvent event) { // ServletRequest中添加属性时执行的代码 } public void attributeRemoved(ServletRequestAttributeEvent event) { // ServletRequest中删除属性时执行的代码 } public void attributeReplaced(ServletRequestAttributeEvent event) { // ServletRequest中替换属性时执行的代码 } }
En plus de surveiller les attributs dans HttpSession En plus des événements de changement d'état, vous pouvez également surveiller les événements de changement d'état des valeurs stockées dans HttpSession. Pour écouter ces événements, vous pouvez implémenter l'interface HttpSessionBindingListener.
Par exemple, le code suivant montre comment surveiller les événements de changement d'état de la valeur stockée dans HttpSession en implémentant l'interface HttpSessionBindingListener :
public class MySessionBindingListener implements HttpSessionBindingListener { public void valueBound(HttpSessionBindingEvent event) { // HttpSession中存值时执行的代码 } public void valueUnbound(HttpSessionBindingEvent event) { // HttpSession中删除值时执行的代码 } }
Les scénarios d'application de Listener sont très larges. Par exemple, Listener peut être utilisé pour implémenter les fonctions suivantes :
Charger le fichier de configuration lorsque le ServletContext est initialisé
Enregistrer les informations de l'utilisateur connecté lors de la création de la session Http
Enregistrer l'adresse IP demandée lorsque le ServletRequest est créé
Effectuez le travail de nettoyage correspondant lors de la création et de la destruction des étendues
Lors de l'utilisation de Listener, vous devez faire attention aux points suivants :
La classe d'implémentation de Listener doit implémenter l'interface correspondante.
La classe d'implémentation Listener doit être configurée dans le fichier web.xml.
La classe d'implémentation de Listener doit être dans le même ClassLoader que l'application.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!