ก่อนหน้านี้ เราได้กล่าวไว้ว่าโปรแกรม JSP เป็นโมดูลและมีฟังก์ชันการร้องขอการนำเสนอที่มีประสิทธิภาพ การสร้างการเข้าถึงฐานข้อมูลที่สมบูรณ์แบบเป็นกระบวนการที่ท้าทาย และอินเทอร์เฟซ JDBC สามารถทำให้กระบวนการนี้เสร็จสมบูรณ์ได้ด้วยดี อย่างไรก็ตาม โค้ด JDBC ที่ฝังอยู่ในโค้ด JSP เช่นเดียวกับคำสั่ง SQL ที่ฝังอยู่ใน JDBC สามารถใช้ความสามารถของ JSP ได้อย่างเต็มที่เพื่อสร้าง API ที่สะอาดตาและเรียบง่ายสำหรับไคลเอ็นต์ เพื่อให้บรรลุวัตถุประสงค์นี้ เราสามารถพิจารณาใช้การดำเนินการ JSP เพื่อสร้างส่วนประกอบอินเตอร์เฟสฐานข้อมูล
รูปแบบการออกแบบ JSP ที่สมบูรณ์แบบคือ Model-View-Controller (MVC) ระบบสามระดับแบบดั้งเดิมคือ: Model มีไว้สำหรับตรรกะของโปรแกรมและข้อมูล View มีไว้สำหรับการดู และ Controller มีไว้สำหรับการประมวลผลคำขอ ตามโมเดลนี้ โปรแกรม JSP ประกอบด้วยเพจสำหรับแต่ละ "แถว" ของ "กล่องโต้ตอบ" ของไคลเอ็นต์-เซิร์ฟเวอร์ ในโปรแกรมทั่วไป คุณอาจเห็นหน้าแบบสอบถาม หน้าตรวจสอบ หน้าแทรกฐานข้อมูล หน้าอัพเดตฐานข้อมูล และอื่นๆ
ในบทความก่อนหน้านี้ เราได้กล่าวถึงวิธีการฝัง JDBC ในแต่ละหน้าเพื่อให้แน่ใจว่าโครงสร้างของโปรแกรมมีความสมเหตุสมผลมากขึ้น อย่างไรก็ตาม การสร้างคำสั่ง SQL ที่ปฏิบัติการได้ รวมถึงตัวแปรที่ส่งผ่านคำสั่ง JDBC อาจเพิ่มความซับซ้อนของโปรแกรมด้วย
การดำเนินการ JSP ที่ออกแบบโดย JDBC
อีกวิธีหนึ่งในการดำเนินการฐานข้อมูล JSP คือการสร้างคอลเลกชันของการดำเนินการสำหรับฐานข้อมูลโดยไม่ต้องใช้ JDBC เมื่อใช้วิธีการนี้ คุณจะได้รับประโยชน์สองประการ: ประการแรก คุณสามารถขจัดความจำเป็นในการใช้ JDBC ซึ่งทำให้งานจำนวนมากง่ายขึ้น ประการที่สอง การออกแบบและการจัดระเบียบโค้ดของคุณมีความสมเหตุสมผลมากกว่า (เช่น ความสามารถในการอ่าน ประสิทธิภาพที่ยืดหยุ่น และการบำรุงรักษา)
คุณยังต้องมีไดรเวอร์บางตัว แต่คุณทำให้ขั้นตอนข้างต้นง่ายขึ้นก่อน การดำเนินการในโปรแกรม JSP เป็นบล็อกแบบลอจิคัลที่โดยปกติแล้วจะถูกเขียนและใช้งานโดยนักพัฒนาโปรแกรม JSP อื่นๆ แต่คุณสามารถใช้เป็นรูทีนย่อยได้ ความสำคัญของการใช้การดำเนินการ JSP คือการสร้างมาตรฐานให้กับฟังก์ชันบางอย่าง และลดจำนวนโค้ด Java ที่ฝังอยู่ใน JSP ให้เหลือน้อยที่สุด
JSP จัดให้มีชุดของคลาสส่วนขยายมาตรฐาน ด้วยคลาสเหล่านี้ คุณสามารถกำหนดการดำเนินการผ่านตัวจัดการแท็กได้ มีอินเทอร์เฟซ Java สองอินเทอร์เฟซที่กำหนดโดย JSP: อินเทอร์เฟซแท็กและอินเทอร์เฟซ BodyTag ซึ่งดำเนินการโดยคลาส TagSupport และคลาส BodyTagSupport ตามลำดับ
คุณสามารถสร้างไลบรารีแท็กเพื่อจุดประสงค์ทั่วไปของ JSP และคุณยังสามารถใช้ตัวจัดการแท็กเพื่อขยายการสนับสนุนคลาสได้อีกด้วย ต่อไปนี้เป็นขั้นตอนในการนำกระบวนการเหล่านี้ไปใช้
ขั้นแรก ดำเนินการคลาสตัวจัดการแท็ก:
packagecom.myactions;
(ใบแจ้งยอดการนำเข้าไปที่นี่)
MyActionTag คลาสสาธารณะขยาย TagSupport {
-
}
ต่อไป คอมไพล์โค้ดนี้และวางไฟล์คลาสลงในคลาสไลบรารีของโปรแกรม จากนั้น คุณจะต้องมีไฟล์ Tag Library Descriptor (TLD) ซึ่งเป็นไฟล์ XML ที่ตรงกับชื่อการกระทำของคุณและคลาสของเครื่องจัดการแท็กที่เกี่ยวข้อง
<แท็ก>
<name>แอคชั่นของฉัน</name>
<tagclass>com.myactions.MyActionTag</tagclass>
<เนื้อหาเนื้อหา> (อะไรก็ได้) </เนื้อหาเนื้อหา>
<attribute>ข้อมูลของฉัน</attribute>
</tag>
</tag>
การทดลองที่เกี่ยวข้อง
สมมติว่าคุณได้สร้างการดำเนินการชื่อ MyAction ซึ่งเป็น TLD ที่ตรงกับคลาส com.myactions.MyActionTag ไฟล์ TLD จะต้องอยู่ในเส้นทาง TLD ของโปรแกรม
เมื่อคุณเรียกใช้การดำเนินการจากเพจ JSP TLD จะบอก JSP ถึงคลาสที่ถูกต้องเพื่อใช้การดำเนินการ สิ่งนี้นำมาซึ่งความสะดวกสบายอย่างยิ่งและต้องใช้โค้ดเพียงเล็กน้อยเท่านั้น
แต่จะแนะนำ SQL ได้ที่ไหน? ขั้นแรก คุณต้องสร้างการเข้าถึงฐานข้อมูลด้วยความสามารถในการเชื่อมต่อ คุณสามารถทำได้โดยใช้อินเตอร์เฟส javax ซึ่งมีอยู่ในกล่องเครื่องมือเสริม JDBC 2.0 คลาส javax.sql.DataSource ของ JDBC 2.0 มอบการเชื่อมต่อที่คุณต้องการ
SQL อยู่ที่ไหน ณ จุดนี้? มันอยู่ในถั่ว คุณสามารถใช้ JDBCcreateStatement และ PreparationStatement เพื่อสร้างวิธีการใน bean ทำให้วิธีนี้เป็นเวกเตอร์สาธารณะและส่งคำสั่ง SQL ของคุณไปยังวิธีนี้อย่างถูกต้อง
สรุป bean ฐานข้อมูลของคุณดำเนินการคำสั่ง SQL ที่ฝังอยู่ในเนื้อหาการดำเนินการ คุณสามารถส่งคำสั่งไปยังคำสั่ง SQL หรือใช้เพื่อดำเนินการล่วงหน้าได้ คุณสามารถดำเนินการของคุณผ่านเครื่องจัดการแท็ก เนื่องจาก JDBC ถูกฝังอยู่ในโค้ดไลบรารี คุณจึงไม่สามารถใช้งานได้อย่างชัดเจนในโปรแกรม JSP
เมื่อมองแวบแรกแนวทางนี้อาจดูซับซ้อนกว่า SQL แบบฝังใน JDBC และแบบฝัง JDBC ใน JSP แต่เนื่องจากคุณสร้างการดำเนินการ SQL และจัดเก็บไว้ใน TLD คุณจึงต้องดำเนินการเพียงครั้งเดียวในโปรแกรม JSP ทั้งหมดที่คุณสามารถเข้าถึงได้ การดำเนินการเหล่านี้ นี่คือข้อดีของแนวทางนี้
ครั้งต่อไป เราจะพูดถึงการถ่ายโอนข้อมูลระหว่างเพจ JSP และเซสชัน