บทความนี้ส่วนใหญ่ศึกษาการใช้ตัวกรองตัวกรองที่เกี่ยวข้องใน Java และรหัสการใช้งานเฉพาะมีดังนี้
ตัวกรองตัวกรองส่วนใหญ่จะใช้เพื่อส่งข้อมูลไปยังแบ็กเอนด์ ระดับนั้นง่ายมากดังนั้นฉันจะให้รหัสสองสามรายการที่เขียนไว้:
1. ตัวกรองที่ทำให้เบราว์เซอร์ไม่ใช่หน้าแคช
นำเข้า javax.servlet.*; นำเข้า Javax.servlet.http.httpservletResponse; นำเข้า java.io.ioException;/***ตัวกรองที่ใช้ทำเบราว์เซอร์ไม่ใช่หน้าแคช*/คลาสสาธารณะ iOexception, servletexception {((httpservletResponse) การตอบสนอง) .SetheAder ("แคชควบคุม", "ไม่มีแคช"); ((httpservletResponse) การตอบสนอง). setheader ("pragma", "no-cache"); ((httpservletResponse) การตอบสนอง) .setDateHeader ("หมดอายุ", -1); FilterChain.dofilter (คำขอ, การตอบกลับ); } โมฆะสาธารณะทำลาย () {} public void init (filterConfig filterConfig) พ่น servletexception {}}2. ตัวกรองเพื่อตรวจสอบว่าผู้ใช้เข้าสู่ระบบหรือไม่
public class checkloginFilter ใช้ตัวกรอง {protected filterConfig filterConfig = null; สตริงส่วนตัว redirecturl = null; รายการส่วนตัว Notcheckurllist = new ArrayList (); สตริงส่วนตัวเซสชั่นคีย์ = null; โมฆะสาธารณะ Dofilter (ServletRequest ServletRequest, ServletResponse ServletResponse, FilterChain FilterChain) พ่น IOException, Servletexception {httpservletRequest Request = (httpservletRequest) ServletRequest; httpservletResponse response = (httpservletResponse) servletResponse; httpsession session = request.getSession (); if (sessionkey == null) {filterchain.dofilter (คำขอ, การตอบกลับ); กลับ; } if ((! CheckRequesturiintNotFilterList (คำขอ)) && session.getAttribute (SessionKey) == null) {response.sendredirect (request.getContextPath () + redirecturl); กลับ; } filterchain.dofilter (servletrequest, servletResponse); } โมฆะสาธารณะทำลาย () {notcheckurllist.clear (); } private boolean checkRequesturiitNotFilterList (คำขอ httpservletRequest) {string uri = request.getServletPath () + (request.getPathInfo () == null? ": request.get.getPathInfo ()); ส่งคืน Notcheckurllist.contains (URI); } public void init (filterConfig filterConfig) พ่น servletexception {this.filterConfig = filterConfig; redirecturl = filterConfig.getInitParameter ("redirecturl"); SessionKey = FilterConfig.getInitParameter ("ChecksessionKey"); String NotcheckurllistStr = filterConfig.getInitParameter ("Notcheckurllist"); if (notcheckurlliststr! = null) {stringTokenizer st = new StringTokenizer (Notcheckurlliststr, ";"); Notcheckurllist.clear (); ในขณะที่ (st.hasmoretokens ()) {notcheckurllist.add (st.nexttoken ()); -3. ตัวกรองการเข้ารหัสอักขระ
นำเข้า javax.servlet.*; นำเข้า java.io.ioException;/***ตัวกรองที่ใช้ในการตั้งค่าการเข้ารหัสอักขระคำขอ HTTP ระบุว่าการเข้ารหัสอักขระใดที่ใช้เพื่อใช้ผ่านการเข้ารหัสพารามิเตอร์ตัวกรอง ""; โมฆะสาธารณะ dofilter (servletrequest servletrequest, servletresponse servletresponse, filterchain filterchain) โยน ioexception, servletexception {ถ้า (เข้ารหัส! = null) servletrequest.setcharacterencoding {filterConfig = null; การเข้ารหัส = null;} โมฆะสาธารณะ init (filterConfig filterConfig) พ่น servletexception {this.filterConfig = filterConfig; this.encoding = filterConfig.getInitParameter ("การเข้ารหัส");}}4. บันทึกผู้ให้บริการการเข้าถึงของผู้ใช้
แพ็คเกจ com.qwserv.itm.pfl.log.svr; นำเข้า java.io.ioexception; นำเข้า javax.servlet.filter; นำเข้า javax.servlet.filterchain; นำเข้า javax.servlet.filterconfig; javax.servlet.servletResponse; นำเข้า java.text.simpledateFormat; นำเข้า Javax.servlet.http.httpservletrequest นำเข้า com.qwserv.itm.api.pfl.sm.vo.person; com.qwserv.itm.util.toolkit.debugutil; คลาสสาธารณะ ObserveFilter ใช้ตัวกรอง {ป้องกัน debugutil log = debugutil.getInstances ("pfl-log", observeFilter.class); ioException, servletexception {// บันทึกการเข้าถึงการเข้าถึงผู้ใช้ httpservletrequest request1 = (httpservletrequest) คำขอ; stringbuffer url = request1.getRequesturl (); // กรอง URL (url) js/css/css.tosring) SimpledateFormat ("YYYY-MM-DD HH: MM: SS") รูปแบบ (ใหม่ java.util.date ()); string hostip = request.getRemoteaddr (); String sessionId = request1.getRequestedSessionId (); String userId = "" บุคคลบุคคล = (บุคคล) request1.getSession () getAttribute ("userobj"); person.getUser (). getId ();} string querystring = request1.getQueryString (); ถ้า (null! = querystring) {url.append ('?'); url.append (querystring);} // savetodb filterchain.dofilter (คำขอ, การตอบสนอง);} โมฆะสาธารณะเริ่มต้น (FilterConfig filterConfig) พ่น servletexception {} public Boolean Judgefile (url สตริง) {ถ้า (url.endswith (". gif") || url.endswith (". jpg") | | url.endswith (". bmp") || url.endswith (". css") || url.endswith (". js") || ในการเชื่อมต่อฐานข้อมูล conn = null; คำสั่ง st = null; ลอง {// สร้างนิพจน์ SQL และแทรกข้อมูลลงในฐานข้อมูล conn = serviceAccess.getSystemSupportService (). getDefaultConnection () ST = conn.createstatement () ค่า ('" + userId +"', '" + url +"', '" + desc +"', '" + sessionid +"', '" + hostip +"', '" + operatortime +"') " (serviceAccess.getSystemSupportService (). getConnectionType (conn) == serviceAccess.getSystemSupportService (). jca_type_oracle) {sql = "แทรกลงใน log_observe_history ค่า (log_observe_seq.nextval, '" + userid +"', '" + url +"', '" + desc +"', '" + sessionid +"', '"hostip +"' to_date ('"aperatime +"' (ข้อยกเว้น e) {E.PrintStackTrace (); log.error ("-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- {ลอง {st.close ();} catch (Exception e) {e.printstacktrace ();} st = null;} ถ้า (conn! = null) {ลอง {conn.close ();} catch (Exception e) {E.printstacktrace ();} conn = null;<silter> <filter-name> observeFilter </filter-name> <filter-class> com.qwserv.itm.pfl.log.svr.observeFilter </filter-class> </filter> <filter-mapping>
5. ฟิลเตอร์ป้องกันไม่ให้ผู้ใช้เข้าถึงทรัพยากรที่ไม่ได้รับอนุญาต
แพ็คเกจ com.drp.util.filter; นำเข้า java.io.ioexception; นำเข้า Javax.servlet.filter; นำเข้า Javax.servlet.filterchain; นำเข้า Javax.servlet.filterconfig; นำเข้า Javax.servlet.servletexception; javax.servlet.http.httpservletrequest; นำเข้า javax.servlet.http.httpservletResponse; นำเข้า Javax.servlet.http.httpsession; Authfilter คลาสสาธารณะ ServletResponse, FilterChain FilterChain) พ่น IOException, ServleTexception {// 1, พารามิเตอร์แรกของวิธี Dofilter คือวัตถุ ServletRequest วัตถุนี้ให้ตัวกรองพร้อมการเข้าถึงข้อมูลที่เข้ามาอย่างเต็มรูปแบบรวมถึงข้อมูลแบบฟอร์มคุกกี้และส่วนหัวคำขอ HTTP พารามิเตอร์ที่สองคือ ServletResponse ซึ่งมักจะถูกละเว้นในตัวกรองอย่างง่าย พารามิเตอร์สุดท้ายคือ FilterChain ซึ่งใช้เรียกหน้า servlet หรือ jsp httpservletRequest request = (httpservletrequest) servletrequest; //; // ถ้าคุณประมวลผลคำขอ HTTP และจำเป็นต้องเข้าถึงวิธีการเช่น getheader หรือ getCookies ที่ไม่สามารถรับได้ String currentUrl = request.getRequesturi (); // รับเส้นทางสัมบูรณ์ที่สอดคล้องกับไดเรกทอรีราก: สตริง targetUrl = currentUrl.substring (currentUrl.indexof ("/", 1), currentUrl.length ()); // seave ชื่อไฟล์ปัจจุบัน if (! "/login.jsp" .equals (TargetUrl)) {// ตัดสินว่าหน้าปัจจุบันเป็นหน้าเข้าสู่ระบบหลังจากการเปลี่ยนเส้นทาง ถ้าเป็นเช่นนั้นอย่าตัดสินเซสชันเพื่อป้องกันการวนซ้ำที่ตายแล้วถ้า (เซสชัน == null || session.getAttribute ("ผู้ใช้") == null) {//*หลังจากผู้ใช้เข้าสู่ระบบคุณต้องเพิ่ม Session.out.println ("request.getContextPath () =" "/login.jsp">);//if เซสชันว่างเปล่าหมายความว่าผู้ใช้ไม่ได้ลงชื่อเข้าใช้เปลี่ยนเส้นทางไปยังหน้า login.jsp ส่งคืน;}} // เข้าร่วมห่วงโซ่ตัวกรองและดำเนินการต่อเพื่อดำเนินการ FilterChain.dofilter เรียกวิธี Dofilter ของวัตถุ FilterChain วิธี Dofilter ของอินเทอร์เฟซตัวกรองใช้วัตถุ FilterChain เป็นพารามิเตอร์ เมื่อเรียกใช้วิธี Dofilter ของวัตถุนี้ตัวกรองที่เกี่ยวข้องถัดไปจะถูกเปิดใช้งาน หากไม่มีตัวกรองอื่นเชื่อมโยงกับหน้า servlet หรือ jsp หน้า servlet หรือ jsp จะเปิดใช้งาน } public void init (filterConfig filterConfig) พ่น servletexception {}}HTML
<silter> <filter-Name> AuthFilter </filter-name> <s Filter-Class> com.drp.util.filter.authfilter </filter-class> </filter> <filter-mapping>
สรุป
ข้างต้นเป็นตัวอย่างรหัสที่สมบูรณ์ของบทความนี้เกี่ยวกับการใช้ตัวกรองใน Java ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!