บทความนี้อธิบายฟังก์ชั่นการใช้งาน Java Web ที่ข้ามไปยังหน้าเข้าสู่ระบบโดยอัตโนมัติหลังจากเซสชันหมดอายุ แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
ผ่านตัวกรองเซสชันจะข้ามไปยังหน้าเข้าสู่ระบบโดยอัตโนมัติหลังจากหมดอายุ
ตัวกรองมีประโยชน์เฉพาะกับเซิร์ฟเวอร์ที่เข้ากันได้กับข้อกำหนด Servlet เวอร์ชัน 2.3 หากเว็บแอปพลิเคชันของคุณต้องการรองรับเซิร์ฟเวอร์ดั้งเดิมคุณไม่สามารถใช้ตัวกรองได้
1. สร้างตัวกรองพื้นฐาน
การสร้างตัวกรองเกี่ยวข้องกับห้าขั้นตอนต่อไปนี้:
1) สร้างคลาสเซสชัน Filter ที่ใช้อินเทอร์เฟซตัวกรอง คลาสนี้ต้องการสามวิธีคือ: dofilter, init และทำลาย วิธี Dofilter มีรหัสการกรองหลักวิธีการเริ่มต้นจะสร้างการดำเนินการตั้งค่าและวิธีการทำลายล้างทำความสะอาด
2) ใส่พฤติกรรมการกรองในวิธี Dofilter พารามิเตอร์แรกของวิธี Dofilter คือวัตถุ ServletRequest วัตถุนี้ให้ตัวกรองพร้อมการเข้าถึงข้อมูลที่เข้ามาอย่างเต็มรูปแบบรวมถึงข้อมูลแบบฟอร์มคุกกี้และส่วนหัวคำขอ HTTP พารามิเตอร์ที่สองคือ ServletResponse ซึ่งมักจะถูกละเว้นในตัวกรองอย่างง่าย พารามิเตอร์สุดท้ายคือ FilterChain ตามที่อธิบายไว้ในขั้นตอนถัดไปซึ่งใช้เรียกหน้า servlet หรือ jsp
3) เรียกวิธี Dofilter ของวัตถุ SessionFilter วิธี Dofilter ของอินเทอร์เฟซตัวกรองใช้วัตถุ FilterChain เป็นพารามิเตอร์ เมื่อเรียกใช้วิธี Dofilter ของวัตถุนี้ตัวกรองที่เกี่ยวข้องถัดไปจะถูกเปิดใช้งาน หากไม่มีตัวกรองอื่นเชื่อมโยงกับหน้า servlet หรือ jsp หน้า servlet หรือ jsp จะเปิดใช้งาน
4) ลงทะเบียนตัวกรองสำหรับหน้า servlet และ jsp ที่เกี่ยวข้อง ใช้องค์ประกอบตัวกรองและตัวกรองในไฟล์ descriptor descriptor (web.xml)
5) ปิดใช้งาน servlet activator ป้องกันไม่ให้ผู้ใช้ผ่านการตั้งค่าตัวกรองโดยใช้ URL Servlet เริ่มต้น
ซอร์สโค้ดมีดังนี้:
แพ็คเกจ com.base.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; นำเข้า com.base.constants.session // ตัวกรองทำลายโดยทั่วไปปล่อยทรัพยากร} / ** * URL บางอย่างจำเป็นต้องเข้าสู่ระบบเพื่อเข้าถึง (ตัวกรองการตรวจสอบเซสชัน) * / โมฆะสาธารณะ dofilter (servletrequest arg0, servletresponse arg1, filterchain arg2) โยน ioexception, servletexception httpservletResponse response = (httpservletResponse) arg1; httpsession session = request.getSession (); // ตัดสินว่าเซสชันจะหมดอายุหรือไม่หาก ((ผู้ใช้) เซสชัน. getAttribute (sessionkeyconstants.login) == null) {string errors = "คุณยังไม่ได้เข้าสู่ระบบหรือเซสชันหมดอายุโปรดเข้าสู่ระบบก่อน!"; request.setAttribute ("ข้อความ", ข้อผิดพลาด); // ข้ามไปยังคำขอหน้าเข้าสู่ระบบ getRequestDispatcher ("/login.jsp"). forward (คำขอ, การตอบกลับ); } else {arg2.dofilter (คำขอ, การตอบกลับ); }} public void init (filterConfig arg0) พ่น servletexception {// เริ่มต้นการดำเนินการอ่านพารามิเตอร์การเริ่มต้นของการกำหนดค่าตัวกรองใน web.xml และตรงตามข้อกำหนดที่คุณไม่ได้ใช้วิธีนี้}}}}}}}}}}}}}2. กำหนดค่าในไฟล์กำหนดค่า web.xml
<!-ตั้งเวลาการหมดอายุของเซสชันเป็น 30 นาที-> <เซสชัน-คอนฟิก> <Session-TimeOut> 30 </session-Timeout> </ession-config> <!-การกำหนดค่าตัวกรองเซสชันที่เกี่ยวข้อง-> <filter> <Stilter-Name> SessionFilter </filter-name> <url-pattern>/สัญญา/*</url-pattern> <url-pattern>/ผู้ใช้/*</url-pattern> <dispatcher> ส่งต่อ </dispatcher> <!-ในกรณีนี้หากคำขอเริ่มต้นด้วย/สัญญา/... กรอง. -> <dispatcher> คำขอ </dispatcher> </ตัวกรอง-แมป>
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเนื้อหาที่เกี่ยวข้องกับ Java โปรดตรวจสอบหัวข้อของไซต์นี้: "โครงสร้างข้อมูล Java และการสอนอัลกอริทึม", "บทสรุปของไฟล์ Java และทักษะการดำเนินงานไดเรกทอรี", "บทสรุปของทักษะการดำเนินงาน Java Dom Node" และ "สรุปทักษะการดำเนินงาน Java Cache"
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม Java ของทุกคน