pro7beginner.blogspot.com ยินดีต้อนรับผู้รักในการเขียนโปรแกรมทุกท่าน ที่กำลังหัดเดิน ที่ยังไม่รู้ว่าจะเริ่มต้นเขียนโปรแกรมสักภาษาหนึ่งได้อย่างไร ลองอ่านบทความเหล่านี้ และรู้จักเพื่อนคนนี้นะ (อ้อ รบกวนให้ลิงค์หรือเครดิตกลับมาที่บล็อกนี้ด้วยนะ ขอบคุณครับ)
วันพุธที่ 24 มิถุนายน พ.ศ. 2558
Servlet part 5
เพราะว่า servlet เป็นโปรแกรมจาวา
>> เพราะว่า servlet เขียนด้วยภาษาจาวา สร้างขึ้นมาเพื่อเป็น server side programs ที่ต้องทำงานภายใต้สภาวะแวดล้อมของ Servlet Container
>> Servlet Container เป็น component ประเภทหนึ่งของโปรแกรม web server ซึ่งทำงานบนโปรโตคอล HTTP พูดง่ายๆว่า Servlet Container เป็นผู้จัดการ servlet ผ่าน interface ที่ชื่อ Servlet ด้วยเหตุนี้มันจึงสามารถควบคุมจัดการ servlet ทุกตัวได้โดยละม่อม
>> จากตัวอย่างที่ 1 (example1) ภายใต้ folder
D:\training\example1\src\training\controller
คลาส HelloServlet ไม่สามารถเป็น servlet ได้หากไม่ implements เจ้า interface ที่ชื่อ Servlet แล้ว interface ที่ว่าอยู่ไหน?
>> ดังจะเห็นว่าคลาส HelloServlet ขยายมาจากคลาส HttpServlet พูดง่ายๆว่ามันเป็นลูกของ HttpServlet ส่วน HttpServlet ก็เป็นพ่อมัน เออว่าไป
>> HttpServlet ก็ขยายมาจากคลาส GenericServlet อีกที ซึ่ง GenericServlet นี่แหละครับที่ implements เจ้า interface ที่ชื่อ Servlet ให้
>> คำถามที่มือใหม่อย่างผมสงสัยคือ ก็ถ้าจะเขียนคลาสจาวาธรรมดาให้กลายเป็น servlet ก็แค่ implement Servlet interface ชิมิ คำตอบคือ ใช่ครับ แล้วผมขอสังสัยต่อว่า แล้วจะไป extends คลาส HelloServlet อีกทำไมล่ะ? คำตอบลึกซึ้งนี่ต้องกล่าวถึงโปรแกรม HTTP Server กับ Request Methods ทั้ง 7 ประเภท (part 2) เพราะเราจะให้ servlet ทำงานผ่านทางนี้ (มีทางอื่นอีก แต่ไว้ก่อนนะครับ) นั่นหมายความว่าเมื่อมีคำร้องขอหรือ request เข้ามา โปรแกรม servlet ของเราจะต้องเข้าใจให้ได้ว่าเป็นคำร้องขอประเภทไหน ขอไฟล์ เพิ่มข้อมูล ปรับปรุงข้อมูล หรือลบข้อมูล อะไรอย่างนี้เป็นต้น ถามกลับว่า แล้วง่ายไหมหากรับเอา interface เพียวๆมาจัดการเอง คำตอบชักไม่แน่ใจ เพราะ Servlet interface นั้นว่าด้วยเรื่อง
- void init(ServletConfig config)
- ServletConfig getServletConfig()
- void service(ServletRequest req, ServletResponse res)
- String getServletInfo()
และ void destroy()
แต่ถ้ารับสืบทอดหรือขยายคลาสมาจาก HttpServlet จะว่าด้วยเรื่อง
- doGet ทำอะไรดีนะ
- doPost ทำอะไรดีนะ
เป็นต้น ซึ่งชัดเจนที่ประเภทคำร้องขอมากกว่า ไหนยังจะมี GenericServlet เป็นพ่อแม่ช่วยจัดการ config ไฟล์ web.xml ในโปรเจ็กต์ผ่าน interface ที่ชื่อ ServletConfig ให้อีกด้วยนะเออ
>> สรุป HelloServlet extends HttpServlet น่ะดีแล้ว
>> ตัวอย่างแรกนี้พี่เขา override เมธอด doGet ให้ servlet ของเราสร้างหน้าเอกสาร HTML ง่ายๆขึ้นมา มีแท็ก h1 เขียน Hello Servlet ส่วนแท็ก h2 เขียน TEST ปิดท้ายด้วยการทดสอบเรียกจาวาคลาส Date โชว์วันและเวลาครับ
>> ตอนนี้ให้สงสัยไว้ก่อนว่า
- doGet ทำงานได้อย่างไร?
- HttpServletRequest request คืออะไร มาจากไหน?
- HttpServletResponse response คืออะไร มาจากไหน?
เป็นว่าถ้าเราต้องการสร้างเอกสาร HTML ส่งกลับไปยัง browser หรือก็คือผู้ร้องขอต้นทาง ให้ใช้ออบเจ็กต์ PrintWriter ซึ่งขอได้จาก response เป็นผู้สร้างให้นะครับ
>> part นี้จบเท่านี้ก่อน เยอะแล้วจะไม่อยากอ่านต่อ อิอิ สวัสดีครับ
สมัครสมาชิก:
ส่งความคิดเห็น (Atom)
บทความที่เกี่ยวข้องกับ Objective-c ดูไม่ได้อะครับพี่ ช่วยกู้มันคืนกลับมาทีค้าบบบบบ T T
ตอบลบขออภัยจริงๆครับ ผมลืมไปแล้วว่าหน้าไหนที่อ้างอิงเรื่อง Objective-C รบกวน Yod yotsaton แปะลิงค์หน้าที่อ้างอิงบทความดังกล่าวมาให้ทีสิครับ ขอบคุณครับ
ตอบลบ