JSPリスナーの使い方分析

2556 ワード

この例では、JSPリスナーの使い方について説明します.皆さんの参考にしてください.具体的には以下の通りです.
ListenerはListenerとも呼ばれ、servletサービスのListenerです.クライアントのリクエスト、サービス側の操作などを傍受できます.たとえば、オンラインユーザーの数を統計します.HttpSessionを1つ追加するたびに、sessionCreate(HttpSessionEvent se)メソッドがトリガーされ、オンライン人数に1を追加できます.一般的なListenerインタフェースは次のとおりです.
1.サーブレットContextAttributeListenerは、サーブレットContext属性の操作をリスニングします.たとえば、追加、削除、プロパティの変更などです.
2.サーブレットContextListenerはサーブレットContextをリスニングします.サーブレットContextを作成すると、contextInitialized(サーブレットContextEvent sce)メソッドが起動します.サーブレットContextを破棄すると、contextDestroyed(サーブレットContextEvent sce)メソッドが起動します.
3.HttpSessionListenerは、HttpSessionの動作を傍受する.セッションを作成すると、セッションCreated(HttpSessionEvent se)メソッドが励起されます.Sessionを破棄すると,sessionDestroyed(HttpSessionEvent se)法が励起される.4.HttpSessionAttributeListenerは、HttpSessionのプロパティの操作をリスニングします.Sessionに属性を追加するとattributeAdded(H t t p SessionBindingEvent se)法が励起される.
Sessionで属性を削除すると、attributeRemoved(H t t t p SessionBindingEvent se)メソッドが励起されます.
Session属性が再設定されると,attributeReplaced(H ttpSessionBindingEvent se)法が励起される.
オンライン統計の例:

public class ONline implements ServletContextListener,HttpSessionListener,HttpSessionAttributeListener(){
private ServletContext application = null;
 public void contextInitialized(ServletContextEvent arg0) {
 //           ServletContext
 this.application = arg0.getServletContext();
 // ServletContext             
 application.setAttribute("users", new ArrayList());
 }
 public void sessionDestroyed(HttpSessionEvent arg0) {
 List list = (List)application.getAttribute("users");
 String name = arg0.getSession().getAttribute("name").toString();
 list.remove(name);
 application.setAttribute("users", list);
 }
 public void attributeAdded(HttpSessionBindingEvent arg0) {
 List list = (List)application.getAttribute("users");
 if(arg0.getName().equals("name")){
  list.add(arg0.getValue().toString());
 }
 application.setAttribute("users", list);
 }
}


web.xmlファイルでの構成:


   package.classname



附:sessionはいつ作成されますか?
一般的な誤解はセッションがクライアントアクセス時に作成するが、あるサーバ側がHttpServertRequestを呼び出すことである.getSession(true)のような文が作成された場合にのみ作成されます.注意jspページがセッションを閉じるために明示的に使用する場合、jspページがサーブレットページにコンパイルされると自動的にHttpサーブレットRequestが付加される.getSession(true)という言葉.これもjspに隠されているオブジェクトsessionの由来です.
本文で述べたことは皆さんのjspプログラム設計に役立つことを望んでいます.