บล็อกนี้เป็นบทสรุปที่เกี่ยวข้องของเทคโนโลยีตัวกรองผู้ฟังและเซิร์ฟเล็ตซึ่งใช้การแสดงอย่างง่าย ๆ ของผู้ใช้ออนไลน์รายละเอียดบุคคลออนไลน์และฟังก์ชั่นการเตะผู้ดูแลระบบ
ด้านล่างคือรหัสโดยละเอียด
web.xml
<? xml เวอร์ชัน = "1.0" การเข้ารหัส = "utf-8"?> <web-app version = "3.0" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: xsi = "http://ww.w3.org/200 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 <filter-name> อักขระ </filter-name> <filter-class> cn.hncu.filter.characterfilter </filter-class> <init-Param> <param-Name> Charset </param-name> <Tilter-Class> cn.hncu.filter.loginFilter </filter-class> </filter> <filter-mapping> <filter-name> อักขระ </filter-name> <url-pattern>/*</url-pattern> <url-pattern>/servlet/*</url-pattern> <url-pattern>/jsps/*</url-pattern> <patcher> คำขอ </dispatcher> <ispatcher> ส่งต่อ </dispatcher> </filter-mapping> <servlet-name> loginservlet </servlet-name> <servlet-class> cn.hncu.servlet.loginservlet </servlet-lass> </servlet> <servlet> J2EE Component </คำอธิบาย> <play-Name> นี่คือชื่อการแสดงผลขององค์ประกอบ j2ee ของฉัน </display-name> <servlet-name> kickoutservlet </servlet-name> <servlet-lass> cn.hncu.servlet.kickoutservlet </servlet-class> J2EE Component </display-Name> <servlet-name> loginoutservlet </servlet-name> <servlet-class> cn.hncu.servlet.loginoutservlet </servlet-lass> </servlet> <servlet-mapping> <servlet-mapping> </servlet-mapping> <servlet-mapping> <servlet-mapping> <servlet-name> showservlet </servlet-name> <url-pattern>/servlet/showlet/showlet </url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name> <servlet-mapping> <servlet-mapping> <servlet-name> loginoutservlet </servlet-name> <url-pattern>/servlet/loginoutservlet </url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file> index.jsp <ยินดีต้อนรับ
index.jsp
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <%@ taglib คำนำหน้า = "c" uri = "http://java.sun.com/jsp/jstl/core"%> Transitional // en "> <html> <head> <ment> การจัดการข้อมูลออนไลน์ </title> </head> <body> <h2> การจัดการข้อมูลออนไลน์ </h2> <h3> การเข้าสู่ระบบสมาชิก </h3> <c: ถ้าทดสอบ =" $ {sessionscope.user.user.name} "var =" boo " value = "/loginservlet"> </c: url> '> ชื่อ: <อินพุต type = "text" name = "name"> <br/> <อินพุต type = "submit" value = "เข้าสู่ระบบ"> <br/> </form> </c: ถ้า> <c: ถ้า test = "$ {! sessionscope.user.admin} "var =" bo "> ผู้ดูแลระบบ </c: ถ้า> <c: ถ้าทดสอบ =" $ {! bo} "> สมาชิก </c: ถ้า> </c: ถ้า> <br/> <c: ถ้าทดสอบ =" $ {! ข้อมูล </a> <br/> <a href = '<c: url value = "/servlet/loginoutservlet"/>'> ทางออกที่ปลอดภัย </a> <br/> </c: ถ้า> </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 "> ตาราง {color: green; เส้นขอบ: 1px Solid Blue; การล่มสลายของชายแดน: การล่มสลาย; ความกว้าง: 500px; มาร์จิ้น: อัตโนมัติ; } TD {Border: 1px Solid Blue; } th {border: 1px solid blue; } body {text-allign: center; } </style> <meta http-equiv = "Refresh" content = "3"> </head> <body> <table> <tr> <th> ชื่อ </th> <th> ออนไลน์ </th> <th> เวลาเข้าถึงล่าสุด </th> <th> ip </th> <th> <td> <c: ถ้า test = "$ {! ว่างออนไลน์ผู้ใช้}" var = "boo"> $ {online.user.name} </c: ถ้า> <c: ถ้า test = "$ {ว่างออนไลน์ user}"> ผู้เยี่ยมชม </c: if> </td> <td> } </td> <td> $ {online.ip} </td> <td> <c: ถ้า test = "$ {online.user! = sessionscope.user}"> <c: ถ้า test = "$ {! online.user.admin && boo}"> <a href = ' } "/> '> kickout </a> </c: ถ้า> </c: ถ้า> </td> </tr> </c: foreach> </table> </body> </html>user.java (วัตถุค่า)
แพ็คเกจ cn.hncu.domain; ผู้ใช้ระดับสาธารณะ {ชื่อสตริงส่วนตัว; ผู้ดูแลระบบบูลีนส่วนตัว สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } บูลีนสาธารณะ isadmin () {return admin; } โมฆะสาธารณะ setadmin (ผู้ดูแลระบบบูลีน) {this.admin = admin; } @Override สตริงสาธารณะ toString () {return "user [name =" + name + ", admin =" + admin + "]"; -MySessionListener.java (ผู้ฟัง)
แพ็คเกจ cn.hncu.listener; นำเข้า java.util.collections; นำเข้า java.util.hashmap; นำเข้า Java.util.map นำเข้า Javax.servlet.http.httpsession; นำเข้า Javax.servlet.http.httpsessionevent; MySessionListener ใช้ httpsessionListener {@Override โมฆะสาธารณะเซสชัน SessionCreated (httpsessionEvent SE) {แผนที่ <สตริง, httpsession> onLines = (แผนที่ <สตริง, httpsession>) se.getSession (). getServletContext () if (onLines == null) {onLines = collections.synchronizedmap (ใหม่ hashmap <string, httpsession> ()); // เพิ่มการล็อคการซิงโครไนซ์ลงในแผนที่ se.getSession (). getServletContext () setAttribute ("onLines", onlines); } onLines.put (se.getSession (). getId (), se.getSession ()); } @Override โมฆะสาธารณะ sessionDestroyed (httpsessionEvent SE) {แผนที่ <สตริง, httpsession> onLines = (แผนที่ <สตริง, httpsession>) se.getSession (). getServletContext () getAttribute ("onLines"); if (onlines.containskey (se.getSession (). getId ())) {onLines.remove (se.getSession (). getId ()); -ตัวละคร FILLASTFILTER.JAVA (ตัวกรองอักขระ)
แพ็คเกจ cn.hncu.filter; นำเข้า java.io.ioexception; นำเข้า Javax.servlet.filter; นำเข้า Javax.servlet.filterchain; นำเข้า Javax.servlet.filterconfig; นำเข้า Javax.servlet.servletexception; javax.servlet.http.htttservletRequest; ตัวละครระดับสาธารณะใช้ตัวกรอง {สตริงส่วนตัว charset; @Override โมฆะสาธารณะ init (FilterConfig FilterConfig) พ่น ServleTexception {charset = filterConfig.getInitParameter ("charset"); } @Override โมฆะสาธารณะ Dofilter (คำขอ ServletRequest, การตอบสนอง servletResponse, ห่วงโซ่ FilterChain) พ่น IOException, ServleTexception {request.Setcharacterencoding (charset); Response.Setcharacterencoding (Charset); httpservletrequest req = (httpservletrequest) คำขอ; if (req.getSession (). getAttribute ("ip") == null) {req.getSession (). setAttribute ("ip", req.getRemoteaddr ()); } chain.dofilter (คำขอ, การตอบกลับ); } @Override โมฆะสาธารณะทำลาย () {}}loginfilter.java (ป้องกันไม่ให้นักท่องเที่ยวจากการเข้าถึงแบบสุ่มไปยังตัวกรอง)
แพ็คเกจ cn.hncu.filter; นำเข้า java.io.ioexception; นำเข้า Javax.servlet.filter; นำเข้า Javax.servlet.filterchain; นำเข้า Javax.servlet.filterconfig; นำเข้า Javax.servlet.servletexception; javax.servlet.http.httpservletRequest; นำเข้า Javax.servlet.http.httpservletResponse; LoginFilter คลาสสาธารณะใช้ตัวกรอง {@Override Void INIT (FilterConfig FilterConfig) FilterChain chain) พ่น IOException, servletexception {httpservletrequest req = (httpservletrequest) คำขอ; if (req.getSession (). getAttribute ("ผู้ใช้") == null) {((httpservletResponse) การตอบสนอง) .SendReDirect (req.getContextPath ()+"/index.jsp"); กลับ; } chain.dofilter (คำขอ, การตอบกลับ); } @Override โมฆะสาธารณะทำลาย () {}}loginServlet.java
แพ็คเกจ cn.hncu.servlet; นำเข้า java.io.ioexception; นำเข้า java.io.printwriter; นำเข้า javax.servlet.servletexception; นำเข้า Javax.servlet.http.httpservlet; นำเข้า Javax.servlet.http.https javax.servlet.http.httpservletResponse; นำเข้า cn.hncu.domain.user; LoginServlet ระดับสาธารณะขยาย httpservlet {โมฆะสาธารณะ doget (httpservletrequest คำขอ, httpservletresponse) } โมฆะสาธารณะ dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น servletexception, ioexception {ชื่อสตริง = request.getParameter ("ชื่อ"); user user = (ผู้ใช้) request.getSession (). getAttribute ("ผู้ใช้"); if (user == null && name! = null && name.trim (). length ()> 0) {// encapsulate user user = user user (); user.setName (ชื่อ); if (name.equals ("admin")) {user.setAdmin (จริง); }} request.getSession (). setAttribute ("ผู้ใช้", ผู้ใช้); Response.Sendredirect (request.getContextPath ()+"/index.jsp"); -sweetervlet.java
แพ็คเกจ cn.hncu.servlet; นำเข้า java.io.ioexception; นำเข้า java.io.printwriter; นำเข้า java.text.simpledateFormat; นำเข้า java.util.arraylist; นำเข้า java.util.date; นำเข้า Java.util.hashmap; java.util.map; นำเข้า javax.servlet.servletexception; นำเข้า Javax.servlet.http.httpservlet; นำเข้า Javax.servlet.http.httpservletrequest; นำเข้า Javax.servlet.http.httpservlet Sweetervlet ขยาย httpservlet {public void doget (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น servletexception, ioexception {dopost (คำขอ, การตอบสนอง); } โมฆะสาธารณะ dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น servletexception, ioexception {แผนที่ <สตริง, httpsession> onLines = (แผนที่ <สตริง, httpsession>) request.getServletContext () รายการ <แผนที่ <string, object >> list = new ArrayList <แผนที่ <string, object >> (); // bar ออนไลน์ห่อหุ้มไว้ในรายการถ้า (onLines! = null) {iterator <httpsession> it = onlines.values () iterator (); ในขณะที่ (it.hasnext ()) {httpsession s = it.next (); แผนที่ <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 เสริมในตัวอักษร Map.put ("ผู้ใช้", S.GetAttribute ("ผู้ใช้")); list.add (แผนที่); }} request.setAttribute ("onLines", รายการ); request.getRequestDispatcher ("/jsps/show.jsp"). forward (คำขอ, การตอบกลับ); -Kickoutservlet.java
แพ็คเกจ cn.hncu.servlet; นำเข้า java.io.ioexception; นำเข้า java.io.printwriter; นำเข้า java.util.map; นำเข้า javax.servlet.servletexception; นำเข้า javax.servlet.http.httpservlet; javax.servlet.http.httpservletResponse; นำเข้า Javax.servlet.http.httpsession; นำเข้า Javax.servlet.http.httpsession; นำเข้า Javax.servlet.http.httpsession; import javax.servlet.http.httpsession; นำเข้า Javax.servlet.http.httpsession; นำเข้า Javax.servlet.http.httpsession; นำเข้า Javax.servlet.http.httpsession; โยน servletexception, ioexception {dopost (คำขอ, การตอบกลับ); } โมฆะสาธารณะ dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น servletexception, ioexception {string id = request.getParameter ("id"); แผนที่ <string, httpsession> onLines = (แผนที่ <string, httpsession>) request.getServletContext (). getAttribute ("onLines"); if (onLines! = null) {ถ้า (onLines.containsKey (id)) {onLines.get (id) .invalidate (); }} request.getRequestDispatcher ("/servlet/sweetervlet"). forward (คำขอ, การตอบกลับ); -loginoutservlet.java
แพ็คเกจ cn.hncu.servlet; นำเข้า java.io.ioexception; นำเข้า java.io.printwriter; นำเข้า javax.servlet.servletexception; นำเข้า Javax.servlet.http.httpservlet; นำเข้า Javax.servlet.http.https javax.servlet.http.httpservletResponse; Loginoutservlet ระดับสาธารณะขยาย HTTPSERVLET {โมฆะสาธารณะ DOGET (HTTPSERVLETREQUEST Request, HTTPSERVLETRESSESSES } โมฆะสาธารณะ dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น servletexception, ioexception {request.getSession (). ไม่ถูกต้อง (); Response.Sendredirect (request.getContextPath ()+"/index.jsp"); - ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น