이 기사는 주로 리스너를 사용하여 Java를 사용하여 웹 사이트에서 온라인으로 사람들의 수를 세는 예를 소개합니다. 특정 참조 값이 있습니다. 도움이 필요한 친구들은 그것에 대해 배울 수 있습니다.
(1) 청취자 구현 클래스를 만듭니다
웹 사이트에서 온라인으로 사람들의 수를 대략 세려면 먼저 ServletContextListener를 통해들을 수 있습니다. 웹 응용 프로그램 컨텍스트가 시작되면 ServletContext에 목록을 추가하여 온라인에 저장된 사용자 이름을 준비하십시오. 그런 다음 httpsessionattritipelistener를 통해들을 수 있습니다. 사용자가 사용자 이름을 세션에 성공적으로 설정하면 사용자 이름이 ServletContext의 목록 목록에 동시에 저장됩니다. 마지막으로 httpsessionlistener를 통해 들으십시오. 사용자가 세션에서 로그 아웃하면 응용 프로그램 컨텍스트의 목록 목록에서 사용자 이름이 삭제됩니다.
따라서 OnlinElistener 클래스를 작성하여 ServletContextListener, httpsessionattributeListener 및 httpsessionListener 인터페이스를 구현하십시오. 특정 코드는 다음과 같습니다.
패키지 com.web.servlet; java.util.linkedList 가져 오기; Java.util.list 가져 오기; import javax.servlet.servletcontext; javax.servlet.servletcontextevent import; Javax.Servlet.ServletContextListener import; import javax.servlet.http.httpsessionattributeListener; import javax.servlet.http.httpsessionbindingevent; import javax.servlet.http.httpsessionevent; import javax.servlet.http.httpsessionListener; // 온라인 사용자 통계 청취자 구현 클래스 공개 클래스 OnlinElistener는 servletcontextListener, httpssessionAttributeListener, httpsessionListener {private servletcontext application = null; public void contextDestroyed (servletcontextevent arg0) {// todo 자동 생성 메소드 스터브} public void contextinitialized (servletcontextevent arg0) {// 응용 프로그램 개체 초기화 this.application = arg0.getServletContext (); // 사용자 이름을 저장하기 위해 목록 속성을 설정하십시오. } // 세션에 속성을 추가 할 때 콜백하는 메소드 공개 void argributeadded (httpssessionBindingEvent arg0) {// 사용자 이름 목록 <string> online = (list <string>) this.Application .getAttRibute ( "온라인"); if ( "username".equals (arg0.getName ())) {// 현재 사용자 이름을 online.add ((String) arg0.getValue ())에 추가합니다. } // 추가 된 목록을 응용 프로그램 속성으로 재설정하십시오. } public void attributermoved (httpsessionbindingevent arg0) {// todo auto-auttrated method stub} public void arventerPerplaced (httpsessionbindingevent arg0) {// auto auto-kenerated method stub} public void sessioncreated (httpessionEvent arg0) {// to auto-genderated method it that that auto-genderated 세션이 파괴 될 때 콜백 공개 void sessiondestroyed (httpsessionevent arg0) {// 사용자 이름 목록 목록 <string> online = (list <string>) this.application .getAttribute ( "온라인"); // 현재 사용자 이름 문자열 username = (string) arg0.getSession (). getAttribute ( "username"); // 온라인 목록 에서이 사용자 이름을 삭제합니다 .remove (사용자 이름); // 삭제 된 목록을 응용 프로그램 속성으로 재설정하십시오. }} (2) Web.xml에 리스너를 등록하십시오
리스너가 구현되면 Web.xml 파일에 등록해야합니다. 다음과 같이 web.xml에 요소를 추가하면됩니다.
<!-리스너 등록-> <layer> <!-리스너 구현 클래스의 자격있는 이름을 지정합니다-> <liseer-class> com.web.servlet.onlinelistener </laiser-class> </lareer
마지막으로,이 리스너가 구현 한 기능을 테스트하기 위해 여러 서블릿을 만듭니다.
사용자 로그인 처리를위한 서블릿 클래스 코드 :
패키지 com.web.servlet; import java.io.ioexception; import java.io.printwriter; Java.util.list 가져 오기; javax.servlet.servletexception import; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; // 서틀 취급 사용자 로그인 공개 클래스 로그인 httpservlet 확장 {public void doget (httpservletrequest request, httpservletreponse responsk) servletexception, ioexception {this.dopost (요청, 응답); } public void dopost (httpservletrequest request, httpservletrequest response)는 servletexception, ioexception {request.setcharacterencoding ( "utf-8"); // 해당 콘텐츠 유형을 설정합니다. httpssessionattributeListener if (username! = null &&! username.equals ( "")) {request.getSession (). setattribute ( "username", username); } // 애플리케이션 컨텍스트에서 온라인 사용자 이름 목록을 가져옵니다. List <string> online = (list <string>) GetServletContext (). getAttribute ( "온라인"); Response.setContentType ( "Text/Html; charset = utf-8"); printwriter out = response.getwriter (); out.println ( "<html>"); out.println ( "<head> <title> 사용자 목록 </title> </head>"); out.println ( "<body>"); out.println ( "현재 사용자는 :" + username); out.print ( "<hr/> <h3> 온라인 사용자 목록 </h3>"); int size = online == null? 0 : online.size (); for (int i = 0; i <size; i ++) {if (i> 0) {out.println ( "<br/>"); } out.println (i + 1 + "." + online.get (i)); } // 참고 : 링크 URL OUT.println을 자동으로 다시 작성하려면 ( "<hr/<a href ="/"mce_href ="/"" "" " + response.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 import; javax.servlet.http.*import; // 사용자 로그 아웃 세션을 처리하는 서플릿 공개 클래스 로그 아웃 레트 레트는 httpservlet을 확장합니다 {public void doget (httpservletrequest request, httpservletrequest 응답) servletexception, ioexception {this.dopost (요청, 응답); } public void dopost (httpservletRequest 요청, httpservletResponse 응답) servletexception, ioexception {request.setcharacterencoding ( "utf-8"); // 세션을 파괴하면 SessionLlinStener의 세션에서 파견 된 메소드가 Trigger request.getSession (). invalidate (); // 애플리케이션 컨텍스트에서 온라인 사용자 이름 목록을 가져옵니다. list <string> online = (list <string>) getServletContext (). getAttribute ( "온라인"); Response.setContentType ( "Text/Html; charset = utf-8"); printwriter out = response.getwriter (); out.println ( "<html>"); out.println ( "<head> <title> 사용자 목록 </title> </head>"); out.println ( "<body>"); out.print ( "<h3> 온라인 사용자 목록 </h3>"); int size = online == 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 파일을 만듭니다. 코드는 다음과 같습니다.
<! docType html public "-// w3c // dtd html 4.01 전환 // en"> <html> <head> <meta http-equiv = "content-type"content = "text/html; charset = utf-8"> <title> index.html </head> <body action = "mettern" "" 사용자 이름 : <입력 유형 = "텍스트"이름 = "사용자 이름"/> <입력 유형 = "제출"value = "로그인"/> <br/> <br/> </form> </body> </html>
웹을 Tomcat 컨테이너에 배포하고 시작하십시오. 액세스하려면 브라우저를 엽니 다
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.