|
แนะนำ
JSP
JavaServer
Pages (JSP) เป็น web-scripting เทคโนโลยีคล้ายกับ Netscape server-side
JavaScript (SSJS) หรือ Microsoft Active Server Pages (ASP) แต่ผิดกันตรงที่
JSP มีพื้นฐานมาจาก Java ซึ่งเป็นภาษาแบบ object-oriented ซึ่งช่วยทำให้ง่ายต่อการพัฒนาในโครงการใหญ่
ๆ ตลอดจนสามารถนำส่วนประกอบต่าง ๆ กลับมาใช้ได้อีก (software reusable)
จุดเด่นที่สำคัญของ JSP คือสามารถทำงานได้โดยไม่ขึ้นอยู่กับผู้ผลิตซอฟแวร์
รายใดรายหนึ่งโดยเฉพาะ ซึ่งโดยทั่วไปเทคโนโลยีต่าง ๆ มักจะออกมาในลักษณะของผลิตภัณฑ์จากบริษัท
ผู้ผลิตแห่งใดแห่งหนึ่ง แต่ JSP ใช้ลักษณะของ specification ซึ่งกำหนดโดย
Sun Microsystems ดังนั้นผู้ผลิตซอฟท์แวร์จึงสามารถอ้างอิง specification
ที่กำหนดขึ้น ผลิต JSP Container (ตัวที่ใช้ในการรัน JSP) ขึ้นมาใช้กับแฟลตฟอร์มใดก็ได้
JSP Containers
JSP Pages (ไฟล์ที่เขียนขึ้นโดยใช้ JSP script และลงท้ายด้วย .jsp)
จะถูกรันโดย JSP Container ซึ่งมักจะเป็นส่วนประกอบที่อยู่ใน Webserver
หรือ เป็นตัว add on ใน Application Server. โดยทั่วไป JSP Container
จะเป็นตัวรับ request จาก client ส่งผ่านไปยัง JSP Page และส่งค่าที่ได้จากการประมวลผลโดย
JSP Page กลับไปยัง client. JSP Container ที่ใช้กันอยู่มีมาจากหลายค่าย
ยกตัวอย่างเช่น GNU JSP, Expresso, Tomcat Jakarta, Resin, Weblogic
เป็นต้น
ในการเขียน
JSP ขึ้นมาหนึ่งหน้า มักจะประกอบด้วย 3 ส่วนหลักๆคือ static html/xml
, special JSP tags และสุดท้ายอาจมี ส่วนที่เป็น java code เรียกว่า
scriptlets ประโยชน์ที่เห็นได้ชัดจากการใช้ JSP คือเราสามารถแยกส่วนที่เป็น
static และส่วนที่เป็น dynamic ออกจากกันได้อย่างค่อนข้างอิสระโดยมี
servlet มารับหน้าที่ในส่วนที่ต้องการทำ logic มากๆ ซึ่ง servlet นี้อาจต้องการทักษะ
ทางด้านการเขียนโปรแกรมในระดับหนึ่ง ส่วน JSP เองก็จะเป็น script ซึ่ง
web designer ทั่วไปสามารถทำความคุ้นเคยได้ไม่ยากนัก นี่เป็นอึกจุดหนึ่งที่ทำให้เราสามารถแบ่งงานกัน
ในกลุ่มนักพัฒนาตามความถนัด เป็นกลุ่ม web designer และกลุ่ม developer
เพื่อให้สามารถนำผลงานมารวมกันได้อย่างกลมกลืน
เนื่องจาก
ASP เป็นภาษาที่เป็นที่รู้จักและใช้งานกันอย่างแพร่หลายอยู่แล้ว จึงน่าจะนำข้อเหมือน
ข้อแตกต่างในแง่มุมต่างๆมาเปรียบเทียบกัน เพื่อที่จะได้เห็นภาพรวมได้ชัดเจนขึ้น
|
|
JavaServer
Pages |
Active
Server Pages |
| Web
Server
ที สนับสนุน |
Apache,
Netscape, Microsoft IIS เองก็สามารถใช้ JSP
ได้. |
Microsoft
IIS หรือ Personal Web Server. |
| Platform
Support |
ไม่ขี้นกับ platform. สามารถทำงานได้บนทุก Java-enabled
platforms. |
Windows.. |
| Component
Model |
reusable,
cross-platform components เช่น JavaBeans,
Enterprise JavaBeans, และ custom tag
libraries. |
Win32-based
COM component model. |
| Scripting |
Java
programming language หรือ JavaScript. |
VBScript
และ JScript |
| Security |
Java security model. |
Windows
NT security architecture. |
| Database
Access |
JDBC
|
Active
Data Objects |
| Customizable
Tags |
extensible
โดยใช้ custom tag libraries. |
ไม่สามารถใช้ custom tag libraries และไม่สามารถใช้งานแบบ extensible. |
Web
Applications
ก่อนที่เราจะเริ่มเขียน JSP สิ่งหนึ่งที่ควรจะทำความเข้าใจคือโครงสร้างของไดเรคทอรี่ต่าง
ๆ ใน container เมื่อก่อนเราไม่ค่อยได้ให้ความสนใจกับการจัดเรียงไฟล์ต่าง
ๆ มากนัก ข้อเสียที่เห็นได้ชัด คือการยากในการจัดเก็บ และการยากในการย้ายไฟล์จากเซิฟเวอร์หนึ่ง
ไปยังอีกเซิฟเวอร์หนึ่ง เพราะโดยทั่วไปแต่ละ webserver จะมีลักษณะการจัดเก็บไฟล์ไม่เหมือนกัน
แต่เมื่อ Java Servlet Specification เวอร์ชั่น 2.2 ออกมา เซิฟเวอร์ที่ใช้รัน
Servlet v2.2 จะถูกบังคับให้มีต้องการสนันสนุนการจัดเก็บไฟล์แบบหนึ่ง
ที่เรียกว่า Web Applicaton
web
application คือกลุ่มของไดเรคทรอรี่และไฟล์ที่อาจจะประกอบด้วย html,
jsp, servlet, javabean และอื่น ๆ ซึ่งอยู่รวมกันในลักษณะของระบบไฟล์
(file system) หรือถูกอัดอยู่ในไฟล์เดียวกันโดยจะเรียกว่า Web Archive
(.war) ไฟล์ ซึ่งมีประโยชน์ในการโยกย้ายและติดตั้งจากเซฟเวอร์หนึ่งไปยังอีกเซฟเวอร์หนึ่ง
ปกติ
webserver จะมีการใช้ไดเรคทรอรี่ในการจัดกลุ่มของไฟล์ไว้ด้วยกัน ตามหน้าที่หรือตามประเภทของไฟล์ซึ่งมักเป็นไปตามความพอใจ
ของผู้ดูแลแต่ละคน แต่ในการจัดการ web application จะมีหลักการเป็นมาตรฐานคือ
แต่ละ web appliction จะถูกจัดให้อยู่ในไดเรคทรอรี่ของตัวเอง ที่เรียกว่า
context path ยกตัวอย่างเช่น ถ้า web application ของเราถูก map กับ
context path ที่ชื่อ webapplication1 เวลาดูจาก URL ก็จะเห็นเป็น
http://www.mycompany.com/webapplication1/ เป็นต้น และเมื่อweb application
คือกลุ่มของไดเรคทรอรี่และไฟล์ที่ถูกจัดอยู่รวมกันเป็นชั้น ๆ ดังนั้นถ้าเรามีไฟล์ที่ชื่อ
helloworld.html ซึ่งอยู่บนสุด (top-level) ของไดเรคทรอรี่ใน web application
เราก็จะสามารถเรียกออกมาดูได้โดยใช้ URL เท่ากับ http://www.mycompany.com/webapplication1/helloworld.html
ในกรณีที่ไฟล์ไม่ได้อยู่บนสุด ของไดเรคทรอรี่ใน web application เราก็ยังสามารถเรียกออกมาได้
โดยอ้างอิงไปที่ไดเรคทรอรี่ย่อยนั้น ยกตัวอย่างเช่น ถ้ากลุ่มไฟล์ JSP
ถูกเก็บไว้ในไดเรคทรอรี่ถัดลงมาที่ชื่อ jsp เราก็สามารถที่จะเรียกไฟล์มาดูโดยใช้
URL เท่ากับhttp://www.mycompany.com/webapplication1/jsp/xxx.jsp
ส่วนประกอบของ
Web Application
web application หนึ่ง ๆ อาจประกอบด้วย
1) Servlet
2) JavaServer Pages
3) Utility Classes
4) ไฟล์ปกติ เช่น HTML, images, sounds
5) JavaBean
แต่ละอย่างจะถูกเก็บไว้ในไดเรคทอรี่ต่อไปนี้
1) root directory หรือส่วนบนสุด : ไฟล์ *.html, *.jsp มักจะถูกเก็บไว้ส่วนบนสุดของ
web application แต่อาจจะมีไดเรคทอรี่ย่อยลงมาจาก root เพื่อเก็บ ไฟล์
images ก็ได้
2) WEB-INF/web.xml
: ไฟล์ web.xml เป็นส่วนที่ใช้ในการบรรยายส่วนประกอบต่าง ๆ (Web Application
Deployment Descriptor) รวมไปถึงการป้อนค่าเริ่มต้นให้กับโปรแกรมต่าง
ๆ ที่บรรจุอยู่ใน web application นี้ ยกตัวอย่างเช่น เราสามารถป้อนค่าเริ่มต้นให้กับ
Servlet ได้โดยใส่ค่าเข้าไปใน XML Tag ตรงส่วนที่เรียกว่า <init-param>
เป็นต้น
3) WEB-INF/classes/*
: เป็นส่วนที่ใช้ในการเก็บไฟล์ *.class ทั้งหมดที่ใช้ใน web application
ซึ่งอาจจะเป็นทั้ง Servlet หรือ ไฟล์ class ธรรมดาที่ไม่ได้อยู่ในรูปของ
.jar ก็ได้ ยกตัวอย่างเช่น ถ้าไฟล์ของเราอยู่ใน package ชื่อ com.mycompany.mypackage.MyServlet
ไฟล์นี้ก็จะถูกเก็บอยู่ในไดเร็คทอรี่ WEB-INF/classes/com/mycompany/mypackage/MyServlet.class
4) WEB-INF/lib/*.jar
: ไดเร็คทรอรี่นี้ใช้เก็บไฟล์ .jar ที่เราต้องการใช้สำหรับ web application
ซึ่งอาจจะเป็นส่วนที่ได้มาจาก third party หรือเป็นพวก Database driver
ก็ได้ ประโยชน์อย่างหนึ่งที่เห็นได้ในการเก็บ library ต่าง ๆ ไว้ที่ไดเร็คทรอรี่นี้คือ
การง่ายต่อการติดตั้ง เหตุผลคือ หลังจาก web application ของเราถูกใส่เข้าไปใน
server แล้ว ตัว server จะโหลดไฟล์ที่อยู่ในไดเร็คทอรี่นี้ โดยอัตโนมัติ
เราจึงไม่ต้องทำการเซ็ต CLASSPATH ให้ยุ่งยาก
เริ่มลงมือ
|