Bilal Koçoğlu/ Nisan 1, 2018/ Servlet

Servlet Mapping ve Startup  

Arkadaşlar merhaba bir önceki dersimizde Inttellij IDE‘de yer alan web tool aracılığıyla ilk servletimizi oluşturup bazı methodların çalışma sırasını incelemiştik. Şimdi ise ilk olarak web tool kullanmadan bir servletin nasıl oluşturulacağına ve oluşturulan servletin web.xml sayfasında nasıl haritalandığını inceleyeceğiz. Servlet Mapping ve Startup daha sonra ise web uygulamamıza ilk request(istek) geldiğinde arka tarafta ne gibi işlemlerin gerçekleştiğine bakacağız ve welcome-file-listload in statup gibi web.xml etiketlerinden bahsedeceğiz.

Servlet Mapping

  Önceki derslerimizde oluşturduğumuz maven projemiz üzerinden devam ediyoruz arkadaşlar. service paketimizin altında ServletMapping adında bir class oluşturalım ve bu sınıfın bir servlet gibi davranabilmesini sağlayacak olan HttpServlet sınfını extends edelim. Bu sınıfın bize sağladığı doGet() methodunu override ettikten sonra içine vermek istediğimiz mesajı yazalım.

  Şimdi ikinci aşama ise oluşturduğumuz bu servleti web.xml sayfasında tanımlamaya ve hangi url ile ulaşılacağını belirtmeye geldi. Bunun için servlet ve servlet-mapping taglarını kullanıyoruz. Detaylı gösterim ve kodlar aşağıda belirtilmiştir. Aldığınız hataları ve kafanıza takılan soruları bize ulaştırmayı unutmayın.

pom.xml

ServletHaritalama.java

web.xml

index.jsp

  Çalıştırıp açılan index.jsp sayfasındaki linke tıkladığımızda yine hata sayfasıyla karşılaşacağız, geçen derste de bahsettiğimiz gibi gelen requeste bir response oluşturup başka bir sayfaya yönlendirmediğimizden bu hatayı alıyoruz. Bir sonraki derste bu konuya değinilecektir ancak bu örnekte dikkat etmemiz gereken sayfadaki linke tıkladıktan sonra derleyicimizin output tool’una bir göz atalım;

Servlet Mapping ve Startup
Servlet Mapping ve Startup

  Görüldüğü üzere işlem başarılı bir şekilde gerçekleşti. Şimdi ise requestin nasıl işlendiğini inceleyelim.

Web Kapsayıcısı Servlet İsteğini Nasıl İşler ?

 Web konteynırı isteği yerine iletmekten sorumludur. Hadi bu işlemi nasıl gerçekleştirdiğine bakalım:

  • İsteği(request) web.xml dosyasındaki servlet ile eşler.(servlet-name tagı içinde belirttiğimiz isme göre eşlenir.)
  • Bu istek için istek(request) ve cevap(response) nesnelerini oluşturur.
  • Thread ile service methodunu çağırır.(Servlet teknolojisinin threadleri kullandığını bu sebepten CGI teknolojisi üzerinde biçok avantajı olduğunu daha önceki derslerimizde belirtmiştik.)
  • Public service methodu, protected service methodunu çağırır.
  • Protected service methodu, gelen isteğe bağlı olarak ilgili methodu çağırır(doGet, doPost vs.)
  • DoGet yöntemi yanıt üretir ve istemciye geçirilir.
  • Daha sonra yanıt gönderilir.(Yanıtın yönlendirilmesi işlemi bir sonraki dersimizin konusudur.)

  Bu aşamalardan da bahsettikten sonra sıradaki konumuz web.xml sayfasında işimize yarayabilecek welcome-file-list ve load-on-setup etiketleri.

welcome-file-list in web.xml

  web.xml in içinde giriş sayfasını tanımlamamıza yarayan bir ögedir. Karşılama dosyası, herhangi bir dosya adı belirtmezseniz, sunucu tarafından otomatik olarak çağrılan dosyadır. Varsayılan olarak index.html, index.jsp, index.htm gibi dosyalar çağırılır. Bu dosyalar da yok ise server 404 hatası gönderir ve ekranda dosya bulunamadı hatası gelir. Eğer welcome-file-list’te dosya tanımladıysanız öncelikli olarak onu başlatır. Kullanımına örnek vermek gerekirse;

load on startup in web.xml

  Web uygulaması yüklenme-başlatma unsuru, değer pozitifse dağıtım veya sunucu başlatma sırasında servleti yükler. Servlet’in ön başlatma işlemi olarak da bilinir. Servlet için pozitif ve negatif değerler iletebilirsiniz. Servletlerin yüklenmesi, belirttiğiniz sıraya göre gerçekleşir.
  Bildiğiniz gibi servlet ilk istekte yüklenir. İlk istekte daha fazla zaman harcıyor demektir. Web.xml’de başlangıçta yükle seçeneğini belirlerseniz, servlet proje dağıtım zamanında veya sunucu başlatmada yüklenir. Dolayısıyla, ilk istek üzerine yanıt vermek daha kısa sürer.
  Pozitif değeri geçerseniz, daha düşük tamsayı değerli servlet, daha yüksek tamsayı değer servletinden önce yüklenecektir. Diğer bir deyişle, kapsayıcı, servletleri artan tamsayı değerde yükler. 0 değeri önce yüklenecek, sonra 1, 2, 3 vb. Yüklenecektir. Aşağıda verilen örnekle onu anlamaya çalışalım:

  Bu durumda ServletMapping ismindeki servlet, ServletMapping2 ismindeki servletten daha önce yüklenir.

  Bu dersimizi burada noktalıyoruz arkadaşlar bir sonraki konumuz servlete gelen istekleri işlemek ve gerekli sayfalara yönlendirmek olacaktır.

 Hepinize iyi çalışmalar diliyorum.

Bir Yorum Yapın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*
*