この記事では、主に、リスナーをJavaに使用して、Webサイトでオンラインの人数を数える例を紹介します。特定の基準値があります。困っている友達はそれについて学ぶことができます。
(1)リスナー実装クラスを作成します
Webサイトでオンラインで人数を大まかに数えるには、まず、ServletContextListenerを聴くことができます。 Webアプリケーションのコンテキストが開始されたら、ServletContextにリストを追加して、オンラインに保存されているユーザー名を準備します。次に、HTTPSSESSIONATTRIBUTELISTENERを聴くことができます。ユーザーがユーザー名をセッションに正常に設定するとログインすると、ユーザー名はServletContextのリストリストに同時に保存されます。最後に、httpsessionlistenerを聞いてください。ユーザーがセッションからログアウトすると、アプリケーションコンテキストのリストリストからユーザー名が削除されます。
したがって、OnlineListenerクラスを書き込み、ServletContextListener、httpssessionAttributeListener、およびhttpssessionListenerインターフェイスを実装します。特定のコードは次のとおりです。
パッケージcom.web.servlet; java.util.linkedListをインポートします。 java.util.listをインポートします。 javax.servlet.servletcontextをインポートします。 javax.servlet.servletcontexteventをインポートします。 javax.servlet.servletcontextListenerをインポートします。 javax.servlet.http.httpssessionattributeListenerをインポートします。 javax.servlet.http.httpsessionbindingventをインポートします。 javax.servlet.http.httpsessioneventをインポートします。 javax.servlet.http.httpsessionlistenerをインポートします。 //オンラインユーザー統計リスナーリスナー実装クラスPublic Class OnlineListenerはServletContextListener、httpssessionattributeListener、httpssessionListener {private servletcontext application = null; public void contextdestroyed(servletcontextevent arg0){// todo auto-enerated method stub} public void contextinitialized(servletcontextevent arg0){//アプリケーションオブジェクトを初期化します。 //リスト属性を設定してユーザー名を保存しますthis.application.setattribute( "online"、new linkedlist <string>()); } //セッションに属性を追加するときにコールバックするメソッドpublic public void astributeadded(httpssessionbindingevent arg0){//ユーザー名リスト<string>オンライン=(list <string>)this.application.getattribute( "online"); if( "username" .equals(arg0.getname())){//現在のユーザー名をlist online.add((string)arg0.getvalue()); } //追加のリストをアプリケーション属性にリセットするthis.application.setattribute( "online"、online); } public void astributeremoved(httpssessionbindingEvent arg0){// todo auto-enerated method stub} public void astributeReplaced(httpsessionbindingevent arg0){// todo auto-generated methood stub} public void sessioned sestioned(httpsessessevent arg0)セッションが破壊されたときのコールバックpublic void sessiondestroyed(httpsessionevent arg0){//ユーザー名リスト<string> online =(list <string>)this.application.getattribute( "online"); //現在のユーザー名文字列username =(string)arg0.getSession()。getattribute( "username");を取得します。 //このユーザー名をリストから削除Online.Remove(username); //削除されたリストをアプリケーションプロパティThis.Application.SetAttribute( "Online"、Online)にリセットします。 }} (2)web.xmlでリスナーを登録します
リスナーが実装された後、Web.xmlファイルに登録して動作する必要があります。次のように、web.xmlに要素を追加する必要があります。
<! - リスナーを登録 - > <リスナー> <! - リスナー実装クラスの完全な資格のある名前を指定します - > <リスナークラス> com.web.servlet.onlineListener </ristener-class> </ristener
最後に、このリスナーによって実装された機能をテストするためのいくつかのサーブレットを作成します。
ユーザーログインを処理するためのサーブレットクラスコード:
パッケージcom.web.servlet; java.io.ioexceptionをインポートします。 java.io.printwriterをインポートします。 java.util.listをインポートします。 javax.servlet.servletexceptionをインポートします。 javax.servlet.http.httpservletをインポートします。 javax.servlet.http.httpservletrequestをインポートします。 javax.servlet.http.httpservletResponseをインポートします。 //サーブレットハンドリングユーザーログインパブリッククラスログインサーブレット拡張httpservlet {public void doget(httpservletrequest request、httpservletResponse応答)スローServletexception、ioexception {this.dopost(リクエスト、応答); } public void dopost(httpservletrequest request、httpservletresponse応答)servletexception、ioexception {request.setcharacterencoding( "utf-8"); httpsssionAttributeListener if(username!= null &&!username.equals( "")){request.getSession()。setAttribute( "username"、username); } //アプリケーションコンテキストリストからオンラインユーザー名リストを取得<String>オンライン=(リスト<String>)getServletContext()。 Response.setContentType( "text/html; charset = utf-8"); printwriter out = response.getWriter(); out.println( "<html>"); out.println( "<head> <title> user list </title> </head>"); out.println( "<body>"); out.println( "現在のユーザーは:" + username); out.print( "<hr/> <h3>オンラインユーザーリスト</h3>"); int size =オンライン== null? 0:online.size(); for(int i = 0; i <size; i ++){if(i> 0){out.println( "<br/>"); } out.println(i + 1 + "。" + online.get(i)); } //注:link url out.println( "<hr/> <a href ="/"mce_href ="/"/" "" + respons.encodeurl( "logout") + "/"> logout </a> "); out.println( "</body>"); out.println( "</html>"); out.flush(); out.close(); }}ユーザーログインをサーブレットに処理するためのクラスコード
パッケージcom.web.servlet; java.io.*をインポートします。 java.util.listをインポートします。 javax.servlet.servletexceptionをインポートします。 javax.servlet.http。*をインポートします。 //ユーザーログアウトセッションを処理するサーブレットパブリッククラスログアウトサーブレットは、httpservletを拡張します{public void doget(httpservletrequest request、httpservletresponse応答)servletexception、ioexception {this.dopost(request、response); } public void dopost(httpservletrequest request、httpservletResponse応答)servletexception、ioexception {request.setcharacterencoding( "utf-8"); //セッションを破壊すると、sessionlinStenerのセッションデストロイのメソッドがrequest.getSession()。invalidate(); //アプリケーションコンテキストリスト<String>オンライン=(List <String>)getServletContext()。 Response.setContentType( "text/html; charset = utf-8"); printwriter out = response.getWriter(); out.println( "<html>"); out.println( "<head> <title> user list </title> </head>"); out.println( "<body>"); out.print( "<h3>オンラインユーザーリスト</h3>"); int size =オンライン== null? 0:online.size(); for(int i = 0; i <size; i ++){if(i> 0){out.println( "<br/>"); } out.println(i + 1 + "。" + online.get(i)); } out.println( "<hr/> <a href ="/"mce_href ="/"" index.html/"> home </a>"); out.println( "</body>"); out.println( "</html>"); out.flush(); out.close(); }}次に、ユーザーがログインできるようにindex.htmlファイルを作成します。コードは次のとおりです。
< username:<input type = "text" name = "username"/> <input type = "" value = "login"/> <br/> <br/> </form> </body> </html> </html>
WebをTomcatコンテナの合計に展開して開始します。アクセスするブラウザを開きます
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。