Servlet nedir? Nasıl kullanılır?
Servlet, client'tan gelen istekleri işleyip cevap gönderen bir server-side component'tir.Tipik bir Java EE application'daki temel birimlerden biridir.
Diğerleri JSP, EJB, XML, vb'dir.
Servlet genelde JSP ile beraber client'tan gelen isteklere göre dinamik içerik yaratmakta kullanılır.
Servletler HttpServlet sınıfının doGet() ve doPost() metodlarını override ederek GET ve POST isteklerini yönetirler.
Örnek bir senaryoda:
1. JSP ile kullanıcının dolduracağı bir form gösterilir.
2. Form doldurulup gönder butonuna tıklandığında servlet çağırılır.
3. Servlet kullanıcının yazdığı veriyi işleyerek ona göre bir cevap gönderir.
Örneğin formun başında kullanıcının girdiği e-posta adresinin hatalı olduğunu belirten kırmızı bir uyarı yazısı belirebilir.
Ya da bazı alanların boş bırakılmaması gerektiği belirtilebilir.
Servlet container nedir?
Servlet container, java servletleri çalıştırabilen bir web server'dır.Container sayesinde threadler, güvenlik, JSP processing, networking gibi konularla uğraşmamıza gerek kalmaz.
Container bizim için bunları kendisi hallettiğinden, biz sadece business logic üzerinde çalışabiliriz.
Not:Her web server, servlet container olamaz.
Örneğin Apache HTTP Server, sadece statik HTML sayfalarını sunabilir.
Fakat java servletleri çalıştıramaz. Bu yüzden de servlet container olamaz.
Tomcat ise hem HTTP listener, hem de JSP/servlet engine içerdiğinden hem statik, hem de dinamik HTML sayfalarını sunabilir. Bu yüzden servlet container olabilir.
En çok kullanılan servlet containerlar:
- Apache Tomcat
- Glassfish
- JBoss
- WebLogic
Servlet container istek ve cevapların kullanılabilmesi için servlete HttpServletRequest ve HttpServletResponse nesneleri verir.
Servlet bu nesneler aracılığıyla istekleri inceler ve cevapları hazırlar.
Servlet life cycle / yaşam döngüsü
Servlet container, yaşam döngüsü boyunca servletin şu metodlarını tetikler (invoke):1. init()
Servletin yaşam döngüsünde (life cycle) bir kere çağırılır.
Client ilk kez servleti çağırdığında, servlet container bu metodu tetikler.
Burada genelde initialization kodları konulur.
2. doGet()
Client servlete HTTP GET isteğinde bulunduğu her seferde, bu metod tetiklenir.
Bu metoda servlet container iki nesne enjekte eder:
a. HttpServletRequest
Bu nesne istek parametreleri ve headerlarını wrap'ler.
Böylece servlet, getParameter() ve getHeader() metodlarını kullanarak client'ın yolladığı mesajın parametre ve headerlarına erişebilir.
b. HttpServletResponse
HTTP response headerlarını set etmek için ya da client'a HTML içeriği göndermek için kullanılır.
3. doPost()
Client servlete HTTP POST isteğinde bulunduğu her seferde bu metod tetiklenir.
Bu metodun aldığı iki parametre doGet() ile aynıdır.
Servlet, HttpServletRequest nesnesi ile client'tan gelen parametreleri alarak, işledikten sonra oluşan cevabı HttpServletResponse nesnesi ile client'a gönderir.
4. destroy()
Servlet container, web application durdurulacağı zaman ya da server kapanacağı zaman bu metodu tetikler.
Hiç yorum yok:
Yorum Gönder