JSP Introduction

Merhaba arkadaşlar, blog’da Servlet&Jsp yazılarına devam ediyorum. Bu yazımda Jsp hakkında bilgiler vereceğim, Jsp mimarisine bir göz atacağız.

Servlet yazıları bitti sayılır, aslında birkaç konu daha yazabilirim bilemiyorum Error/Exception Handling ve Dispatcher konularını yazabilirim ama net bir durum yok şuan . Jsp yazılarına bu yazı ile başlamış bulunmaktayız , başlamak bizden sonuç Allah(c.c)’tan. Başlayalım

JSP – Java Server Pages

Dinamik web sayfaları oluşturmaya yarayan bir Java web frameworküdür. Servlet Api’nin devamı/genişletilmiş hali denilebilir. Daha önce Servlet class’larımız içerisinde HTML kodları yazıyorduk ve bu işimizi zorluyordu. Şimdi ise HTML tagları içerisine Java kodu yazacağız. Servlet içerisinde html tagları yazmak zor ve zahmetli olmaktadır. MVC mimarisinde Servlet , Controller görevi görmektedir. Jsp ise View görevi görmektedir.

Jsp’nin Servlet’lerden bir farkı olmadığını söyleyelim. En sonunda Jsp sayfları java source code’a çevrilir ve compile edilir. Burada önemli nokta ise sonradan java source code’a çevrilen kodumuzda jsp kodlarımızın önemi/etkisi ve yeri olacaktır.

In the end, a Jsp  is the just Servlet.

Jsp sayfları .jsp ile biter ve .html uzantılı dosyaların uzatnısını .jsp yaparak da jsp dosyaları oluşturabilirsiniz. Başlangıç için iyi bir pratiktir, ben öyle yapmıştım zamanında

Jsp sayfları en sonunda tam teşekküllü servlet’lere dönüşür. Nasıl ki Servlet yazıyoruz o şekil servlet’lere dönüşür. Fakat bunu biz yapmıyoruz. Contaıner bizim için bu işlemi gerçekleştirecektir. Contaıner olarak yine Tomcat kullanıyor olacağım. Yine jsp yaşam döngüsü Contaıner kontrolündedir unutmayalım.

Jsp mimarisinden bahsettikten sonra biraz da servlet’lere dönüşme kısmına bakalım.

Jsp yaşam döngüsü birkaç adımdan oluşmaktadır;

  • Translate : jsp sayfası .java servlet dosyalarına translate edilir.
  • Compile : Servlet compile edilir.
  • İnitalized and loaded : Servlet load olunur ve initalize edilir.

Daha sonra Contaıner load olunan servlet’e gelen her request için bir thread oluşturup/seçip servletin service() methodunu çağırır.

Dönüşüm aşamaları için ufak bir alıştırma yapalım; Hello.jsp adlı bir jsp sayfamız/dosyamız olsun.

  1. Translate aşamasında Hello_jsp.java dosyası/servlet oluşur.
  2. Compile aşamasında Hello_jsp.class dosyası oluşur.
  3. Load ve init aşamasında Hello_jsp servlet objesi olarak oluşur.

Yine jsp’nin yaşam döngüsünde servlete benzer bir yapı ortaya çıkar. Jsp lifecycle içerinde jspInit() , _jspService() ve jspDestroy() methodları mevcuttur. jspInit(), Contaıner tarafından servlete dönüştürülmüş jsp load olduktan sonra ve herhangi bir request alınmadan önce initalization işlemi gerçekleştirilir. request handle kısmı veya diğer bir deyişle main logic kısmı _jspService() methodunda gerçekleşmektedir. Load olunan jsp sayfasına bir request geldiğinde Contaıner _jspService methodunu çağırır. _jspService method HttpServlet request ve response objeelerini parametre olarak alır. jspDestroy() ise contaıner tarafından jsp/servlet sayfasının unload/silindiginde çalıştırılır. Jsp yaşam döngüsüne detaylı şekilde daha sonra değinip örnek üzerinden bu aşamaları göstereceğim.

 

Yine servlet’e benzer olarak jspInıt() ve jspDestroy() methodları lifecyle içerisinde sadece bir kez çağrılır. Service methodundaki (_) underscore özellikle yapılmıştır. Bu _jspService() methodunun override edilemeyeceğini gösterir. Bu trick bilgiyi aylar önce burada yazmıştım

Kısa bir Jsp örneği yapalım, yabancı gelebilecek olan terimler olabilir telaş yapmayın , zamanı geldiginde hepsine detaylıca değinicem Amacım bir jsp sayfası nasıl görünür(taslak) onu belirtmek.

index.jsp

index.jsp sayfasında html taglarının içerisine birşeyler yazmışız, ne ola ki bunlar?

<%@ %> olan kısım directive olarak geçer ve contaıner’a jsp sayfasını nasıl yorumlaması gerektiği hakkında bilgi verir. Örnekte biz contentType, charset ve dil ayarı vermişiz.

<% %> olan kısım scriptlet olarak geçer, genelde java kodlarımızı buraya yazıyor olacağız.  Scriptlet içerisine yazılan java kodlarının ; ile bitmesi zorunludur.

out.print() ifadesi bir java statement’dır ve scriptlet içerisine yazılmıştır. out objesi implicit/kapalı JspWriter bir objedir. Web sayfasında çıktı oluşturmamızı sağlar. Daha sonra implicit objelere ve türlerine değineceğim.

index.jsp sayfamızı tomcat’de çalıştıralım ve çıktıyı görelim;

Screenshot from 2015-05-23 22:37:58

Jsp giriş yazımızın sonuna geldik arkadaşlar, yazımı burada sonlandırmak istiyorum.

Mutlu kalın, kod’la kalın ve bol bol Çay için

~ Alican Akkus

 

1088 Total Views 1 Views Today