เมธอด Method
หน้าแรก JSP เมธอด Method
ภาษาจาวามีโครงสร้างเป็นกลุ่มคำสั่ง(block) ซึ่งเป็นกลไกที่เราสามารถสร้าง
โปรแกรมย่อยหรือที่เราคุ้นเคยในชื่อโพซีเยอร์และฟังก์ชั่นนั่นเอง แต่ในภาษา
จาวา เราเรียกชื่อว่า เมธอด(method)แทน การมีเมธอดนั้นทำให้เราสามารถแยก
ย่อยโปรแกรมทั้งหมดออกมาเป็นหน่วยย่อยได้ ซึ่งทำให้ง่าย ในการจัดการ โดย
ปกติเมธอดจะถูกกำหนดในคลาส โครงสร้างของเมธอดมีดังนี้
[modifier] [static] <return type> <method name>([type parameter])
{
<method body>
}
ลองมาดูโครงสร้างเมธอดกันทีละตัว
6.1 [modifier]
เป็นตัวเลือกคือจะมีหรือไม่มีก็ได้ มี 3 ตัวคือ public , private และ protect
แต่ละตัวมีความหมายดังนี้
- public จะทำให้เมธอดสามารถอ้างจากนอกคลาสได้
- private จะทำให้ไม่สามารถอ้างอิงจากนอกคลาสได้
- protect ทำให้เมธอดสามารถอ้างอิงจากคลาสที่อยู่ใน package เดียวกัน
หรือคลาสที่ขยาย (Extend) มาจากคลาสนั้น หากไม่มีการระบุจะถือว่าใช้ protect
เป็นค่า default
6.2 [static]
เป็นตัวเลือกเช่นเดียวกัน หากเมธอดใดถูกระบุเป็น static จะถูกเรียก
ได้จากเมธอดอื่นๆ ที่อยู่ในคลาสเดียวกันหรือต่างคลาสโดยขึ้นกับเงื่อนไขดังนี้
- หากในคลาสเดียวกันเมธอด static จะเรียกได้แต่เมธอดที่เป็น static
เท่านั้น
- หากเป็นเมธอดที่อยู่ต่างคลาสการเรียกจะเรียกผ่านชื่อคลาส โดยไม่
จำเป็นต้องสร้างอินสแทรนซ์ของคลาสขึ้นมาก่อน
6.3 return type
คือชนิดของข้อมูลที่จะผ่านกลับมาจากเมธอด หากไม่มีการส่งค่าออกมาให้
ใส่ void ไว้หากมีการส่งก็ให้ระบุชนิดของข้อมูลได้เลยเช่น int , char เป็นต้น
6.4 method name
คือชื่อของเมธอด สามารถตั้งชื่ออะไรก็ได้แต่ต้องถูกต้องตามหลักของภาษา
ด้วย
6.5 parameter เป็น option
คือจะมีการผ่านค่าตัวแปรมาหรือไม่ก็ได้ หากมีมากกว่า 1 ตัวก็แยกด้วย
เครื่องหมาย - หรือถ้าไม่มีการผ่านค่าอะไรมาก็ใส่เครื่องหมาย () ไว้หลังชื่อ
เมธอดเฉยๆ
6.6 method body
คือลำดับของประโยคที่เมธอดจะทำตามคำสั่ง เมื่อมีการเรียกและที่สำคัญ
หากกำหนดให้เมธอดมีการผ่านค่ากลับต้องใส่คำสั่ง return และตามด้วยค่าที่ส่ง
กลับเข้าไปด้วย
เพื่อให้เห็นภาพชัดเจน ให้ลองพิมพ์โค้ดตาม source code ชื่อ
helloWorld.jsp แล้วบันทึกชื่อไฟล์เป็น helloWorld.jsp ลงในไดเรกทอรี
C:TomcatWebAppsTutorialExample
อธิบาย Source Code ชื่อ helloWorld.jsp
จากตัวอย่างนี้ได้ประกาศเมธอด addStr() ให้อยู่ภายใต้สัญลักษณ์
<%! กับ %> (แท็กชนิดหนึ่งของ JSP) โดย modifier เป็น public,กำหนดให้ส่ง
ผลลัพธ์ที่มีชนิดข้อมูลเป็นสตริงกลับ และรับค่าอากิวเมนต์ที่มีชนิดเป็นสตริง
ด้วยเช่นกัน เมื่อมีการเรียกเมธอดให้ทำงาน ผลลัพธ์ที่ได้คือ ค่าสตริงที่ส่งมา
บวกคำว่า Hello และ I Love U จากนั้นก็ส่งผลลัพธ์กลับ
สำหรับขั้นตอนการทำงานของเอกสารมีดังนี้ เมื่อผู้ใช้เปิดเอกสาร JSP ขึ้น
มาและทำงานไปจนถึงบรรทัด if โปรแกรมก็จะตรวจสอบว่ามีการส่งค่าตัวแปร
ที่ชื่อว่า username มาหรือไม่โดยใช้คำสั่ง
if ( request.getParameter(username) == null)
โดยตรวจสอบค่าอากิวเมนต์ที่มากับออบเจ็กต์ request ว่าตัวแปรชื่อ
username มีค่าหรือไม่ หากไม่มีเงื่อนไขก็จะเป็นจริงคือ request.getParameter(username) == null โปรแกรมก็จะแสดงฟอร์มเพื่อรอ
รับชื่อของผู้ใช้ แต่ในกรณีที่มีการกดปุ่มกรอกข้อมูลและกดปุ่ม submit ทำให้
เกิดการส่งค่าตัวแปรมาแล้วโปรแกรมก็จะทำคำสั่ง
} else {
String msg = addStr(request.getParameter(username));
Out.print(<H1>+msg+ <H1>);
}
โดยจะส่งชื่อผู้ที่ใช้ป้อนเข้ามาส่งไปให้เมธอด addStr() จากนั้นก็นำค่าที่ส่ง
กลับมาจากเมธอดนี้แสดงผลที่หน้าจอ
ตามปกติหากเราต้องการจะใช้ออบเจ็กต์ เราต้องสร้างอินสแทนซ์ขึ้นมา
ก่อน แต่จากตัวอย่างนี้จะสังเกตเห็นว่าเรียกใช้ออบเจ็กต์ out และ request โดย
ไม่มีการประกาศและสร้างอินสแทนซ์เลย ที่เป็นแบบนี้เพราะออบเจ็กต์ทั้งสอง
คือ Implicit Object ซึ่ง JSP Engine จะสร้างขึ้นมาให้เราโดยอัตโนมัติ
ขึ้นไปด้านบน
