이 블로그는 온라인 사용자, 온라인 사람 세부 정보 및 관리자 차기 기능의 간단한 표시를 구현하는 필터, 청취자 및 서블릿 기술에 대한 관련 요약입니다.
아래는 세부 코드입니다
web.xml
<? xml version = "1.0"encoding = "utf-8"?> <web-app version = "3.0"xmlns = "http://java.sun.com/xml/xml/ns/javaee"xmlns : xsi = "http://www.w3.org/2001/xmlschema-instance. xsi : schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_3_0.xsd"> </name> <filter-name> 문자 </filter-name> <filter-class> cn.hncu.filter.characterfilter </filter-class> <init-param> <param-name> charset </param-name> <param-value> utf-8 </param-value> </init-param> </filter> <filter> login> filter-name> <filter-class> cn.hncu.filter.loginFilter </filter-class> </filter> <filter-mapping> <filter-name> 문자 </filter-name> <Url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name> login> login> <Url-pattern>/servlet/*</url-pattern> <Url-pattern>/jsps/*</url-pattern> <spatcher> 요청 </dispatcher> <spatcher> prossment </dispatcher> </filter-mapping> <layer> <liseerclass> cn.hncu.listener.mysessionlistener </lister> </hareser> <Servlet-name> loginservlet </servlet-name> <servlet-class> cn.hncu.servlet.loginservlet </servlet-class> </servlet> <servlet> <servlet-name> showservlet </servlet-name> <servlets-class> cn.hncu.servlet.showserv </servlet class> </servlet> </servlet class> </servlet class> J2EE Component </description> <display-name> 이것은 내 j2ee 구성 요소의 디스플레이 이름입니다 </display-name> <servlet-name> kickoutservlet </servlet-name> <servlet-class> cn.hncu.servlet.kickoutservlet </servlet-class> </servlet> <servlet> <servlet> </splitidate same> </displitive </displitive </servle-name> </servleclass> <servlet> <servlet> 내 j2ee 구성 요소 </display-name> <servlet-name> loginoutservlet </servlet-name> <servlet-class> cn.hncu.servlet.loginoutservlet </servlet-class> </servlet> <servlet-mapping> <servlet-mapping> <servlet-name> loginservlet </urltatter-name> </servlet-mapping> <servlet-mapping> <servlet-mapping> <servlet-name> showservlet </servlet-name> <url-pattern>/servlet/showservlet </url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name> Kickoutservlet </servlet-name> <url-fattern>/servlet/kickoutservlet/karkllet/karkllet/servlet/servlet/servlet/servlet/servle </servlet-mapping> <servlet-mapping> <servlet-mapping> <servlet-name> loginoutservlet </servlet-name> <url-pattern>/servlet/loginoutservlet> </servlet-mapping> <welcome-list> <welce-file> index.jsp </welcome-file> </welect-file> </web-app>
index.jsp
<%@ page language = "java"import = "java.util.*"pageencoding = "utf-8"%> <%@ taglib prefix = "c"uri = "http://java.sun.com/jsp/jstl/core"%> <! apttype html public "-//01 과도기 // en "> <html> <head> <title> 온라인 정보 관리 </title> </head> <body> <h2> 온라인 정보 관리 </h2> <h3> 회원 로그인 </h3> <c : if test ="$ {empty sessionscope.user.name} "var ="boo "> <c : url value = "/loginservlet"> </c : url> '> 이름 : <input type = "text"name = "name"> <br/> <입력 유형 = "value ="login "> <br/ </form> </c : if> <c : if test ="$ {! boo} "> 환영, $ {sessionscope.user.user.name}. sessionscope.user.admin} "var ="bo "> admin </c : if> <c : if test ="$ {! bo} "> memb 정보 </a> <br/> <a href = '<c : url value = "/servlet/loginoutservlet"/>'> 안전 종료 </a> <br/> </c : if> </body> </html>/jsps/show.jsp
<%@ page language = "java"import = "java.util.*"pageencoding = "utf-8"%> <%@ taglib uri = "http://java.sun.com/jsp/jstl/core"prefix = "c"%> <! arttype html public "-// w3c // 전환 // en "> <html> <head> <title> 온라인 정보 </title> <Style Type ="Text/Css "> 테이블 {color : green; 테두리 : 1px 솔리드 블루; 국경-콜라스 : 붕괴; 너비 : 500px; 마진 : 자동; } td {테두리 : 1px 솔리드 블루; } th {테두리 : 1px Solid Blue; } body {text-align : 센터; . <td> <c : if test = "$ {! empty ront }. } "/> '> kickout </a> </c : if> </c : if> </td> </tr> </c : foreach> </table> </body> </html>user.java (값 객체)
패키지 CN.hncu.Domain; 공개 클래스 사용자 {개인 문자열 이름; 개인 부울 관리자; 공개 문자열 getName () {return name; } public void setName (문자열 이름) {this.name = 이름; } public boolean isadmin () {return admin; } public void setAdmin (부울 관리자) {this.admin = admin; } @override public String toString () {return "user [name =" + name + ", admin =" + admin + "]; }}mysessionlistener.java (리스너)
패키지 cn.hncu.listener; import java.util.collections; import java.util.hashmap; import java.util.map; import javax.servlet.http.httpsession; import javax.servlet.http.httpsessionevent; import javax.servlet.httpestest MySessionListener는 httpsessionListener {@override public void sessioncreated (httpssessionEvent se) {map <string, httpsession> onlines = (map <string, httpsession>) se.getSession (). getServletContext (). getAttribute ( "OnLines"); if (onlines == null) {onlines = collections.synchronizedmap (new Hashmap <String, httpsession> ()); // 맵에 동기화 잠금을 추가 se.getSession (). getServletContext (). setattribute ( "onlines", onlines); } onlines.put (se.getSession (). getId (), se.getSession ()); } @override public void sessionDestroyed (httpssessionEvent se) {map <string, httpsession> onlines = (map <string, httpsession>) se.getSession (). getServletContext (). getAttribute ( "OnLines"); if (onlines.containskey (se.getSession (). getId ())) {onlines.remove (se.getSession (). getId ()); }}}characterfilter.java (문자 필터)
패키지 cn.hncu.filter; import java.io.ioexception; import javax.servlet.filter; import javax.servlet.filterchain; import javax.servlet.filterconfig; import javax.servlet.servletexception; import javax.servlet.servletrequest; import javlex; javax.servlet.http.httpservletrequest; public class char @override public void init (FilterConfig FilterConfig) servleTeXception {charset = filterconfig.getInitParameter ( "charset"); } @override public void dofilter (servletrequest 요청, servletreponse 응답, 필터 체인 체인)는 ioexception, servletexception {request.setcharacterencoding (charset); 응답 .SetchAracterEncoding (charset); httpservletrequest req = (httpservletrequest) 요청; if (req.getSession (). getAttribute ( "ip") == null) {req.getSession (). setAttribute ( "ip", req.getRemoteaddr ()); } chain.dofilter (요청, 응답); } @override public void destroy () {}}loginfilter.java (관광객이 무작위로 필터에 접근하는 것을 방지)
패키지 cn.hncu.filter; import java.io.ioexception; import javax.servlet.filter; import javax.servlet.filterchain; import javax.servlet.filterconfig; import javax.servlet.servletexception; import javax.servlet.servletrequest; import javlex; javax.servlet.http.httpevletrequest; import javax.servlet.http.htttp.httpservletresponse; public class loginfilter 구현 필터 {@override public void init (filterconfig filterconfig) servletexception void void servide, servletrequest recight, servletrequest recight, servletrequest repection, FilterChain 체인) IoException, servleTexception {httpservletRequest req = (httpservletRequest) 요청; if (req.getSession (). getAttribute ( "user") == null) {((httpservletResponse) 응답) .sendRedirect (req.getContextPath ()+"/index.jsp"); 반품; } chain.dofilter (요청, 응답); } @override public void destroy () {}}loginservlet.java
패키지 CN.hncu.servlet; import java.io.ioexception; import java.io.printwriter; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpervletrequest; import; javax.servlet.http.http.httpervletresponse; import cn.hncu.domain.user; public class loginservlet를 확장 httpservlet {public void doget (httpservletrequest request, httpservletresponse 응답) servletexception, ioexception {dopost {depost, 응답); } public void dopost (httpservletRequest 요청, httpservletResponse 응답) servletexception, ioexception {string name = request.getParameter ( "name"); user user = (user) request.getSession (). getAttribute ( "user"); if (user == null && name! = null && name.trim (). length ()> 0) {// acapulation user = new user (); user.setName (이름); if (name.equals ( "admin")) {user.setadmin (true); }} request.getSession (). setAttribute ( "사용자", 사용자); response.sendRedirect (request.getContextPath ()+"/index.jsp"); }}showservlet.java
패키지 CN.hncu.servlet; import java.io.ioexception; import java.io.printwriter; import java.text.simpledateformat; import java.util.arraylist; import java.util.date; import java.util.hashmap; import java.util.util.terty; java.util.map; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.htttp.htttp.htttp.httpervletrequest; import javax.servlet.htttp.htttp.htttp.httpervletresponse; showservlet는 httpservlet {public void doget (httpservletrequest request, httpservletreponse 응답)을 servletexception, ioexception {dopost (요청, 응답); } public void dopost (httpservletRequest 요청, httpservletResponse 응답) servletexception, ioexception {map <string, httpsession> onlines = (map <string, httpsession>) request.getServletContext (). getAttribute ( "OnLines"); List <map <string, object >> list = new arraylist <map <string, object >> (); // bar bar bar bar (onlines! = null) {iterator <httpsession> it = onlines.values (). iterator (); while (it.hasnext ()) {httpsession s = it.next (); map <string, object> map = new Hashmap <String, Object> (); map.put ( "id", s.getid ()); simpledateformat sdf = new simpledateformat ( "yyyy-mm-dd hh : mm : ss"); map.put ( "CreateTime", sdf.format (새 날짜 (s.getCreationTime ())); map.put ( "lastAccessedTime", sdf.format (새 날짜 (s.getLastAccessedTime ())); map.put ( "ip", s.getAttribute ( "ip")); // IP 정보는 문자 filter map.put ( "사용자", s.getAttribute ( "user"))에 보완됩니다. list.add (지도); }} request.setAttribute ( "onlines", list); request.getRequestDispatcher ( "/jsps/show.jsp"). FORMPER (요청, 응답); }}KickoutServlet.java
패키지 cn.hncu.servlet; import java.io.ioexception; import java.io.printwriter; import java.util.map; import javax.servlet.servletexception; import javax.servlet.http.httpervax.servlet.http.httpepest.httpepest.; javax.servlet.http.httpervletresponse; import javax.servlet.http.httpsession; import javax.servlet.http.httpsession; import javax.servlet.http.httpsestion; import javax.servlet.http.http.http.httpession; javax.servlet.http.httpsession; import javax.servlet.http.httpsession; import javax.servlet.http.httpsession; import javax.servlet.http.httpsession; import httpservlet {public void dogget (httpserverpronse resition). servletexception, ioexception {dopost (요청, 응답); } public void dopost (httpservletRequest 요청, httpservletResponse 응답) servletexception, ioexception {string id = request.getParameter ( "id"); map <string, httpsession> onlines = (map <string, httpsession>) request.getServletContext (). getAttribute ( "onlines"); if (onlines! = null) {if (onlines.containskey (id)) {onlines.get (id) .invalidate (); }} request.getRequestDispatcher ( "/servlet/showservlet"). FORWAR (요청, 응답); }}loginoutservlet.java
패키지 CN.hncu.servlet; import java.io.ioexception; import java.io.printwriter; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpervletrequest; import; javax.servlet.http.httpervletresponse; public class loginoutservlet는 httpservlet {public void doget (httpservletrequest request, httpservletresponse 응답)을 servletexception, ioexception {dopost (요청, 응답); } public void dopost (httpservletRequest 요청, httpservletResponse 응답) servletexception, ioexception {request.getSession (). invalidate (); response.sendRedirect (request.getContextPath ()+"/index.jsp"); }} 위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.