ยินดีต้อนรับหน้ายินดีต้อนรับ.jsp
เมื่อผู้ใช้ป้อนรหัสผ่านที่ถูกต้อง switch.jsp จะควบคุมเพจ JSP เพื่อกำหนดทิศทางของหน้ายินดีต้อนรับของ jsp ในส่วนนี้ เราจะพัฒนาเพจยินดีต้อนรับ jsp เนื่องจากwelcome.jspจำเป็นต้องใช้ไลบรารีแท็กของบริษัทอื่น คุณจึงต้องทำการกำหนดค่าบางอย่างใน JBuilder เพื่อแนะนำไลบรารีแท็กนี้ก่อนที่จะพัฒนาwelcome.jsp
กำหนดค่าไลบรารีแท็กบุคคลที่สามใน JBuilder
องค์กรโอเพ่นซอร์สของ Apache มีไลบรารีแท็กที่มีประโยชน์มากมาย หน้าต้อนรับ ยินดีต้อนรับ jsp จำเป็นต้องใช้ไลบรารีแท็ก datetime จาก Apache คุณสามารถใช้ไลบรารีแท็กนี้เพื่อแสดงเวลาต่างๆ ใน JSP ที่อยู่การดาวน์โหลดคือ: /u/info_img /2009-07/02/jakarta-taglibs-datetime-1.0.1.zip
โดยทั่วไปไลบรารีแท็กจะมีสองไฟล์ ไฟล์หนึ่งเป็นไฟล์คลาสแพ็กเกจ JAR และอีกไฟล์เป็นไฟล์คำอธิบายแท็กที่มีนามสกุล .tld หลังจากคลายการบีบอัดไฟล์บีบอัดที่ดาวน์โหลดมา เราจะวางไฟล์ taglibs-datetime.jar และ taglibs-datetime.tld ในไดเร็กทอรี <project directory>/datetimeTag
หากต้องการใช้ไลบรารีแท็กของบริษัทอื่นในโปรเจ็กต์ คุณต้องกำหนดค่าไลบรารีแท็กใน JBuilder ล่วงหน้าและอ้างอิงในโปรเจ็กต์ การกำหนดค่าไลบรารีแท็กจะคล้ายกับการกำหนดค่าไลบรารีคลาส และยังดำเนินการผ่านกล่องโต้ตอบกำหนดค่าไลบรารีอีกด้วย ไลบรารีคลาส JBuilder และไลบรารีแท็กแสดงอยู่ในแผนผังทางด้านซ้ายในกล่องโต้ตอบ Configure Libraries ไลบรารีคลาสจะแสดงเป็น ไอคอน ในขณะที่ไลบรารีแท็กปรากฏเป็น ไอคอน. ต่อไปเราจะกำหนดค่าไลบรารีแท็ก datetime ลงใน JBuilder
1. เครื่องมือ -> กำหนดค่า -> ไลบรารี -> กล่องโต้ตอบกำหนดค่าไลบรารี
คลิกปุ่มเพิ่ม... ที่มุมซ้ายล่างของกล่องโต้ตอบกำหนดค่าไลบรารีเพื่อเปิดกล่องโต้ตอบตัวช่วยสร้างไลบรารีใหม่ ดังที่แสดงด้านล่าง:
รูปที่ 17 กล่องโต้ตอบตัวช่วยสร้างไลบรารีใหม่ |
ตั้งชื่อไลบรารีนี้ใน Name: datetimeTag แล้วกด OK เพื่อกลับไปยังกล่องโต้ตอบ Configure Libraries
2. ระบุไฟล์ไลบรารีแท็ก
หลังจากกลับไปที่กล่องโต้ตอบ Configure Libraries โหนด datetimeTag จะปรากฏในแผนผังทางด้านซ้าย เนื่องจากไม่ได้ระบุไฟล์ไลบรารีของคลาสไว้ จึงแสดงเป็นสีแดงที่เห็นได้ชัดเจนซึ่งต่างจากโหนดอื่น คลิก datetimeTag และสลับหน้าการตั้งค่า Library ไปที่ Framework ในหน้าแท็บดังที่แสดงด้านล่าง:
รูปที่ 18 สลับไปยังกรอบงาน |
เลือกตัวเลือกไลบรารีแท็ก JSP ที่ผู้ใช้กำหนดในกล่องแบบเลื่อนลงของกรอบงาน คลิกปุ่มเพิ่ม... ที่ด้านล่างขวาของหน้าแท็บ จากนั้นกล่องโต้ตอบกำหนดไลบรารีแท็กใหม่จะปรากฏขึ้น ดังแสดงในรูป ด้านล่าง:
รูปที่ 19 ไฟล์คำอธิบายที่ระบุไลบรารีแท็ก |
ในกล่องโต้ตอบกำหนดไลบรารีแท็กใหม่ ให้คลิกปุ่ม... หลังไฟล์ TLD และนำทางไปยังไฟล์ <project directory>/datetimeTag/taglibs-datetime.tld โดยทั่วไปแล้ว หลังจากการยืนยัน JBuilder จะเติมการตั้งค่าที่เหลือโดยอัตโนมัติ ไม่จำเป็นต้องเปลี่ยนการตั้งค่าการเติมอัตโนมัติของ JBuilder เหล่านี้ ในบรรดาคำเหล่านั้น คำนำหน้าจะระบุคำนำหน้าอ้างอิงสำหรับไลบรารีแท็กนี้ คลิกปุ่ม OK เพื่อกลับไปยังกล่องโต้ตอบ Configure Libraries โหนด datetimeTag จะแสดงเป็นสีปกติดังที่แสดงด้านล่าง:
รูปที่ 20 ผลกระทบหลังจากกำหนดค่าไลบรารีแท็กอย่างถูกต้อง |
คลิกปุ่มตกลงในกล่องโต้ตอบกำหนดค่าไลบรารีเพื่อกำหนดค่าไลบรารีแท็ก datetime ให้เสร็จสมบูรณ์
3. อ้างอิงไลบรารีแท็กที่กำหนดค่าใหม่นี้ในโปรเจ็กต์ปัจจุบัน
โปรเจ็กต์->คุณสมบัติของโปรเจ็กต์...->พาธ->สลับไปที่แท็บไลบรารีที่จำเป็น->คลิกปุ่มเพิ่ม... เพื่อเลือก datetimeTag จากไลบรารีคลาส JBuilder หลังจากการกำหนดค่าสำเร็จ กล่องโต้ตอบคุณสมบัติของโครงการจะมีลักษณะดังนี้:
รูปที่ 21 ไลบรารีอ้างอิงโครงการ |
สร้างเพจยินดีต้อนรับ JSP
1. ไฟล์->ใหม่…->เว็บ->ดับเบิลคลิกไอคอน JSP เพื่อเริ่มตัวช่วยสร้างการสร้าง JSP ระบุชื่อไฟล์ JSP เป็นที่ต้อนรับ และคลิก ถัดไป เพื่อไปยังขั้นตอนถัดไป
2. อ้างอิงไลบรารีแท็ก datetimeTag ในหน้ายินดีต้อนรับ jsp
ในขั้นตอนที่ 2 ของวิซาร์ด คุณได้รับอนุญาตให้เลือกไลบรารีแท็กต่างๆ ใน JBuilder ไลบรารีแท็ก datetimeTag ที่เรากำหนดค่าไว้ในส่วนก่อนหน้านี้ยังปรากฏในรายการไลบรารีแท็ก ดังแสดงในรูปต่อไปนี้:
รูปที่ 22 ไลบรารีแท็กอ้างอิง |
ขยายแท็ก datetime และตรวจสอบ taglibs-datetime แล้วคลิกถัดไปเพื่อไปยังขั้นตอนถัดไป
3. อ้างอิงอ็อบเจ็กต์ userBean ที่อยู่ในโดเมนเซสชันใน switch.jsp
รูปที่ 23 การอ้างอิง userBean ที่อยู่ในเซสชันใน switch.jsp |
คลิกเพิ่ม Bean... เพื่อเลือกคลาส bookstore.User ระบุชื่อ Bean เป็น ses_userBean ในคอลัมน์ ID และเลือกขอบเขตเซสชันในคอลัมน์ขอบเขต ses_userBean เป็นชื่อที่ระบุสำหรับ userBean ใน switch.jsp เว็บคอนเทนเนอร์จะค้นหาออบเจ็กต์ในเซสชันตามชื่อนี้ หากไม่พบ มันจะสร้างออบเจ็กต์ bookstore.User เนื่องจาก Welcome.jsp ถูกเรียกหลังจากสวิตช์ .jsp ดังนั้น เว้นแต่เซสชันจะหมดอายุ จะสามารถค้นหาอ็อบเจ็กต์ userBean ได้
คลิกเสร็จสิ้นโดยตรงเพื่อสร้างไฟล์welcome.jsp โค้ดจะเป็นดังนี้:
รายการรหัส 15 หน้ายินดีต้อนรับของ jsp
1. <%@ หน้า contentType="text/html; charset=GBK" %>< 2. <%@ taglib uri="http://jakarta.apache.org/taglibs/datetime-1.0" prefix="dt" %> 3. <html> 4. <หัว> 5. <หัวข้อ>< 6.ยินดีต้อนรับ 7. </หัวข้อ>< 8. </หัว>< 9. <jsp:useBean id="ses_userBean" scope="session" class="bookstore.User" /> 10. <jsp:setProperty name="ses_userBean" property="*" /> 11. <body bgcolor="#ffffff"> 12. <h1>< 13. JBuilder สร้าง JSP 14. </h1>< 15. </ตัว> 16. </html> |
ไลบรารีแท็กที่อ้างอิงในขั้นตอนที่ 2 ของวิซาร์ดได้รับการตั้งค่าให้สอดคล้องกับโค้ดการประกาศไลบรารีแท็กที่อ้างอิงในบรรทัดที่ 2 Bean ที่ตั้งค่าไว้ในขั้นตอนที่ 3 สอดคล้องกับโค้ดบรรทัดที่ 9 ถึง 10 เนื่องจากไม่จำเป็นต้องกรอกค่า Bean ใน Welcome.jsp จึงควรลบโค้ดในบรรทัด 10 ด้วยตนเอง
ต่อไป เราจะอ้างอิงไลบรารีแท็ก datetime ในไฟล์ยินดีต้อนรับ jsp และใช้เพื่อสร้างสตริงรูปแบบเวลาปัจจุบัน เปิดไฟล์ยินดีต้อนรับ jsp และสลับไปที่หน้ามุมมองแหล่งที่มา ขั้นแรกให้ล้างโค้ดที่สร้างโดย JBuilder ใน <body></body> จากนั้นป้อน "<dt:" ใน <body></body> จากนั้น JBuilder จะใช้ฟังก์ชัน TagInsight เพื่อแสดงรายการแท็กที่มีอยู่ทั้งหมดในไลบรารีแท็กนี้ ดังนี้ ดังแสดงในรูป:
รูปที่ 24 การใช้ TagInsight เพื่อเข้าสู่ไลบรารีแท็ก
สามารถใช้ TagInsight เพื่อป้อนแท็กที่มีอยู่ในไลบรารีแท็กได้อย่างง่ายดาย ซึ่งช่วยเพิ่มความเร็วในการป้อนโค้ดของไลบรารีแท็กได้อย่างมาก และรับประกันความถูกต้อง ในwelcome.jsp เราใช้ไลบรารีแท็กเพื่อรับสตริงเวลาที่จัดรูปแบบปัจจุบัน นอกจากนี้ เรายังได้รับชื่อผู้ใช้ผ่าน ses_userBean รหัสสุดท้ายของ Welcome.jsp มีลักษณะดังนี้:
รายการรหัส 16 ยินดีต้อนรับสู่ jsp อ้างอิงถึงไลบรารีแท็กและอ็อบเจ็กต์เซสชัน
1. <%@page contentType="text/html; charset=GBK" errorPage="error.jsp" %> 2. <%@taglib uri="http://jakarta.apache.org/taglibs/datetime-1.0" คำนำหน้า = "dt"% > 3. <html> 4. <หัว> 5. <หัวข้อ>ยินดีต้อนรับ</หัวข้อ> 6. </หัว>< 7. <jsp:useBean id="ses_userBean" scope="session" class="bookstore.User"/> 8. <body bgcolor="#ffffff">คุณคือ 9. <%=ses_userBean.getUserName()%> ยินดีต้อนรับสู่เข้าสู่ระบบ <br> 10. เวลาปัจจุบันคือ<dt:format pattern="MM/dd/yyyy hh:mm"><dt:currentTime/></dt:format"> 11. <br><คลิก<a href="quit.jsp">ที่นี่</a>เพื่อออกจากระบบ 12. </ตัว> 13. </html> |
นอกจากนี้ JBuilder ยังคัดลอกไฟล์คำอธิบายไลบรารีแท็ก datetime taglibs-datetime.tld ไปยัง WEB-INF และแก้ไขไฟล์ web.xml เพื่อประกาศที่อยู่ของ taglibs-datetime.tld:
รายการรหัส 17 การประกาศไฟล์คำอธิบายแท็กใน web.xml
1. <?xml version="1.0" encoding="UTF-8"?> 2.… 3. <เว็บแอป> 4. <แท็กลิบ>< 5. <taglib-uri>http://jakarta.apache.org/taglibs/datetime-1.0</taglib-uri> 6. <taglib-location></WEB-INF/taglibs-datetime.tld</taglib-location> 7. </taglib>< 8. </เว็บแอป> |
ดังที่แสดงไว้ข้างต้น ในบรรทัดที่ 4 ถึง 7 ของ web.xml JBuilder จะเพิ่มไฟล์คำอธิบายของไลบรารีแท็ก datetime โดยอัตโนมัติ เพื่อให้เว็บคอนเทนเนอร์สามารถค้นหาข้อมูลที่ต้องการได้อย่างถูกต้อง
เมื่อคอมไพล์โปรเจ็กต์เพื่อสร้างเว็บไดเร็กทอรี JBuilder จะคัดลอกไฟล์ JAR taglibs-datetime.jar ของไลบรารีแท็ก datetime ไปยังไดเร็กทอรี WEB-INF/lib
เมื่อผู้ใช้เข้าสู่ระบบสำเร็จ เขาจะถูกเปลี่ยนเส้นทางไปยังหน้ายินดีต้อนรับ jsp เอฟเฟกต์ของหน้าดังที่แสดงด้านล่าง:
รูปที่ 25 หน้าเอฟเฟกต์ยินดีต้อนรับ jsp |
เมื่อผู้ใช้คลิกลิงก์ "ที่นี่" ระบบจะลิงก์ไปยัง Quit.jsp เพจ Quit.jsp มีหน้าที่ล้างเซสชัน หลังจากล้างเซสชันแล้ว ระบบจะแยกวัตถุที่อ้างอิงในเซสชันและปล่อยทรัพยากร
หน้าออกจากการประมวลผล Quit.jsp
เนื่องจากโปรโตคอล HTTP ทำงานในลักษณะคำขอ/ตอบกลับ เมื่อไคลเอ็นต์ออกจากระบบ จะต้องส่งคำขอไปยังเว็บเซิร์ฟเวอร์เพื่อแจ้งให้เว็บเซิร์ฟเวอร์ทำลายเซสชันได้ทันเวลา มิฉะนั้น เว็บเซิร์ฟเวอร์จะรอเท่านั้น จนกว่าเซสชั่นจะหมดลงก่อนที่จะทำลายมัน
เราใช้ Quit.jsp เพื่อจัดการการออกจากระบบของผู้ใช้ Quit.jsp มีหน้าที่ออกจากระบบเซสชันและปล่อยทรัพยากรในเวลาที่เหมาะสม
·ออกจากระบบเซสชั่น
·ปิดหน้าต่างเบราว์เซอร์
รหัสมีดังนี้:
1. <%@ หน้า contentType="text/html; charset=GBK" %>< 2.<% 3. session.invalidate(); 4. %> 5. <ภาษาสคริปต์="จาวาสคริปต์" > 6. window.opener = null; 7. หน้าต่าง.ปิด(); 8. </สคริปต์>< |
บรรทัดที่ 3 มีหน้าที่ล็อกเอาต์ออกจากเซสชัน วัตถุที่วางไว้ในเซสชันจะถูกปลดออกและรอให้การรวบรวมขยะปล่อยทรัพยากร สำหรับตัวอย่างนี้มีอ็อบเจ็กต์ userBean ชื่อ ses_userBean ในเซสชัน (ถูกใส่เข้าไปในเซสชันใน switch.jsp) หลังจากเรียก session.invalidate() แล้ว userBean จะไม่ถูกผูกไว้จากเซสชัน และเมธอด valueUnbound( ) จะ ถูกกระตุ้นแล้วรอเก็บขยะ
บรรทัดที่ 5 ถึง 8 เป็นโปรแกรมสคริปต์ JavaScript ที่รับผิดชอบในการปิดหน้าต่าง หากไม่ได้เปิดหน้าเว็บผ่านโปรแกรมสคริปต์ (window.open()) จะต้องตั้งค่าวัตถุ window.opener ก่อนที่จะเรียก window.close() script เพื่อปิดหน้าต่าง เป็นโมฆะ ดังแสดงในบรรทัดที่ 6 มิฉะนั้นเบราว์เซอร์จะปรากฏขึ้นมาเพื่อยืนยันการปิดหน้าต่าง
ประสบการณ์จริง:
เมื่อผู้ใช้ออกจากระบบ เซสชันจะต้องออกจากระบบ ไม่เช่นนั้นวัตถุเซสชันจะไม่ถูกล้างจนกว่าเซสชันจะหมดอายุในเซิร์ฟเวอร์ สมมติว่าเวลาที่ไม่มีการใช้งานสูงสุดของเซสชันคือ 30 นาที (เวลาเริ่มต้น) หากไม่ได้ล้างออบเจ็กต์เซสชันด้วยตนเอง ทรัพยากรระบบที่ครอบครองโดยออบเจ็กต์เหล่านี้จะไม่ถูกปล่อยจนกว่าจะผ่านไป 30 นาทีหลังจากที่ผู้ใช้ออกจากระบบ |