Java Web 開発において、リスナー (リスナー) とインターフェイス コールバックは非常に重要な概念であり、これらを使用してさまざまなイベントをリッスンし、イベント発生時に適切な措置を講じることができます。
Java Web アプリケーションでは、リスナーは、Web アプリケーション内で発生するイベントをリッスンするために使用できるコンポーネントです。リスナーは次のイベントをリッスンできます:
ServletContext の作成と破棄
HttpSession の作成と破棄
ServletRequest の作成と破棄
Listener は、次のインターフェイスを実装することで、対応するイベントをリッスンできます:
ServletContextListener
HttpSessionListener
ServletRequestListener
たとえば、次のコードは、次のコードの作成と作成を監視する方法を示しています。 ServletContextListener インターフェイスの実装による ServletContext 破棄イベント:
public class MyServletContextListener implements ServletContextListener { public void contextInitialized(ServletContextEvent event) { // ServletContext创建时执行的代码 } public void contextDestroyed(ServletContextEvent event) { // ServletContext销毁时执行的代码 } }
コールバック関数は、関数をパラメータとして別の関数に渡し、その関数内で呼び出すことを可能にするプログラミング パターンです。コールバックを実行します。 Java では、インターフェイスを使用してコールバックを実装できます。
たとえば、次のコードは、インターフェイス コールバックを使用してイベント リスニングを実装する方法を示しています。
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) { // 处理事件的代码 } }
上記のコードでは、EventSource クラスはイベント ソースを表し、イベント ソースを介してイベントを設定できます。 setEventListener() メソッドのリスナー。 MyEventListener インターフェイスは、イベントの発生時に呼び出される onEvent() メソッドを持つイベント リスナーを表します。 MyEventListenerImpl クラスは、イベントを処理するための onEvent() メソッドの実装を含む MyEventListener インターフェイスを実装します。
Web アプリケーションのイベントをリッスンするために使用される特別なタイプのリスナーは、Web リスナーと呼ばれます。 Web リスナーは次のイベントをリッスンできます:
ServletContext の作成と破棄
HttpSession の作成と破棄
ServletRequest の作成と破棄
HttpSession での属性状態の変更
たとえば、次のコードは、HttpSessionAttributeListener を実装する方法を示しています。 HttpSession の属性ステータスの変更を監視するインターフェイス:
public class MyHttpSessionAttributeListener implements HttpSessionAttributeListener { public void attributeAdded(HttpSessionBindingEvent event) { // HttpSession中添加属性时执行的代码 } public void attributeRemoved(HttpSessionBindingEvent event) { // HttpSession中删除属性时执行的代码 } public void attributeReplaced(HttpSessionBindingEvent event) { // HttpSession中替换属性时执行的代码 } }
Java Web アプリケーションには、ServletContext、HttpSession、および ServletRequest の 3 つのスコープがあります。適切なリスナーを作成することで、これらのスコープの作成イベントと破棄イベントをリッスンできます。
たとえば、次のコードは、ServletContextListener、HttpSessionListener、および ServletRequestListener インターフェイスを実装することによって、これら 3 つのスコープの作成イベントと破棄イベントを監視する方法を示しています。
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销毁时执行的代码 } }
3 つのスコープの作成および破棄イベントを監視できることに加えて、それらの属性の状態の変化も監視できます。対応するリスナーを実装することで、これらのイベントをリッスンできます。
たとえば、次のコードは、ServletContextAttributeListener、HttpSessionAttributeListener、および ServletRequestAttributeListener インターフェイスを実装することによって、これら 3 つのスコープ内の属性のステータスの変化を監視する方法を示しています。 HttpSession に格納された値
たとえば、次のコードは、HttpSessionBindingListener インターフェイスを実装することによって、HttpSession に格納されている値の状態変更イベントを監視する方法を示しています。
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中替换属性时执行的代码 } }
Listener アプリケーション シナリオ
以上がJava Web リスナーはイベントの監視と処理をどのように実装しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。