Jsp เรียกคำสั่ง Javeabean มีการตั้งค่าขอบเขตใน UseBean และโดยทั่วไปจะมีการตั้งค่าเช่นหน้าเซสชันของแอปพลิเค
ชัน คุณสามารถใช้มันได้
เซสชัน
และแอปพลิเคชันหมายความว่า javabean จะมีอยู่ตลอดเวลา เมื่อเทียบกับเซสชัน แอปพลิเคชันจะสัมพันธ์กับแอปพลิเคชัน
โดยทั่วไป ผู้ใช้จะมีเซสชันและจะหายไปเมื่อผู้ใช้ออกจากแอปพลิเคชัน . คล้ายกับ
โปรแกรมเซิร์ฟเล็ต คล้ายกับ "ตัวแปรทั่วโลก" ของทั้งระบบ และมีเพียงอินสแตนซ์เดียวเท่านั้น
ฟังก์ชั่นการควบคุมใน MVC
ดังนั้นคุณสมบัติแอปพลิเคชันจึงเหมาะสมมากสำหรับฟังก์ชั่นการควบคุมใน MVC โดยทั่วไปแล้ว MVC ดั้งเดิมจะใช้เซิร์ฟเล็ตสำหรับฟังก์ชั่นการควบคุม
โดยพื้นฐานแล้ว
คือ เพจ Jsp และ M เป็นมิดเดิลแวร์ Javabeanอย่างไรก็ตาม ด้วยการปรับปรุงและส่งเสริมฟังก์ชัน Jsp มีแนวโน้มค่อยเป็นค่อยไปในการเปลี่ยนเซิร์ฟเล็ต ในทางปฏิบัติ เราใช้ Jsp มากขึ้น บางครั้ง
เพื่อ
ประหยัดปัญหา Jsp จะถูกใช้แทนเซิร์ฟเล็ต โดยเฉพาะฟังก์ชันการควบคุมในความเป็นจริง ฟังก์ชันการควบคุมนี้ถูกห่อหุ้มไว้ใน Javabean Jsp ใช้ scope=application เพื่อเรียก Javabean นี้ ด้วยวิธีนี้
Javabean ที่มีฟังก์ชันการควบคุมจะเหมือนกับเซิร์ฟเล็ตที่อาศัยอยู่ในหน่วยความจำและโต้ตอบกับมิดเดิลแวร์พื้นหลังต่างๆ
การแสดง "โฮมเพจ"
ในการใช้งานจริง เรามักจะมีผู้ใช้หลายรายเข้าถึงเพจหนึ่งๆ พร้อมๆ กัน เช่น โฮมเพจ มีฟังก์ชันมากมายให้รันบนโฮมเพจนี้ เช่น
การจำแนกประเภทไดเร็กทอรี ต้องอ่านข้อมูลต้นไม้จากฐานข้อมูลและขยายและส่งออกไปยังหน้าแรก ฟังก์ชันนี้ถูกห่อหุ้มใน Javabeans
จากนั้น เมื่อโฮมเพจ Jsp เรียก Javabean นี้ ให้ใช้ scope=application จากนั้นใช้อัลกอริธึมการบัฟเฟอร์ข้อมูลแบบต้นไม้ ด้วยวิธีนี้ เมื่อ
ผู้ใช้
หลายคน เข้าถึงโฮมเพจพร้อมกัน JSP โฮมเพจไม่จำเป็นต้องเริ่ม Javabean ทุกครั้ง แล้วอ่านฐานข้อมูลซ้ำๆมันจะเพิ่มความเร็วอย่างมากอย่างไม่ต้องสงสัย
ดังนั้นหาก Jsp หน้าแรกของคุณมีการเข้าชมจำนวนมาก คุณควรใช้เวลาเพิ่มประสิทธิภาพให้มากขึ้น
การบัฟเฟอร์การเชื่อมต่อฐานข้อมูล
< jsp:useBean id="รหัส"
class="oracle.jdbc.pool.OracleConnectionCacheImpl"
ขอบเขต = "application" />
< เหตุการณ์:application_OnStart>
-
cods.setURL("jdbc:oracle:thin:@HOST:PORT:SID");
cods.setUser("สกอตต์");
cods.setPassword("เสือ");
cods.setStmtCache (5);
-
< /event:application_OnStart>
< %@ หน้านำเข้า = "java.sql.*, javax.sql.*, oracle.jdbc.pool.*" %>
< !------------------------------------------------ ----------------
* นี่คือหน้า JavaServer ที่ใช้การแคชการเชื่อมต่อผ่าน
แอปพลิเคชัน
* ขอบเขต แคชถูกสร้างขึ้นในขอบเขตแอปพลิเคชัน
ไฟล์ globals.jsa
* การเชื่อมต่อได้มาจากแคชและนำกลับมาใช้ใหม่หนึ่งครั้ง
เสร็จแล้ว
.------------------------------------------------ --------------------!>
<HTML>
<หัว>
<ชื่อเรื่อง>
ConnCache JSP
</TITLE>
</ /หัว>
<BODY BGCOLOR=เอฟเอฟโฟ>
<H1>สวัสดี
< %= (request.getRemoteUser() != null? ">, " +
request.getRemoteUser() : "") %>
ฉันกำลังเชื่อมต่อแคช JSP
</H1>
<ทรัพยากรบุคคล>
< B> ฉันได้รับการเชื่อมต่อจากแคชและรีไซเคิลกลับ
</B>
<ป>
-
พยายาม {
การเชื่อมต่อ conn = cods.getConnection();
คำสั่ง stmt = conn.createStatement ();
ResultSet rset = stmt.executeQuery ("SELECT ename, sal " +
"จาก scott.emp เรียงตาม ename");
ถ้า (rset.next()) {
-
< เส้นขอบตาราง=1 BGCOLOR="C0C0C0">
< TH WIDTH=200 BGCOLOR="white"> < I>ชื่อพนักงาน</ /I> </ /TH>
< TH WIDTH=100 BGCOLOR="white"> < I>เงินเดือน</I> </ /TH>
< TR> < TD ALIGN=CENTER> < %= rset.getString(1) %> < /TD>
< TD ALIGN=CENTER> $< %= rset.getDouble(2) %> < /TD>
</ /TR>
< % ในขณะที่ (rset.next()) {
-
< TR> < TD ALIGN=CENTER> < %= rset.getString(1) %> < /TD>
< TD ALIGN=CENTER> $< %= rset.getDouble(2) %> < /TD>
</ /TR>
-
-
</ /ตาราง>
-
อื่น {
-
< P> ขออภัย แบบสอบถามไม่ส่งคืนแถว! </P>
-
-
rset.ปิด();
stmt.ปิด();
conn.close(); // ใส่การเชื่อมต่อกลับเข้าไปในพูล
} จับ (SQLException e) {
out.println("< P>" + "เกิดข้อผิดพลาดในการสอบถาม:");
out.println ("< PRE>" + e + "< /PRE>
<ป>");
-
-
</ /ร่างกาย>
</ /HTML>
ใช้แอปพลิเคชันเพื่อแคชการเชื่อมต่อฐานข้อมูลในแต่ละครั้งที่มีการใช้งาน จะถูกนำออกจากบัฟเฟอร์และส่งคืนหลังการใช้งาน