เคล็ดลับการติดตั้งใช้งาน

หัวข้อนี้จะครอบคลุมเคล็ดลับบางประการที่จะช่วยให้คุณเขียนการติดตั้งใช้งานไลบรารีที่ซับซ้อนยิ่งขึ้น

การใช้ Servlet ของคุณเอง

การใช้แหล่งข้อมูลที่เรียบง่ายที่สุดจะรับช่วงมาจากคลาส DataSourceServlet ของไลบรารี หากต้องการรับช่วงมาจากคลาสอื่นที่ไม่ใช่ DataSourceServlet ให้ใช้แหล่งข้อมูลดังนี้

  1. ใช้อินเทอร์เฟซ DataTableGenerator และลบล้าง getCapabilities() และ generateDataTable()
  2. เรียกใช้ DataSourceHelper.executeDataSourceServletFlow() จาก ในโค้ดของที่แสดงของบริการเพื่อเรียกใช้ขั้นตอนแหล่งข้อมูลวิธีนี้ใช้พารามิเตอร์ต่อไปนี้
    • ออบเจ็กต์ HttpServletRequest
    • ออบเจ็กต์ HttpServletResponse
    • การใช้งานอินเทอร์เฟซ DataTableGenerator จากขั้นตอนที่ 1 ด้านบน
    • บูลีนสําหรับระบุโหมดการเข้าถึงแบบจํากัดหรือไม่จํากัด

เช่น หากคุณต้องการรับช่วงต่อหมู่บ้านเล็กจากชั้นเรียนอื่น ที่ชื่อว่า AuthServlet ที่มีการตรวจสอบสิทธิ์ในตัว ให้เขียน SimpleServletExample ขึ้นใหม่เพื่อรับค่า AuthServlet แทนที่จะเป็น DataSourceServlet ดังนี้

  1. ใช้อินเทอร์เฟซ DataTableGenerator
  2. ย้าย generateDataTable() จากการใช้งาน DataSourceServlet ไปยังการติดตั้งใช้งาน DataTableGenerator
  3. ลบล้าง getCapabilities() ในการติดตั้งใช้งาน DataTableGenerator เพื่อแสดงผล Capabilities.None
  4. เรียก DataSourceHelper.executeDataSourceServletFlow() จาก รหัสโค้ด (doGet() หรือ doPost()) แล้วส่งการใช้งาน DataTableGenerator วิธีนี้จะเรียกใช้ขั้นตอนทั้งหมดของแหล่งข้อมูล รวมถึงการแสดงผลแหล่งข้อมูลแหล่งข้อมูลไปยังการตอบสนองของที่ยอมรับได้

คุณสามารถใช้เทคนิคเดียวกันนี้ได้หากใช้เฟรมเวิร์กเซอร์เลตที่โดยปกติคุณจะรับค่าคลาสนามธรรมจากเฟรมเวิร์กนี้ เช่น หากใช้ WebWork คุณอาจต้องการรับค่าคลาส ActionSupport ด้วย

การกําหนดความสามารถ

หากที่เก็บข้อมูลมีข้อมูลจํานวนมากและคุณต้องการเพิ่มประสิทธิภาพของแหล่งข้อมูล คุณอาจใช้ความสามารถในการสืบค้นของพื้นที่เก็บข้อมูล ตัวอย่างเช่น สมมติว่าพื้นที่เก็บข้อมูลของคุณเป็นฐานข้อมูล และฐานข้อมูลมีคอลัมน์จํานวนมาก หากการแสดงภาพขอคอลัมน์เพียงไม่กี่คอลัมน์ การเรียกใช้ SELECT ภายในฐานข้อมูลจะมีประสิทธิภาพมากกว่าการดึงข้อมูลคอลัมน์ทั้งหมด และการใช้ความสามารถในการค้นหาของไลบรารีเพื่อดําเนินการ SELECT หากต้องการใช้ความสามารถของ SELECT คุณเขียนโค้ดเพื่อเรียกใช้การดําเนินการ SELECT ภายในฐานข้อมูลและแสดงผลตารางข้อมูล

ใช้ Enum Capabilities เพื่อกําหนดความสามารถในการค้นหาโค้ดของคุณ ตัวเลือกที่ใช้ได้มีดังนี้

  • NONE: ค่าเริ่มต้นเป็นโค้ด ไม่มีการดําเนินการค้นหา
  • SQL: โค้ดจัดเตรียมการดําเนินการค้นหา SQL
  • SORT_AND_PAGINATION: โค้ดจะมีทั้งการดําเนินการจัดเรียงและการใส่เลขหน้า
  • SELECT: โค้ดมีการดําเนินการเลือก
  • ALL: รหัสมีการดําเนินงาน SQL, SORT_AND_PAGINATION, และ SELECT

หมายเหตุ: ในทุกกรณี ไลบรารีจะดูแลการดําเนินการค้นหาใดๆ ที่โค้ดของคุณไม่ได้ระบุ

หากต้องการใช้ความสามารถอื่นๆ ที่นอกเหนือจาก NONE ให้ลบล้าง Capabilities.getCapabilities() แล้วใช้ DataTable.generateDataTable() เพื่อค้นหาที่เก็บข้อมูลและแสดงผลตารางข้อมูล

ตัวอย่าง 3 รายการจะแสดงวิธีใช้ความสามารถ ซึ่งได้แก่ AdvancedExampleServlet, AdvancedExampleServlet2 และ SqlDataSourceServlet ทั้งหมดนี้อยู่ในแพ็กเกจ example AdvancedExampleServlet2 ได้พูดคุยเกี่ยวกับ การกําหนดความสามารถและโฟลว์ของกิจกรรม

การปรับแต่งโฟลว์เหตุการณ์

โฟลว์เริ่มต้นของเหตุการณ์จะอยู่ใน DataSourceHelper.executeDataSourceServletFlow ขั้นตอนเริ่มต้นมีดังนี้

  1. แยกและแยกวิเคราะห์พารามิเตอร์การค้นหา
  2. สําหรับโหมดการเข้าถึงที่จํากัดเท่านั้น ให้ยืนยันว่าคําขอมาจากโดเมนเดียวกับของบริการ
  3. แยกวิเคราะห์คําขอสร้างออบเจ็กต์คําค้นหา 2 รายการ ได้แก่ คําค้นหาแหล่งข้อมูลและคําค้นหาที่สําเร็จ ส่งคําค้นหาแหล่งข้อมูลไปยังการใช้งาน generateDataTable() ของคุณ
  4. การใช้งาน generateDataTable() จะสร้างตารางข้อมูล
  5. เรียกใช้การสืบค้นข้อมูลเสร็จสมบูรณ์ในตารางข้อมูลที่สร้างขึ้นในขั้นตอนที่ 5
  6. แสดงผลตารางข้อมูลให้อยู่ในรูปแบบที่ระบุโดยการแสดงภาพ และตั้งค่าการตอบสนองของที่ยอมรับได้

หากต้องการระบุโฟลว์เหตุการณ์ของคุณเอง ให้เรียกใช้ฟังก์ชันตัวช่วยใน datasource.DataSourceHelper ดูตัวอย่างการใช้งานในการกําหนดความสามารถและโฟลว์เหตุการณ์

การส่งพารามิเตอร์ไปยัง DataTableGenerator.generateDataTable

คุณใช้ HttpServletRequest.setAttribute เพื่อส่งผ่านข้อมูลที่ไม่ใช่ส่วนหนึ่งของคําค้นหาหรือออบเจ็กต์ HttpServletRequest ไปยัง DataTableGenerator.generateDataTable ได้ ดูโค้ดตัวอย่างได้ที่ด้านล่าง

ในโค้ดของที่ยอมรับ โปรดวางออบเจ็กต์ที่คุณต้องการส่งไปยัง HttpServletRequest ดังนี้

request.setAttribute("my_object_name", myObject);
DataSourceHelper.executeDataSourceServletFlow(request, response, dataTableGenerator);

ในการใช้งานอินเทอร์เฟซ dataTableGenerator ให้รับออบเจ็กต์จาก HttpServletRequest ดังนี้

public DataTable generateDataTable(Query query, HttpServletRequest request){
  Object myObject = request.getAttribute("my_object_name"); 
  // Add your code to manipulate myObject here 
} 

การใช้แหล่งข้อมูลที่ไม่ใช่รุ่นเบต้า

หากคุณนําไลบรารีไปใช้โดยไม่ได้ใช้แซนด์วิท คุณจะใช้ได้เฉพาะคลาสและฟังก์ชันตัวช่วยที่ไม่ต้องใช้สภาพแวดล้อมของเซิร์ฟเล็ต ซึ่งรวมถึงคลาส Query และ DataTable และฟังก์ชัน DataSourceHelper บางรายการ เช่น parseQuery, applyQuery, validateQuery และ splitQuery คุณใช้ชั้นเรียนและฟังก์ชันเหล่านี้เพื่อดําเนินการต่อไปนี้ได้

  • แยกวิเคราะห์คําค้นหาการแสดงภาพ
  • แยกคําค้นหาเป็นคําค้นหาของแหล่งข้อมูลและคําค้นหาที่เสร็จสมบูรณ์
  • เรียกใช้การค้นหาที่สมบูรณ์เพื่อสร้างตารางข้อมูล
  • เปลี่ยนตารางข้อมูลเป็นการแสดงภาพในรูปแบบ HTML, CSV หรือ JSON