このブログは、フィルター、リスナー、サーブレットテクノロジーの関連する概要であり、オンラインユーザーの簡単な表示、オンラインパーソンの詳細、管理者のキッキング機能を実装しています
以下は詳細なコードです
web.xml
<?xml version = "1.0" encoding = "utf-8"?> <web-appバージョン= "3.0" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns:xsi = "http://www.w3.org/2001/xmlschema-instcance" xsi:schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/ns/javaee/web-app_0.xsd"> display-name> <filter-name> character </filter-name> <filter-class> cn.hncu.filter.characterfilter </filter-class> <init-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> charatele </filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name> login> <url-pattern>/jsps/*</url-pattern> <dispatcher> request </dispatcher> <dispatcher> </dispatcher> </filter-mapping> <リスナー> <リスナークラス> cn.hncu.listener.mysessionlistener </serider-name> <サーブレットクラス> cn.hhncu.servlet.loginervlet </servlet-class> </servlet> <servlet> <servlet-name> showervlet </servlet-name> <servlet-class> cn.hhncu.servlet.showservlet </servet-class> </servet>私のj2eeコンポーネントの名前</display-name> <servlet-name> kickoutservlet </servlet-name> <servlet-class> cn.hncu.servlet.kickoutservlet </servlet-class> </servlet> <servlet> <説明>これは私のj2eeコンポーネント</説明> <ディスプレイ - マイ> <Servlet-Name> loginoutservlet </servlet-name> <servlet-class> cn.hhncu.servlet.loginoutservlet </servlet-class> </servlet> <servlet-mapping> <servlet-name> loginservlet </servlet-name> <url-pittern> </url-dervlete </urltletm> <サーブレットマッピング> <Servlet-Name> shosservlet </servlet-name> <url-pattern>/servet/shoshervlet </url-pattern> </servlet-mapping> <servlet-name> kickoutservlet </servlet-name> <url-pattern>//servlet mapptevet <Servlet-Name> loginoutservlet </servlet-name> <url-pattern>/servlet/loginoutservlet </url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file> index.jsp </welcome-file> </welcome-file-list> </web-app>
index.jsp
<%@ページ言語= "java" import = "java.util。*" pageencoding = "utf-8"%> <%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> < Transitional // en "> <html> <head> <title>オンライン情報管理</title> </head> <body> <h2>オンライン情報管理</h2> <h3>メンバーのログイン</h3> <c:if test =" $ {empty sessionscope.user.name} "var =" boo " value = "/loginservlet"> </c:url> '> name:<入力タイプ= "text" name "name"> <br/> <入力タイプ= "value =" login "> <br/> </form> </c:if> <c:if test =" $ {!boo} "> welcome = {sessionscope.userscope.user.name} sessionscope.user.admin} "var =" bo "> admin </c:if> <c:if test =" $ {!bo} "> member </c:if> </c:if> <br/> <c:" $ {!boo} "var =" boo "> <a hreflet"/show = "/show ="/show =情報</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"プレフィックス= "C"%> < Transitional // en "> <html> <head> <title>オンライン情報</title> <style type =" text/css "> table {color:green;ボーダー:1pxソリッドブルー;国境崩壊:崩壊;幅:500px;マージン:自動; } td {border:1px solid blue; } th {border:1px solid blue; } body {text-align:center; } </style> <メタhttp-equiv = "content =" 3 "> </head> <body> <body> <body> <table> <tr> <th> name </th> <th> online </th> <th>最後のアクセス時間</th> <th> ip </th> <th> operation </th> </th> </th> </th> <c:foreach =" $ {"$ <"> " <td> <c:if test = "$ {!empty online.user}" var = "boo"> $ {online.user.name} </c:if> <c:if> <c:if test = "$ {empty online.user}"> visitor </c:if> </td> <td> $ {nowlin.creatime} </td> < }</td> <td>${online.ip }</td> <td> <c:if test="${online.user!=sessionScope.user }"> <c:if test="${!online.user.admin&&boo}"> <a href='<c:url value="/servlet/KickOutServlet?id=${online.id } "/> '> kickout </a> </c:if> </c:if> </td> </tr> </c:foreach> </table> </body> </html>user.java(値オブジェクト)
パッケージcn.hncu.domain; public class user {private string name;プライベートブール管理者。 public string getName(){return name; } public void setName(string name){this.name = name; } public boolean isadmin(){return admin; } public void setAdmin(boolean admin){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.httssession; Import javax.servlet.http.httpsessessevent MySessionListenerはhttpssessionListener {@Override public void sessioned(httpssessionevent se){map <string、httpsesssion> onlines =(map <string、httpsession>)se.getSession()。 if(onlines == null){onlines = collections.synchronizedMap(new hashmap <string、httpsession>()); //マップに同期ロックを追加するse.getsession()。 } onlines.put(se.getSession()。getId()、se.getSession()); } @Override public void sessiondestroyed(httpssessionevent se){map <string、httpsession> onlines =(map <string、httpsession>)se.getsession()。 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.Servlete.Servletreest.Servletretreest.Servletretretret. javax.servlet.http.httpservletrequest; public class charactlefilter explments filter {private string charset; @Override public void init(filterconfig filterconfig)servletexception {charset = filterconfig.getInitParameter( "charset"); } @Override public void dofilter(servletRequest request、servletResponse応答、フィルターチェーンチェーン)IoException、servletexception {request.setcharacterencoding(charset); Response.setcharacterencoding(charset); httpservletrequest req =(httpservletrequest)request; if(req.getSession()。getAttribute( "ip")== null){req.getSession()。setattribute( "ip"、req.getRemoteaddr()); } Chain.dofilter(request、response); } @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.Servlete.Servletreest.Servletretreest.Servletretretret. javax.servlet.http.httpservletrequest; Import javax.servlet.http.httpservletresponse;パブリッククラスのログインフィルターはフィルター{@Override public void init(filterconfig filterconfig)をスローIOException、ServletException {httpservletrequest req =(httpservletrequest)request; if(req.getSession()。getAttribute( "user")== null){((httpservletResponse)response).sendredirect(req.getContextPath()+"/index.jsp");戻る; } Chain.dofilter(request、response); } @Override public void Destroy(){}}loginservlet.java
パッケージcn.hncu.servlet; Import java.io.ioexception; import java.io.printwriter; import javax.servlet.servletexception; Import javax.servlet.httpservlet; Import javax.servlet.http.httpsertrequest; Import; javax.servlet.http.httpservletresponse; Import cn.hncu.domain.user; public class loginservlet extends httpservlet {public void request(httpservletrequest request(httpservletresponse応答)Servletexceptipectipt、ioexception、ioEcsective {dopost、Requirect(request(resuption); } public void dopost(httpservletrequest request、httpservletresponse応答)throws servletexception、ioexception {string name = request.getParameter( "name");ユーザーユーザー=(ユーザー)request.getSession()。getAttribute( "user"); if(user == null && name!= null && name.trim()。length()> 0){// cankapsulate user user = new user(); user.setname(name); if(name.equals( "admin")){user.setadmin(true); }} request.getSession()。setAttribute( "user"、user); Response.sendredirect(request.getContextPath()+"/index.jsp"); }}showervlet.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.itil.itil. java.util.map; Import javax.servlet.servletexception; Import javax.servlet.http.httpservlet; Import javax.servlet.httpservletrequest; Import javax.servlet.http.https.httpts.httpptpptppptpppptppptppptpptpptpptpptpptptpptptpptptptptptptptptptptptptptptptptptptps.httpstpstptspps.httpservletretsprestps.httpser showervletはhttpservletを拡張します{public void doget(httpservletrequest request、httpservletresponse応答)throws servletexception、ioexception {dopost(request、response); } public void dopost(httpservletrequest request、httpservletresponse応答)servletexception、ioexception {map <string、httpsession> onlines =(map <string、httpssession>)request.getServletContext()。 List <Map <String、Object >> list = new ArrayList <Map <String、Object >>(); // Bar Onlineは、(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(new Date(S.GetCreationTime()))); map.put( "lastaccessedtime"、sdf.format(new Date(s.getLastaccessedTime()))); map.put( "ip"、s.getattribute( "ip")); // ip情報はcharatelefilter map.put( "user"、s.getattribute( "user"))で補完されます。 list.add(マップ); }} request.setattribute( "onlines"、list); request.getRequestDispatcher( "/jsps/show.jsp")。 }}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.httpservlet; Import javax.servlet.http.httptservletreqest; javax.servlet.http.httpservletResponse; Import javax.servlet.http.httpsession; Import javax.servlet.servlet.servlet.servlet.servlet.servlet.http.httpsession; Import javax.http.httpsession; Import; javax.servlet.http.httpsesssion; Import javax.servlet.http.httpsession; Import javax.servlet.http.httpsession; Import javax.servlet.http.httpsession; Import enteds httpservlet ServletException、ioException {dopost(request、response); } public void dopost(httpservletrequest request、httpservletResponse応答)throws 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")。 }}loginoutservlet.java
パッケージcn.hncu.servlet; Import java.io.ioexception; import java.io.printwriter; import javax.servlet.servletexception; Import javax.servlet.httpservlet; Import javax.servlet.http.httpsertrequest; Import; javax.servlet.http.httpservletResponse; public class loginoutservletはhttpservlet {public void doget(httpservletrequest request、httpservletresponse応答)servletexception、ioexception {dopost(request、response、response); } public void dopost(httpservletrequest request、httpservletResponse応答)servletexception、ioexception {request.getsession()。invalidate(); Response.sendredirect(request.getContextPath()+"/index.jsp"); }}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。