Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore Servlet&Filter

Servlet&Filter

Published by son samsang, 2019-07-31 12:32:13

Description: Servlet

Search

Read the Text Version

SERVLET

SERVLET คืออะไร ?  เป็นเทคโนโลยกี ารเขียนโปรแกรมฝ่ังเซริ ฟ์ เวอรท์ ีช่ ว่ ยใหก้ ารสรา้ งหนา้ เวบ็ แบบไดนามิกและการประยุกตใ์ ช้ ซึ่งทา ไดโ้ ดยการฝังรหสั Java เป็ น HTML, XML, DHTML, หรือประเภทเอกสารอ่ืน ๆ เม่ือ เวบ็ เบราวเ์ ซอรท์ าใหค้ าขอไปยงั ที่เก็บโปรแกรม Java ซง่ึ ตามปกติจะเป็ นเวบ็ เซิรฟ์ เวอร,์ หนา้ คงถูกแปลงอยู่ เบ้ืองหลงั และ แสดงเป็ นเน้ือหาแบบไดนามิกกบั ตวั JSPServlets เป็ น Componet ดา้ น เซริ ฟ์ เวอรท์ ใ่ี หก้ ลไกที่มีประสิทธิภาพ ในการพฒั นาโปรแกรมฝั่งเซริ ฟ์ เวอร์ ทาหนา้ ท่ี จดั การกบั request และ response ตา่ งๆ และสง่ คา่ ไปแสดงผลใน JSP

 ในภาพขา้ งบนน้ีจะเป็น ภาพที่อธิบายถึงการทางานของ Servlet และ JSP เม่ือมีผูใ้ ชม้ าใชง้ านหนา้ เวป็ ผ่าน เวป็ Browser ซึ่งการทางานคือ เราจะมี Web server application ตวั นึงเชน่ Apache Tomcat, Jboss, Web sphere, etc.. ไวร้ องรบั request ต่างๆๆ แลว้ ก็จะส่งตอ่ ให้ container (เป็ นตวั ควบคมุ การสรา้ ง servlet หรือ destory ไปเรียก servlet ใหท้ างานตามที่ request มาเช่น request ไปเพื่อขอขอ้ มูลลูกคา้ servlet (หรือมองวา่ เป็ น controller ก็ได)้ ก็ จะไปทาการดึงขอ้ มูลลูกคา้ ออกมา (ขอ้ มูล เราเรียกอีกอย่างว่า model) แลว้ ก็ส่งค่าต่างๆๆไปท่ี JSP (view)ที่มีคาวา่ Model,View,Controller เพราะอยากใหท้ ราบวา่ การออกแบบของ JSP & Servlet เป็ นการออกแบบที่เรียกวา่ MVC (Model-View-Controller) หรือหมายความ ง่ายๆๆวา่ มนั แบ่งออกเป็ นส่วนๆๆ แตล่ ะส่วนก็ทาหนา้ ที่ของมนั ไปเชน่ Model ก็เก็บขอ้ มูล View ก็ทาหนา้ ที่ แสดงผล และ Controller ก็ทาหนา้ ท่คี วบคมุ การทางาน พวก รบั คา่ ,สง่ คา่ ,etc..

MVC คืออะไร ? ทาความเขา้ ใจรูปแบบการเขยี นโปรแกรม MVC เป็นตวั ยอ่ ของคาวา่ Model View Controller ใชเ้ รยี กรูปแบบการ พฒั นาซอฟตแ์ วรท์ ม่ี ีโครงสรา้ งซงึ่ แบ่งออกมาเป็น 3 สว่ นหลกั ตามตวั ยอ่ ของชอื่ รูปแบบการพฒั นาซอฟตแ์ วร์ แบบ MVC ถกู นาไปใชใ้ นขน้ั ตอนการพฒั นาหลากหลายภาษาเพราะ MVC เป็นเพียงหลกั การออกแบบ โปรแกรม ( Design Pattern ) รปู แบบหน่ึงเทา่ นน้ั ซงึ่ เป็นทนี่ ิยมมากในการนามาพฒั นา แอพพลิเคชน่ั ซอฟตแ์ วรแ์ ตล่ ะแพลตฟอรม์ และประยุกตใ์ ชใ้ นอกี หลาย ๆ ดา้ น

สว่ นของ MODEL (M) model คอื สว่ นของการเก็บรวบรวมขอ้ มูล ไม่วา่ ขอ้ มูลนนั้ ๆ จะถูกจดั เก็บในรูปแบบใดก็ ตาม ในฐานขอ้ มูลแบบเป็ น Object Class หรือทีน่ ิยมเรยี กกนั ว่า VO ( Value Object ) หรอื เก็บเป็ นไฟลข์ อ้ มูลเลยเมื่อขอ้ มูลถูกโหลดเขา้ มาจากที่ตา่ ง ๆ และเขา้ มายงั ส่วนของ โมเดล ตวั โมเดลจะทาการจดั การตระเตรียมขอ้ มูลใหเ้ ป็ นรูปแบบทเ่ี หมาะสม เพ่ือรอการรอ้ งขอขอ้ มูลจาก สว่ นของ Controller

สว่ นของ VIEW (V) view คือสว่ นของการแสดงผล หรือส่วนท่ีจะปฏิสมั พนั ธก์ บั ผูใ้ ชง้ าน ( User Interface ) หนา้ ท่ขี อง viewในการเขียนโปรแกรมแบบ MVC คือคอยรบั คาสงั่ จากสว่ นของ Controller และ End User เร่มิ แรกเลยตวั ววิ อาจจะไดร้ บั คาสง่ั จาก Controller ใหแ้ สดงผลหนา้ Home และเม่ือผูใ้ ชง้ านหนา้ เวบ็ กดป่ ุมสง่ั ซ้ือ View จะสง่ ขอ้ มลู ไปให้ Controller เพือ่ ประมวลผลและแสดงบางอยา่ งจาก Action นน้ั

สว่ นของ CONTROLLER (C) controller คอื สว่ นของการเรมิ่ ทางาน และรบั คาสงั่ โดยทคี่ าสงั่ นน้ั จะเกดิ ข้ึนใน ส่วนการติดต่อกบั ผูใ้ ชง้ านคือ viewเมื่อผูใ้ ชง้ านทาการ Interactive กบั UI view จะเกิดเหตุการณห์ รอื ขอ้ มูลบางอยา่ งข้ึน ตวั ววิ จะส่งขอ้ มูลนน้ั มายงั controller ตวั controller จะทาการประมวลผลโดยบางคาสงั่ อาจจะตอ้ งไปติดต่อกบั model ก่อนเพ่ือทาการประมวลผลขอ้ มูลอยา่ งถูกตอ้ งเรยี บรอ้ ยแลว้ ก็จะสง่ ไปยงั view เพ่ือแสดงผล ตามคาสง่ั ท่ี end user รอ้ งขอมาController จะทาหนา้ ที่เป็ นตวั กลางระหวา่ ง Model และ View ใหท้ างานรว่ มกนั อยา่ งมีประสิทธิภาพและตรงกบั ความตอ้ งการของ End User มากทส่ี ุด

หลกั การทางานของ SERVLET เม่อื ผูใ้ ชส้ ง่ ขอ้ มูลผา่ นฟอรม์ ไปยงั servlet เม่อื servlet ทางานเป็นครงั้ แรก ทาการรวบรวมขอ้ มลู และตง้ั คา่ เรมิ่ ตน้ จากเมธอด init() กอ่ นจงึ เรม่ิ การทางาน เมอ่ื servlet ทางานในครง้ั ตอ่ ๆไปไมต่ อ้ งเรยี กเมธอดน้ีServlet ทาการประมวลผลและสรา้ ง ผลลพั ธใ์ นรปู แบบ HTML Web server ทาการสง่ ผลกลบั ไปยงั ผใู้ ช้

หลกั การทางานของ SERVLET

THREAD คอื อะไร ? Thread คือสว่ นของการประมวลผลชดุ ลาดบั คาสงั่ ของโปรแกรมที่เล็กทส่ี ดุ ที่สามารถจดั การ โดยตวั จดั การ ซง่ึ โดยปกตแิ ลว้ จะพบในระบบปฏิบตั ิการ การพฒั นาของ Thread และ Process นนั้ แตกต่างกันในแต่ละระบบปฏิบตั ิการ แต่โดยส่วนมากแลว้ Thread น้ันเป็ นส่วนประกอบของ Process Multiple threads นน้ั สามารถพบไดใ้ นหนึ่ง Process ที่ทางานพรอ้ มๆ กนั โดยการใชง้ าน Resource ร่วมกนั เช่น หน่วยความจา ในขณะท่ี Process ท่ีตา่ งกนั นน้ั จะไมใ่ ช้ Resource เหล่าน้ีรว่ มกนั สาหรบั Thread ของ Process นน้ั จะใชโ้ คด้ และคา่ ท่ีอยูใ่ นตวั แปร รว่ มกนั

การสรา้ ง THREAD ในภาษา JAVA

ในตวั อย่าง เป็ นการสรา้ ง Thread อย่าง่ายในภาษา Java โดยคลาส MyThread เป็ นคลาสการ ทางานของ Thread ที่ Implement จาก Interfaces Runnable และมี abstract เมธ อด run() เป็นเมธอดสาหรบั กาหนดการทางานของ Thread เพื่อให้ Thread ทางาน เราสรา้ ง Thread ออบเจ็ค จากคลาส Thread และเริม่ ตน้ การทางานของ Thread ดว้ ยเมธอด start()

การสรา้ ง MULTI-THREADED PROGRAM

FILTER

SERVLET FILTER ก่อนท่ี Request จาก Client จะถึง Servlet พวก request เหล่านน้ั ตอ้ งผ่าน Filter ก่อนโดยเจา้ Filter นี่ก็เป็ นตวั ที่ทาหนา้ ที่ “กนั้ ” Client Request และ Server Response เมื่อ Client Request เขา้ มา ก่อนจะถึง Resource ของ Servlet,JSP หรือ HTML ก็ตอ้ งผ่าน Filter ก่อน ดงั นน้ั ก่อนท่ีจะถึง Resource Filter ก็จะสามารถจดั การอะไร บางอยา่ งกบั Request ไดแ้ ละเม่ือได้ Resource แลว้ Filter ก็จะสามารถ จดั การกอ่ นทจี่ ะสง่ Response กลบั ไปหา Client ไดเ้ ชน่ กนั

เพ่ือใหเ้ ห็นการทางานของ Filter ผมจะสรา้ งโปรเจคตวั อยา่ งโดยใช้ Netbean และ Tomcat โดยเรมิ่ จากสรา้ งโปรเจคทเี่ ป็น Web Application

ตง้ั ชอื่ โปรเจควา่ ServletFilter โดยใชค้ า่ อนื่ ๆเป็น Default ทง้ั หมด จากนน้ั เราจะ ทาการสรา้ ง Pagekage และ Servlet Filter Class

สรา้ ง Class ชอ่ื FirstFilter ใน Package cc.co.greannetwork.servletfilter.servlet.filter ซงึ่ จะทาการเพ่ิมโคด๊ ดงั น้ีครบั

 ทาการสรา้ ง Filter อกี ตวั หน่ึงชอ่ื SecondFilter ซงึ่ มรี ายละเอยี ดคลา้ ยกบั ตวั แรก

 เมื่อเราไดท้ าการสรา้ ง Filter แลว้ ตอ่ ไปก็คอื การเรยี กใชโ้ ดยเราจะเรยี กใชผ้ ่าน web.xml

 ลาดบั การเรยี กใชง้ าน Filter จะเรยี งตาม filter-mapping ถา้ เราประกาศตวั ไหนกอ่ น ตวั นน้ั ก็จะถูกเรยี กใชก้ ่อน ซงึ่ เม่อื เราทาการ Run Project จะมีขอ้ ความออกท่ี Log

 จะเหน็ ไดว้ า่ เมอ่ื Client Request จะถกู Filter จากตวั แรกไปตวั สุดทา้ ย ตามลาดบั ใน Filter-mapping แตเ่ มื่อ Server Response กลบั จะ เรยี งจากตวั สุดทา้ ยไปหาตวั แรก


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook