ปรับโครงสร้าง URL บน Java Web Server ให้กระชับด้วย UrlRewriteFilter

การทำเว็บไซต์แบบประมวลผลที่เซิร์ฟเวอร์ อาจมีการประมวลผลตามการร้องขอของผู้ใช้ (dynamic generated content) ซึ่งในสายจาวาใช้ JSP/Servlet ในการประมวลผล

โครงสร้างของ URL จะเป็นแบบ QueryString ซึ่งยาว ทำให้จำยาก ในสาย SEO แนะนำให้ URL มีโครงสร้างที่แน่นอน และคาดเดาได้ เพื่อเหมาะกับการที่เสิร์ชเอ็นจิน (Search Engine) อย่างกูเกิลในการเก็บข้อมูล (indexing)

มีผู้พัฒนาไลบรารี่เพื่ออำนวยความสะดวกในการนี้โดยเฉพาะคือ UrlRewriteFilter ซึ่งหลักการคล้ายๆกับ mod_rewrite ใน Apache web server คือจับรูปแบบของ URL ด้วยเรกกูลาร์เอ็กซ์เพรสชัน (regex: Regular Expression) แล้วเปลี่ยนให้อยู่ในรูปแบบที่เซิร์ฟเวอร์เข้าใจคือ QueryString เช่น จาก /category/mobile แปลงเป็น /index.jsp?category=mobile เป็นต้น

ในเว็บไซต์ของผู้พัฒนาได้สรุปขั้นตอนสั้นๆในลักษณะ Quick Start Guide ที่ทำตามได้อย่างง่ายดายอยู่แล้ว ในที่นี้จะใช้ Maven ซึ่งมีขั้นตอนดังนี้

Continue reading

Advertisements

แทรก JSP file แบบไหนดี

เพื่อให้เว็บไซต์มีรูปแบบที่สอดคล้องกันทุกหน้า ส่วนใหญ่จะใช้วิธีกำหนดบริเวณที่ต้องแสดงผลเหมือนๆกัน เช่น ด้านบนของหน้า (header) ด้านล่างของหน้า (footer) หรือแถบข้อความด้านข้าง (sidebar) เป็นต้น แยกออกไปยังไฟล์ต่างหาก แล้วสั่งให้รวมเมื่อมีการเรียกใช้ (include file นั่นเอง)

ในเจเอ็สพี (JSP: Java Server Page) ทำได้ 2 วิธีด้วยกัน โดยการแทรกแถ็ก (tag) เข้าไปตรงจุดที่ต้องการจะแสดงผล ดังนี้

  1. รวมในขณะคอมไพล์ (translation time): <%@include file=”ชื่อไฟล์” %>
  2. รวมในการเรียกใช้แต่ละครั้ง (request time): มีด้วยกัน 2 วิธีย่อย คือ <jsp:include page=”ชื่อไฟล์” /> หรือใช้ เจเอ็สทีแอลคอร์ (JSTL: JSP Standard Tag Library – Core) <c:import url=”ชื่อไฟล์” /> ข้อแตกต่างของ 2 วิธีนี้คือ การใช้เจเอ็สทีแอลจะเป็นวิธีเดียวที่สามารถแทรกไฟล์ที่ไม่ได้อยู่ในเซิร์ฟเวอร์เดียวกันได้

ไม่มีข้อจำกัดการตั้งนามสกุลของไฟล์ที่ใช้แทรก แต่เพื่อป้องกันการมองเห็นซอร์สโค้ด การตั้งให้เป็นนามสกุลเจเอ็สพี (.jsp) ก็จะปลอดภัยที่สุด ในกรณีทั่วไปการใช้แบบที่ 1 ก็เพียงพอแล้ว

ทีนี้ก็น่าจะพอเลือกได้แล้วว่าจะแทรกไฟล์แบบไหนดี

สแลช (Slash)