Java Server Pages (JSP) ซึ่งอำนวยความสะดวกในการพัฒนาโปรแกรมอย่างรวดเร็วจากฝั่งเซิร์ฟเวอร์ ได้กลายเป็นเครื่องมือที่ได้รับความนิยมอย่างกว้างขวาง แม้ว่าด้านที่น่าเบื่อยังคงมีอยู่ ไม่ว่าจะมีข้อบกพร่องมากเพียงใด JSP ก็มีหลายสิ่งที่จะนำเสนอให้กับโปรแกรมเมอร์เว็บ โดยเฉพาะอย่างยิ่งกับการดำเนินการอินพุตและเอาท์พุตของฐานข้อมูลและการประมวลผลข้อมูล
การเข้าถึงฐานข้อมูลผ่าน JSP ไม่ต้องการคำแนะนำมากนัก ปัญหาคือจะทำให้นักพัฒนายอมรับว่าการเข้าถึงฐานข้อมูลจากโปรแกรมเว็บนั้นน่าดึงดูดใจมากกว่าการเข้าถึงฐานข้อมูลจากระบบ OLAP ในพื้นที่แบบเดิมๆ และทำให้พวกเขาตระหนักว่าวิธีการเข้าถึงข้อมูลที่กระชับและชัดเจนคือกุญแจสำคัญ ณ จุดนี้ JSP สามารถแก้ปัญหาได้ดีมาก
คุณทำอะไรได้บ้าง?
หากคุณกำลังเขียนโปรแกรมเว็บที่มีปริมาณข้อมูลสูงและมีความหนาแน่นของข้อมูลสูง การเข้าถึงฐานข้อมูลของคุณควรมีข้อกำหนดอะไรบ้าง หากคุณใช้ JSP คุณจะต้องจัดการกับข้อมูลฝั่งเซิร์ฟเวอร์จำนวนมาก โปรแกรมอาจต้องการข้อมูลจำนวนมาก หรือมีผู้ใช้จำนวนมาก หรือทั้งสองอย่างรวมกัน ประเด็นที่เป็นไปได้ที่คุณอาจพิจารณาได้แก่: การเพิ่มประสิทธิภาพการทำงาน การตรวจจับได้ ผลกระทบของการสืบค้นหลายรายการต่อผู้ใช้ ความซับซ้อนของการสืบค้น และการแปลงประเภทระดับสูงเมื่อเซสชันเดียวจัดการกับข้อมูลจำนวนมาก
สิ่งนี้เกี่ยวข้องกับการประมวลผลขนาดใหญ่ อย่างไรก็ตาม JSP สามารถช่วยคุณจัดการกับมันได้ดีเพราะมันเข้ากันได้ดีกับ Java Database Connectivity API (JDBC) คุณสามารถรวม JDBC ในโค้ด JSP ได้ และ JDBC สามารถส่งคำสั่งเพื่อดำเนินการคำสั่งที่เหมือนกับฐานข้อมูลได้ ตราบใดที่คุณใช้ไดรเวอร์ JDBC อย่างถูกต้อง
เริ่ม
นี่คือระบบการดำเนินการโปรแกรม JSP เชิงนามธรรมทั่วไป รูปแบบการออกแบบ JSP ที่ต้องการคือ Model-View-Controller (MVCModel-View-Controller) ซึ่งเป็นรูปแบบของระบบสามระดับแบบดั้งเดิมเพื่อให้เหมาะกับโปรแกรมเซิร์ฟเวอร์มากขึ้น ในรูปแบบการออกแบบ MVC ของ JSP นั้น Model หมายถึงตรรกะและข้อมูลของโปรแกรม View หมายถึงการดู และ Controller หมายถึงการประมวลผลคำขอ
เมื่อคุณออกแบบโปรแกรม JSP วิธีที่ดีที่สุดคือสร้างเพจที่เป็นขั้นตอนแรกระหว่างการโต้ตอบระหว่างไคลเอ็นต์และเซิร์ฟเวอร์ ตัวอย่างเช่น ในโปรแกรมทั่วไป จะมีหน้าสำหรับแต่ละขั้นตอนเฉพาะในการแลกเปลี่ยนข้อมูล: หน้าป้อนข้อมูล หน้าคำขอตรวจสอบ หน้าการตอบสนองของฐานข้อมูล และหน้าย่อยของหน้าเหล่านี้ (หน้าบันทึกการเปลี่ยนแปลง บันทึกการลบ หน้า ฯลฯ)
คุณสามารถฝัง JDBC ลงในทุกเพจเพื่อดำเนินการฐานข้อมูลที่ร้องขอให้เสร็จสมบูรณ์ อย่างไรก็ตาม การดำเนินการนี้ยังมีความเสี่ยงสูง เนื่องจากโปรแกรมทั้งหมดถูกผสมโดยการผสม JSP และ JDBC-JDBC จะขึ้นอยู่กับ SQL ซึ่งหมายความว่า SQL ถูกห่อหุ้มใน JDBC และ JDBC ก็ถูกห่อหุ้มใน JSP เช่นกัน ซึ่งเพียงพอแล้วที่จะทำให้คุณเวียนหัว หากคุณเลือกแนวทางนี้ คุณจะได้รับฟังก์ชันการทำงานที่คุณต้องการ แต่ควรระมัดระวังเป็นพิเศษเพื่อให้แน่ใจว่าความสัมพันธ์ระหว่างตรรกะของโปรแกรมและรหัสการเข้าถึงฐานข้อมูลมีความชัดเจนมาก
ฝังตัวJDBC
JDBC API ไม่ได้สื่อสารโดยตรงกับฐานข้อมูล การเชื่อมต่อจริงทำได้โดยไดรเวอร์ ซึ่งคุณสามารถดาวน์โหลดได้จากเว็บไซต์ของผู้ขาย นอกจากนี้ ยังมีไดรเวอร์ JDBC อีกสี่ประเภท หากคุณตัดสินใจใช้ JDBC คุณจะต้องเลือกประเภทที่เหมาะกับความต้องการของคุณมากที่สุด คุณจะใช้คลาส DriverManager เพื่อจัดการการเชื่อมต่อตามไดรเวอร์
คุณสามารถใช้เมธอด DriverManager ที่เรียกว่า getConnection เพื่อสร้างการเชื่อมต่อฐานข้อมูลของคุณได้ คุณยังสามารถระบุฐานข้อมูลโดยใช้พารามิเตอร์ URL:
public static Connection getConnection(jdbc:odbc:nameOfDatabase)
ตอนนี้ บอก DriverManager เกี่ยวกับไดรเวอร์ (ควรอยู่ใน classpath ของคุณ):
Class.forName("sun.jdbc. odbc.nameOfJDBCDriver ”);
คุณได้เชื่อมต่อฐานข้อมูลกับโปรแกรม JSP แล้ว แต่ยังไม่สามารถดำเนินการคำสั่งฐานข้อมูลได้ เพื่อแก้ไขปัญหานี้ คุณสามารถสร้างคำสั่งในโค้ด JSP เพื่อสร้างคำสั่งฐานข้อมูลดังนี้:
public Statement createStatement(intresultSetType, intresultSetConcurrency)
พารามิเตอร์ช่วยให้คุณสามารถควบคุมผลลัพธ์ที่ได้รับจากการสืบค้นฐานข้อมูล เมื่อใช้พารามิเตอร์แรก คุณจะเห็นผลลัพธ์ในโปรแกรม เมื่อใช้พารามิเตอร์ตัวที่สอง คุณสามารถอัปเดตค่าผ่านการสืบค้นได้ (นี่เป็นคุณลักษณะที่น่าทึ่งที่สมควรได้รับการอภิปรายเพิ่มเติมในบทความต่อๆ ไป)
ตาราง A แสดงความซับซ้อนของการแจกแจงสองวิธีถัดไป
Statement คือคำสั่ง SQL ReadyStatement เป็นคำสั่งของ SQL และคุณสามารถควบคุมกระบวนการของโปรแกรมผ่านพารามิเตอร์ได้ CallableStatement ใช้เพื่อเข้าถึงขั้นตอนการจัดเก็บ SQL คุณเริ่มตระหนักหรือไม่ว่าหากคุณไม่เห็นคำแนะนำเหล่านี้ คุณพบว่าข้อความเหล่านี้ซับซ้อนหรือไม่ โปรดทราบว่าโดยการเรียกวิธีการย้อนกลับ คุณสามารถยกเลิกกระบวนการทำธุรกรรมได้
หากคุณต้องการใช้วิธีการเข้าถึงฐานข้อมูลเหล่านี้ทั้งหมด สิ่งเดียวที่คุณขาดหายไปคือ:
ResultSetexecuteQuery(string sqlQuery)
(คุณสามารถใช้ExecuteQueryเพื่อดำเนินการตามกระบวนการข้างต้นให้เสร็จสิ้น คุณยังสามารถใช้ExecuteUpdateเพื่ออัปเดต แทรก และลบให้เสร็จสิ้นได้) อินเทอร์เฟซการประกาศของคุณด้านบนอนุญาตให้คุณใช้หลายวิธีในการดำเนินการประกาศ SQL ResultSet ทั้งหมดที่ทำคือการเข้าถึงข้อมูลที่ได้รับจากการสืบค้น ดังนั้นคุณจึงสามารถใช้ข้อมูลนี้ในโปรแกรม JSP ของคุณได้
ด้วยการแบ่งโปรแกรม JSP ออกเป็นเพจเดียวที่ชัดเจนตามหน้าที่และดำเนินการกับการดำเนินการฐานข้อมูลเดียวในเพจที่กำหนด คุณสามารถทำให้การดำเนินการฐานข้อมูลของคุณง่ายขึ้นอย่างมาก และสร้างเพจที่สามารถใช้สำหรับการพัฒนาโปรแกรมในอนาคต แม้ว่าคุณจะฝัง SQL ลงใน JDBC บนเพจเหล่านี้ก็ตาม .
แต่ยังมีอะไรอีกมากมายที่คุณสามารถทำได้เพื่อทำให้การเข้าถึงฐานข้อมูล JSP ของคุณสะอาดขึ้นและดูแลรักษาง่ายขึ้น การฝัง JDBC ในโค้ด JSP และการสื่อสารกับฐานข้อมูลโดยการส่งคำสั่ง SQL เป็นกระบวนการที่ดี อย่างไรก็ตาม จำเป็นต้องมีการสร้างโปรแกรมสำหรับคำสั่ง SQL ผ่านทางอินเทอร์เฟซ โดยไม่เพิ่มความซับซ้อนของโค้ด เมื่อการประมวลผล SQL ของคุณต้องการความยืดหยุ่นที่เพิ่มขึ้น คุณสามารถแยกโค้ดอินเตอร์เฟสฐานข้อมูลของคุณเพิ่มเติมเพื่อล้างโปรแกรม JSP ของคุณ ในบทความต่อไปนี้ ฉันจะบอกวิธีนำกระบวนการเหล่านี้ไปใช้