บีน คือโปรแกรมขนาดเล็กบนเวบเซิร์ฟเวอร์ ซึ่งคอยช่วยเหลือไฟล์ .jsp ด้วยการทำงานบาง
อย่างแทนให้ โดยที่ไฟล์ .jsp เพียงแต่ร้องขอความช่วยเหลือจากบีนโดยการส่งพารามิเตอร์
ที่จำเป็นไปให้ บีนก็จะส่งผลลัพธ์ที่ต้องการกลับไปให้ทันที
ประโยชน์สำคัญของบีนคือการลดความยุ่งเหยิงของไฟล์ .jsp งานที่เคยต้องใช้คำสั่งเจเอสพี
เป็นสิบๆ บรรทัด จะลดลงเหลือเพียงคำสั่งร้องขอความช่วยเหลือจากบีนเพียงหนึ่งหรือสอง
บรรทัดเท่านั้น ทำให้ไฟล์ .jsp มีขนาดเล็กลงและดูง่ายขึ้น การทำเช่นนี้มีประโยชน์มาก
เพราะปกติแล้วโปรแกรมเมอร์ภาษาจาวาที่พัฒนาคำสั่งเจเอสพี กับนักออกแบบเวบไซต์ที่ใช้
คำสั่ง HTML มักเป็นคนละคนกัน การลดคำสั่งเจเอสพีในเวบเพจลงด้วยการย้ายมาเขียน
โปรแกรมบนบีนแทน ทำให้การแบ่งงานระหว่างเวบโปรแกรมเมอร์ กับผู้ออกแบบเวบไซต์มี
ความคล่องตัวมากขึ้น
การสร้างบีนก็เหมือนกับการเขียนโปรแกรมภาษาจาวาปกติ คือ ต้องเขียนเป็นไฟล์นามสกุล
.java แล้วนำไปคอมไพล์ให้ได้ไฟล์นามสกุล .class พอจะใช้งานก็นำไฟล์ .class ที่ได้ไปวาง
ไว้บนโฟลเดอร์ WEB-INF ใต้โฟลเดอร์ย่อยที่ชื่อ classes
การเรียกใช้งานบีนโดยตรง
อันที่จริงแล้วเราสามารถสร้างบีนแล้วเรียกแมธธอสของบีนโดยตรงในสคริปเลตได้โดยไม่
ต้องผ่านแท็ก setProperty และ getProperty ตัวอย่างเช่น
<jsp:useBean id=”counter” class=”mybean.Counter” scope=”application” />
<html>
<title>My First JSP</title>
<body>
You are the visitor number <%=counter.getCount()%>.
</body>
</html>
หลังจากเรียกใช้บีนผ่านแท็ก useBean แล้ว เราสามารถเรียกแมธธอส getCount() ของบีน
ผ่านชื่อ counter ได้โดยตรงราวกับว่าเป็นวัตถุที่เราสร้างขึ้นกับมือ โปรแกรมข้างต้นให้ผล
เหมือนกับโปรแกรมที่ 7-2 ทุกประการ
อย่างไรก็ตาม ขอแนะนำให้พยายามใช้งานบีนผ่านแท็กเจเอสพีจะดีกว่า เพราะโปรแกรมจะ
ดูเป็นระบบมากกว่า ตอนนี้อาจจะยังมองไม่เห็นภาพอย่างชัดเจน เพราะโปรแกรมตัวอย่างที่
ผ่านมายังไม่ค่อยซับซ้อน แต่ต่อไปจะเห็นชัดขึ้นตอนที่นำไปประยุกต์ใช้งานจริง
วันจันทร์ที่ 13 กันยายน พ.ศ. 2553
แท็กเจเอสพี
ยุคนี้กระแสของ XML มาแรง คำว่า XML ย่อมาจาก Extensible Markup Language เป็น
ภาษาที่มีโครงสร้างคล้ายๆ กับภาษา HTML คือประกอบด้วยแท็กต่างๆ ปะปนกับภาษา
มนุษย์ จุดประสงค์หลักของ XML คือใช้เป็นภาษากลางระหว่างเซิร์ฟเวอร์ต่างชนิดต่างยี่ห้อ
กันให้สามารถรับส่งข้อมูลระหว่างกันได้ โดยไม่ต้องสนใจว่าเซิร์ฟเวอร์เหล่านั้นจะใช้
เทคโนโลยีของค่ายไหน
คำสั่งเจเอสพีได้รับอิทธิพลของ XML ด้วยเหมือนกัน กล่าวคือ เจเอสพีมีสิ่งที่เรียกว่า แท็ก
เจเอสพี ซึ่งเป็นคำสั่งเจเอสพีที่อยู่ในรูปของแท็ก XML โดยจะนำหน้าด้วยแท็ก <jsp: และ
ต่อท้ายด้วย /> เพื่อบอกให้ทราบว่าเป็น แท็กเจเอสพี เราสามารถบอกให้เวบเซิร์ฟเวอร์ทำ
อะไรหลายๆ อย่างได้ด้วยแท็กเจเอสพีเหล่านี้ ในบทนี้เราจะมาดูว่าแท็กเจเอสพีมีอะไรบ้าง
include
คงยังจำได้ว่าถ้าเราต้องการสอดแทรกเนื้อหาในไฟล์อื่นเข้าไปในไฟล์ .jsp ของเรา เราใช้ได
เร็กทีฟ include ข้อเสียของการสอดแทรกเนื้อหาของไฟล์อื่นด้วยวิธีนี้คือ ถ้ามีการแก้ไขไฟล์
ต้นทาง เนื้อหาใหม่จะไม่ไปปรากฏอยู่ในไฟล์ปลายทางโดยอัตโนมัติ เพราะการสอดแทรก
เกิดขึ้นเมื่อตอนที่มีผู้เยี่ยมชมไฟล์ปลายทางเพียงครั้งเดียวเท่านั้นเจเอสพีมีแท็กเจเอสพีที่
ทำงานได้เหมือนกับไดเร็กทีฟ include แต่จะอัพเดทไฟล์ปลายทางโดยอัตโนม้ติเวลาที่มีการ
แก้ไขไฟล์ต้นทาง แท็กนี้คือ <jsp:include ลองดูรูปแบบของคำสั่งจากตัวอย่างต่อไปนี้
<html>
<title> Test Page </title>
<body>
<jsp:include page=”logo.html” flush=”true” />
<br>
This is a test page.
</body>
</html>
หน้าของไฟล์ includetag.jsp จะเปลี่ยนตามโดยอัตโนมัติ
แท็ก <jsp: include ต้องมีพารามิเตอร์ flush=”true” อยู่ด้วยเสมอ
forward
แท็ก forward มีไว้สำหรับส่งผู้เยี่ยมชมไปยังเวบหน้าอื่น ตัวอย่างเช่น สมมติว่าเราสร้างไฟล์
ชื่อ forward.jsp ขึ้นมา แล้วกำหนดให้เมื่อไรก็ตามที่มีผู้เข้ามาเยี่ยมชมเวบเพจหน้านี้ ให้เวบ
เซิร์ฟเวอร์ส่งผู้เยี่ยมชมยัง includetag.jsp แทน เราทำได้ดังนี้
<html>
<title> Forward Page </title>
<body>
<jsp:forward page=”includetag.jsp” />
<br>
You will be forward to includetag.jsp.
</body>
</html>
ถ้าลองเข้าถึงเพจนี้ดูจะพบว่าเบราเซอร์จะกระโดดไปยังเพจ includetag.jsp ในทันที
ใช้แท็กเจเอสพีแทนไดเร็กทีฟ
เราสามารถใช้แท็กเจเอสพีแทนการใช้ไดเร็กทีฟ page หรือ include ได้ด้วย โดยมีรูปแบบ
ดังตัวอย่างต่อไปนี้
<jsp:directive.page import=”java.util.*” />
ตัวอย่างนี้ให้ผลเหมือนกับคำสั่ง
<%@ page import=”java.util.*” %>
ทุกประการ
ถ้าเป็นไดเร็กทีฟ include ก็เพียงแต่ใช้คำว่า include แทน page เช่น
<jsp:directive.include file=”hello.html” />
ให้ผลเหมือนกับคำสั่ง
<%@ include file”hello.html” %>
ทุกประการ
ภาษาที่มีโครงสร้างคล้ายๆ กับภาษา HTML คือประกอบด้วยแท็กต่างๆ ปะปนกับภาษา
มนุษย์ จุดประสงค์หลักของ XML คือใช้เป็นภาษากลางระหว่างเซิร์ฟเวอร์ต่างชนิดต่างยี่ห้อ
กันให้สามารถรับส่งข้อมูลระหว่างกันได้ โดยไม่ต้องสนใจว่าเซิร์ฟเวอร์เหล่านั้นจะใช้
เทคโนโลยีของค่ายไหน
คำสั่งเจเอสพีได้รับอิทธิพลของ XML ด้วยเหมือนกัน กล่าวคือ เจเอสพีมีสิ่งที่เรียกว่า แท็ก
เจเอสพี ซึ่งเป็นคำสั่งเจเอสพีที่อยู่ในรูปของแท็ก XML โดยจะนำหน้าด้วยแท็ก <jsp: และ
ต่อท้ายด้วย /> เพื่อบอกให้ทราบว่าเป็น แท็กเจเอสพี เราสามารถบอกให้เวบเซิร์ฟเวอร์ทำ
อะไรหลายๆ อย่างได้ด้วยแท็กเจเอสพีเหล่านี้ ในบทนี้เราจะมาดูว่าแท็กเจเอสพีมีอะไรบ้าง
include
คงยังจำได้ว่าถ้าเราต้องการสอดแทรกเนื้อหาในไฟล์อื่นเข้าไปในไฟล์ .jsp ของเรา เราใช้ได
เร็กทีฟ include ข้อเสียของการสอดแทรกเนื้อหาของไฟล์อื่นด้วยวิธีนี้คือ ถ้ามีการแก้ไขไฟล์
ต้นทาง เนื้อหาใหม่จะไม่ไปปรากฏอยู่ในไฟล์ปลายทางโดยอัตโนมัติ เพราะการสอดแทรก
เกิดขึ้นเมื่อตอนที่มีผู้เยี่ยมชมไฟล์ปลายทางเพียงครั้งเดียวเท่านั้นเจเอสพีมีแท็กเจเอสพีที่
ทำงานได้เหมือนกับไดเร็กทีฟ include แต่จะอัพเดทไฟล์ปลายทางโดยอัตโนม้ติเวลาที่มีการ
แก้ไขไฟล์ต้นทาง แท็กนี้คือ <jsp:include ลองดูรูปแบบของคำสั่งจากตัวอย่างต่อไปนี้
<html>
<title> Test Page </title>
<body>
<jsp:include page=”logo.html” flush=”true” />
<br>
This is a test page.
</body>
</html>
หน้าของไฟล์ includetag.jsp จะเปลี่ยนตามโดยอัตโนมัติ
แท็ก <jsp: include ต้องมีพารามิเตอร์ flush=”true” อยู่ด้วยเสมอ
forward
แท็ก forward มีไว้สำหรับส่งผู้เยี่ยมชมไปยังเวบหน้าอื่น ตัวอย่างเช่น สมมติว่าเราสร้างไฟล์
ชื่อ forward.jsp ขึ้นมา แล้วกำหนดให้เมื่อไรก็ตามที่มีผู้เข้ามาเยี่ยมชมเวบเพจหน้านี้ ให้เวบ
เซิร์ฟเวอร์ส่งผู้เยี่ยมชมยัง includetag.jsp แทน เราทำได้ดังนี้
<html>
<title> Forward Page </title>
<body>
<jsp:forward page=”includetag.jsp” />
<br>
You will be forward to includetag.jsp.
</body>
</html>
ถ้าลองเข้าถึงเพจนี้ดูจะพบว่าเบราเซอร์จะกระโดดไปยังเพจ includetag.jsp ในทันที
ใช้แท็กเจเอสพีแทนไดเร็กทีฟ
เราสามารถใช้แท็กเจเอสพีแทนการใช้ไดเร็กทีฟ page หรือ include ได้ด้วย โดยมีรูปแบบ
ดังตัวอย่างต่อไปนี้
<jsp:directive.page import=”java.util.*” />
ตัวอย่างนี้ให้ผลเหมือนกับคำสั่ง
<%@ page import=”java.util.*” %>
ทุกประการ
ถ้าเป็นไดเร็กทีฟ include ก็เพียงแต่ใช้คำว่า include แทน page เช่น
<jsp:directive.include file=”hello.html” />
ให้ผลเหมือนกับคำสั่ง
<%@ include file”hello.html” %>
ทุกประการ
สมัครสมาชิก:
บทความ (Atom)
