ในบรรดาเว็บไซต์จำนวนมากบนอินเทอร์เน็ต เว็บไซต์แบบไดนามิกที่ใช้ฐานข้อมูลของเว็บนั้นถูกนำมาใช้กันอย่างแพร่หลาย เว็บไซต์แบบไดนามิกที่ใช้ฐานข้อมูลเครือข่ายเว็บประกอบด้วยเว็บเบราว์เซอร์เป็นอินเทอร์เฟซไคลเอนต์ เซิร์ฟเวอร์ฐานข้อมูลสำหรับการจัดเก็บข้อมูล และเซิร์ฟเวอร์แอปพลิเคชันเว็บที่เชื่อมต่อทั้งสอง เทคโนโลยี CGI ดั้งเดิมสำหรับการพัฒนาเว็บไซต์แบบไดนามิกค่อยๆ ถูกแทนที่ด้วย Java Applets, ตัวควบคุม ActiveX, DHTML และ JavaScript เนื่องจากเทคโนโลยีไคลเอ็นต์ของแอปพลิเคชันเว็บยังคงพัฒนาต่อไป เทคโนโลยีเหล่านี้ปรับปรุงอินเทอร์เฟซผู้ใช้อย่างมาก แต่เมื่อพวกเขาพยายามทำงานเชิงลึก พวกเขาเริ่มประสบปัญหา เช่น ความไม่เข้ากันของเบราว์เซอร์ไคลเอนต์ เซิร์ฟเวอร์โอเวอร์โหลด การเข้าถึงช้า และปัญหาด้านความปลอดภัย เทคโนโลยี JSP เป็นกุญแจสำคัญในการแก้ปัญหาเหล่านี้ บทความนี้จะกล่าวถึงปัญหาทางเทคนิคบางประการในกระบวนการใช้เทคโนโลยี JSP เพื่อสร้างเว็บไซต์แบบไดนามิกเป็นหลัก
เทคโนโลยี JSP
JSP เป็นเทคโนโลยีการพัฒนาเว็บที่ใช้ Java Servlet และระบบ Java ทั้งหมด เทคโนโลยีนี้สามารถใช้เพื่อสร้างเว็บไซต์แบบไดนามิกขั้นสูง ปลอดภัย รวดเร็ว และข้ามแพลตฟอร์ม การเพิ่มแฟรกเมนต์โปรแกรม Java และแท็ก JSP ให้กับไฟล์ HTML ของเว็บเพจแบบดั้งเดิมจะสร้างเว็บเพจ JSP เมื่อเว็บเซิร์ฟเวอร์ได้รับการร้องขอให้เข้าถึงเว็บเพจ JSP เว็บเพจจะดำเนินการส่วนย่อยของโปรแกรมก่อน จากนั้นจึงส่งคืนผลการดำเนินการไปยังไคลเอนต์ในรูปแบบ HTML ส่วนของโปรแกรมสามารถดำเนินการฐานข้อมูล เปลี่ยนเส้นทางหน้าเว็บ ส่งอีเมล ฯลฯ นี่คือฟังก์ชันที่จำเป็นในการสร้างเว็บไซต์แบบไดนามิก การทำงานของโปรแกรมทั้งหมดจะดำเนินการบนฝั่งเซิร์ฟเวอร์ และเฉพาะผลลัพธ์เท่านั้นที่จะถูกส่งไปยังไคลเอนต์บนเครือข่าย โดยมีข้อกำหนดที่ต่ำมากบนเบราว์เซอร์ของไคลเอ็นต์ ดังแสดงในรูปที่ 1 เมื่อผู้ใช้เชื่อมต่อกับเว็บไซต์ JSP ผู้ใช้ร้องขอเว็บเพจ และเพจ JSP ตอบสนองต่อคำขอเพียงอย่างเดียว แปลงคำขอของผู้ใช้สำหรับเว็บเพจเป็นคำขอข้อมูล ประมวลผลคำขอผ่าน JavaBean และสรุปข้อมูลที่ส่งคืนลงในหน้า HTML เพื่อส่งคืนให้กับผู้ใช้
JSP มีข้อดีหลายประการ:
1. เขียนโปรแกรมครั้งเดียวแล้วรันได้ทุกที่ เมื่อออกแบบ JSP ความเป็นอิสระของแพลตฟอร์มแอปพลิเคชันได้รับการพิจารณาอย่างเต็มที่ JSP อาศัยความสามารถในการพกพาของ Java โดยได้รับการสนับสนุนจากแพลตฟอร์มปฏิบัติการยอดนิยมมากมาย และสามารถดำเนินการบนเซิร์ฟเวอร์ เช่น Apache, NetScape และ IIS
2. การดำเนินการที่รวดเร็ว เพจ JSP จำเป็นต้องได้รับการคอมไพล์เพียงครั้งเดียวและแปลงเป็นโค้ดไบต์ Java จากนั้นจะอยู่ในหน่วยความจำเซิร์ฟเวอร์ ซึ่งจะช่วยเร่งการตอบสนองต่อเพจ JSP หากคุณไม่คำนึงถึงเวลาที่ใช้ในการคอมไพล์เพจ JSP เป็นครั้งแรก ความเร็วในการตอบสนองของ JSP จะเร็วกว่า ASP มาก
3. ข้อดีของจาวา เทคโนโลยี JSP ใช้ภาษา Java เป็นภาษาสคริปต์ เทคโนโลยี Java ข้ามแพลตฟอร์ม สมบูรณ์ แข็งแกร่ง และขยายได้ง่ายทำให้การทำงานของนักพัฒนาง่ายขึ้นและง่ายขึ้นในด้านอื่นๆ เมื่อสงสัยว่าระบบ Windows หยุดทำงาน Java จะสามารถป้องกันระบบไม่ให้หยุดทำงานได้อย่างมีประสิทธิภาพ ภาษา Java มีความเป็นเลิศในการจัดการหน่วยความจำโดยจัดเตรียมวิธีการป้องกันหน่วยความจำรั่ว นอกจากนี้ JSP ยังมีกลไกการจัดการเหตุการณ์ที่ไม่คาดคิดที่มีประสิทธิภาพมากขึ้นสำหรับแอปพลิเคชัน ซึ่งให้ประโยชน์อย่างเต็มที่จาก Java
ปัญหาทางเทคนิคของ JSP
1. เชื่อมต่อกับฐานข้อมูล
การเชื่อมต่อฐานข้อมูลเป็นส่วนที่สำคัญที่สุดของเว็บไซต์แบบไดนามิก สามารถใช้เทคโนโลยี ODBC หรือ JDBC เมื่อเชื่อมต่อกับฐานข้อมูลส่วนหลัง แม้ว่า ODBC จะเป็นตัวเลือกเป็นวิธีดั้งเดิมในการเชื่อมต่อกับฐานข้อมูล แต่ ODBC มีข้อบกพร่องร้ายแรงดังต่อไปนี้ ซึ่งทำให้ไม่มีความสามารถสำหรับคำขอ JSP:
(1) ODBC เป็น API ที่ใช้งานในภาษา C เรียกใช้โปรแกรม C ท้องถิ่นจากโปรแกรม Java จะทำให้เกิดปัญหาต่างๆ มากมาย เช่น ความปลอดภัย ความสมบูรณ์ และความทนทาน
(2) ประการที่สอง การใช้งาน ODBC ที่ถูกต้องอย่างสมบูรณ์จากการแปลรหัส C ODBC ไปเป็น Java API จะไม่เป็นที่น่าพอใจ เนื่องจากไม่มีพอยน์เตอร์ใน Java และ ODBC ใช้พอยน์เตอร์จำนวนมาก รวมถึงตัวชี้ null ที่มีแนวโน้มเกิดข้อผิดพลาดอย่างยิ่ง "เป็นโมฆะ " *"
(3) เมื่อพิจารณาถึงความสามารถในการพกพาของแพลตฟอร์ม การใช้ ODBC ในการพัฒนาโปรแกรม JSP จะมีผลกระทบเชิงลบ ทำให้โค้ดไม่เหมาะสมสำหรับการพกพา
เพื่อให้โปรแกรมง่ายต่อการปลูกถ่ายในขณะที่มีความปลอดภัย ความสมบูรณ์ และความคงทน ควรใช้ JDBC เพื่อเชื่อมต่อกับฐานข้อมูล JDBC เป็น Java API ที่สามารถใช้เพื่อดำเนินการคำสั่ง SQL ประกอบด้วยคลาสและอินเทอร์เฟซบางส่วนที่เขียนด้วยภาษา Java ช่วยให้นักพัฒนาสามารถเขียนแอปพลิเคชันฐานข้อมูลที่สมบูรณ์ในภาษา Java ล้วนๆ ด้วยการใช้ JDBC คำสั่ง SQL สามารถส่งไปยังฐานข้อมูลเกือบทุกชนิดได้อย่างง่ายดาย กล่าวอีกนัยหนึ่ง คุณไม่จำเป็นต้องเขียนโปรแกรมหนึ่งโปรแกรมเพื่อเข้าถึง Sybase อีกโปรแกรมหนึ่งเพื่อเข้าถึง Oracle และอีกโปรแกรมหนึ่งเพื่อเข้าถึง SQL Server ของ Microsoft โปรแกรมที่เขียนด้วย JDBC สามารถส่งคำสั่ง SQL ไปยังระบบจัดการฐานข้อมูลที่เกี่ยวข้องได้โดยอัตโนมัติ
เมื่อโปรแกรมฐานข้อมูลท้องถิ่นใช้ฐานข้อมูลเช่น Access ของ Microsoft จะสามารถใช้บริดจ์ JDBC-ODBC ที่พัฒนาโดย Sun ได้ ด้วยการยืมเทคโนโลยีนี้ โปรแกรม JSP จะสามารถเข้าถึงฐานข้อมูลด้วยไดรเวอร์ ODBC สิ่งนี้ไม่เพียงแต่รักษาข้อดีของ JDBC เท่านั้น แต่ยังสามารถใช้แหล่งข้อมูล ODBC ที่ Microsoft มอบให้เพื่อเชื่อมต่อกับ Access ได้อีกด้วย ไม่ว่าอีกฝ่ายจะเป็นฐานข้อมูลประเภทใด ตราบใดที่มีอินเทอร์เฟซ ODBC คุณสามารถใช้บริดจ์ JDBC-ODBC เพื่อเชื่อมต่อกับฐานข้อมูลได้โดยตรงโดยไม่ต้องเปลี่ยนโค้ดโปรแกรมที่เกี่ยวข้องเนื่องจากการเปลี่ยนแปลงในฐานข้อมูลส่วนหลัง บรรลุการแยกที่สมบูรณ์แบบระหว่างชั้นแอปพลิเคชันและชั้นฐานข้อมูล หากคุณต้องการเปลี่ยนฐานข้อมูลแบ็คเอนด์เป็น MySQL คุณเพียงแค่ต้องติดตั้งไดรเวอร์ MySQL ในแหล่งข้อมูล ODBC เท่านั้น และคุณสามารถใช้ฐานข้อมูล MySQL ได้โดยตรง
2. เมื่อใช้งานเว็บไซต์ที่มีส่วนประกอบในตัว
เนื่องจากความต้องการตามวัตถุประสงค์ เพื่อที่จะแยกแยะผู้ใช้ LAN ในพื้นที่จากผู้ใช้ระยะไกลได้อย่างง่ายดายและให้สิทธิ์ที่เกี่ยวข้อง คำขอส่วนประกอบในตัวสามารถใช้เพื่อบันทึกทุกการเชื่อมต่อไปยังเซิร์ฟเวอร์ มีการเปรียบเทียบที่อยู่ IP ของผู้ใช้และให้สิทธิ์ที่เกี่ยวข้อง ด้วยวิธีนี้ ผู้ใช้ภายในเครือข่ายท้องถิ่นนี้สามารถใช้ทรัพยากรสาธารณะและไม่ใช่สาธารณะทั้งหมดบนเว็บไซต์ได้ วิธีการที่มีอยู่สามารถปรับปรุงได้โดยการป้อนที่อยู่ IP ต่างๆ ลงในฐานข้อมูล และให้สิทธิ์ที่แตกต่างกันแก่ที่อยู่ IP ที่แตกต่างกัน เพื่อควบคุมการใช้ทรัพยากรเว็บไซต์ของผู้ใช้อย่างสมบูรณ์
การบำรุงรักษาสถานะเซสชันเป็นปัญหาที่นักพัฒนาแอปพลิเคชันเว็บต้องเผชิญ เพื่อทราบว่าผู้ใช้ยังออนไลน์อยู่หรือไม่ ระบบจะใช้คอมโพเนนต์เซสชันในตัว โดยให้ตัวแปรเซสชันแก่ผู้ใช้ที่เข้าสู่ระบบแต่ละคน ทรัพยากรที่ผู้ใช้สามารถใช้จะถูกปิดได้หลังจากที่ผู้ใช้ออกจากเว็บไซต์อย่างผิดปกติ จึงช่วยประหยัดได้ หน่วยความจำและปรับปรุงประสิทธิภาพของเซิร์ฟเวอร์
คลาส Cookie ยังมีให้ใน JSP และตัวสร้างมีพารามิเตอร์สองตัวซึ่งแสดงถึงชื่อและค่าของคุกกี้ คลาส Cookie มีวิธีการต่างๆ ในการตั้งค่าคุณลักษณะของ Cookie เช่น สามารถใช้วิธี setMaxAge เพื่อกำหนดอายุการใช้งานของ Cookie ได้ หากเวลาเอาชีวิตรอดเป็นค่าลบ แสดงว่าเบราว์เซอร์ปิดคุกกี้และหายไป หากเวลาเอาชีวิตรอดเป็น 0 หมายความว่าคุกกี้ถูกลบ หากเวลาเอาชีวิตรอดเป็นจำนวนบวก หมายความว่ากี่วินาที มีคุกกี้อยู่ สามารถใช้คุกกี้เพื่อบันทึกบัญชีและรหัสผ่านของผู้ใช้ชั่วคราว และ JSP สามารถอ่านได้ตลอดเวลาเพื่อตรวจสอบความถูกต้องตามกฎหมายของผู้ใช้ สถานะการเรียกดูของผู้ใช้สามารถบันทึกลงในคุกกี้ได้ และในครั้งถัดไปที่ผู้ใช้เยี่ยมชมหน้าเว็บ JSP จะแสดงเพจส่วนบุคคลไปยังเบราว์เซอร์
3. แปลงการเข้ารหัส Unicode
ในระหว่างกระบวนการดีบั๊กของเพจ JSP หลายหน้า ปัญหาที่เกิดจากการแปลงการเข้ารหัสอักขระภาษาจีนและการเข้ารหัส Unicode ตัวอย่างเช่น อักขระภาษาจีนในหน้า JSP ที่เห็นในเบราว์เซอร์ทั้งหมดอ่านไม่ออก และ หน้า JSP ไม่สามารถแสดงได้ตามปกติ ตัวอักษรจีน, JSP ไม่สามารถรับตัวอักษรจีนที่ส่งมาในแบบฟอร์ม, การอ่านและการเขียนฐานข้อมูล JSP ไม่สามารถรับเนื้อหาที่ถูกต้องได้ ฯลฯ เนื่องจากการประมวลผลอักขระหลักส่วนใหญ่ของซอฟต์แวร์ที่มีลักษณะสากลนั้นขึ้นอยู่กับ Unicode เมื่อซอฟต์แวร์กำลังทำงานอยู่ ในขณะนั้น การตั้งค่า "Locale/Lang/Codepage" จะกำหนดการตั้งค่าการเข้ารหัสอักขระในเครื่องที่สอดคล้องกัน และประมวลผลอักขระในเครื่องตามลำดับ ดังนั้น การแปลงร่วมกันระหว่าง Unicode และชุดอักขระในเครื่องจึงควร สามารถทำได้ในระหว่างกระบวนการประมวลผลและแม้แต่อักขระท้องถิ่นสองตัวที่แตกต่างกันโดยใช้ Unicode เป็นตัวกลางในการแปลงระหว่างชุดอักขระ วิธีการนี้จะขยายออกไปอีกในสภาพแวดล้อมเครือข่าย และข้อมูลอักขระใดๆ ที่ปลายทั้งสองด้านของเครือข่ายยังจำเป็นต้องแปลงเป็นเนื้อหาที่ยอมรับได้ตามการตั้งค่าชุดอักขระด้วย
เนื่องจากชุดอักขระเริ่มต้นของ IE คือ GB2312 ชุดอักขระเริ่มต้นของ Windows คือ GBK และชุดอักขระเริ่มต้นของ Java คือ Unicode ดังนั้น หากไม่มีการแปลงใดๆ หน้าเว็บที่ได้รับจาก GBK หรือ Unicode จะแสดงโดยตรงบนชุดอักขระ GB2312 อ่านไม่ออก ภาษา Java ใช้ Unicode ในการประมวลผลอักขระ แต่จากอีกมุมมองหนึ่ง ภาษาที่ไม่ใช่ Unicode ยังสามารถนำมาใช้ในโปรแกรม Java ได้ด้วย สิ่งสำคัญคือต้องแน่ใจว่าข้อมูลอักขระภาษาจีนที่ทางเข้าและออกของโปรแกรมไม่บิดเบี้ยว หากใช้ ISO-8859-1 ในการประมวลผลอักขระภาษาจีนอย่างสมบูรณ์ จึงสามารถได้ผลลัพธ์ที่ถูกต้อง หลังจากการแปลงและชุดอักขระของหน้าเว็บถูกบังคับให้แสดงในชุดอักขระ GB2312 อักขระจีนจะสามารถแสดงได้ตามปกติ