06 December 2011

GenericServlet VS HttpServlet

javax.servlet.GenericServlet
Signature : public abstract class GenericServlet extends java.lang.Object implements Servlet, ServletConfig, java.io.Serializable

- GenericServlet จะประกอบไปด้วย protocal พื้นฐานใน Servlet
- GenericServlet จะมีต้นแบบ(พิมพ์เขียว) สำหรับการใช้งาน Servlet
- Lifecycle ของ GenericServlet จะอยู่กับ init และ destroy และ method ใน ServletContext interface
- GenericServlet สามารถทำงานผ่านการ Override service method

javax.servlet.http.HttpServlet
Signature : public abstract class HttpServlet extends GenericServlet implements java.io.Serializable

- HttpServlet จะประกอบด้วย protocal Http เท่านั้น
- HttpServlet จะมีต้นแบบ(พิมพ์เขียว) สำหรับการใช้งาน Http
- HttpServlet extend มาจาก GenericServlet
- HttpServlet สามารถใช้ session และ cookie ได้
- HttpServlet ทำงานผ่าน doGet() doPost() doXXX()

java.lang.Object
|--javax.servlet.GenericServlet <===== Generic
  |--javax.servlet.http.HttpServlet <===== Http

สรุปคือ GenericServlet นั้นสามารถใช้กับโปรโตคอลบน TCP/IP ซึ่งต่างจาก HttpServlet นั้นสร้างมาเพื่อใช้งาน Protocal Http

Ref. Javapaper


เพิ่มเติมจาก
Java Servlet Programming
Jason Hunter
William Crawford
Publisher: O'Reilly
ISBN: 0-596-00040-5
หัวข้อ 2.2 The Servlet API

GenericServlet นั้นจะทำงานผ่าน service() method โดยจะมี parameters อยู่สองตัวคือ request และ response


HttpServlet นั้นจะทำงานผ่าน service() เช่นกันเหมือน GenericServlet แต่ว่าจะโยนต่อไปให้ doGet() และ doPost() ซึ่งถ้าดูตามภาพข้างล่างจะเห็นว่าเป็น service() ของ HttpServlet นั้นหมายความว่าถ้าเป็น request แบบ Http Servlet จะโยนเข้า service() ของ HttpServlet เลยแต่ถ้าเป็น protocal อื่นจึงโยนเข้า service() ของ GenericServlet

0 comments:

Post a Comment