Web Application Structure

Merhaba arkadaslar, bu yazımda Java Web Application’ların dizin yapısına ve özelliklerine değineceğim.

Öncelikle jar, war ve ear gibi modüllerin ne oldugunu kısmen biliyor olmalısınız. Jar formatı, lowest level olarak geçer ve en alt seviye arşivleme formatıdır, Java class’larını vs içerir.

War ve Ear ise işin web ile enterprise tarafında yer almaktadır. War file, servlet&jsp ve diğer dosyaları içeren Web Archives file’dır. Ear ise War’ın daha kompleks hali düşünebilinir. Ear, war dosyasını, ejb modüllerini içerebilir.

Web Application Structure

Bir Java web uygulamasında klasör hiyerarşisi vardır ve olmalıdır.  Klasör/Dizin hiyerarşisi içerisinde class’lar, lib’ler, static html’ler ve diğer kaynaklar yer almaktadır. Şimdi örnek bir proje oluşturalım ve hiyerarşiye bakalım. Eclipse’de bir Dynamic Web Project oluşturalım. Oluşturdugumuz proje yapısına bakalım;

Screenshot from 2016-02-25 17:51:02

 

Projemiz içerisinde Java Resources altında src klasörü bulunmaktadır. Bu klasör development anında Java class’ların bulunacağı kısımdır. Web Application yapısı içerisinde WebContent klasörü bulunmaktadır. Bu klasürün adı değişebilir ancak WEB-INF klasöürünü içermek zorundadır.

WEB-INF Folder

Bir Java Web Applicationda WEB-INF klasörü özel bir klasördür ve doğrudan erişilen bir dizin değildir. WEB-INF içerisinde web.xml olan deployment descriptior file bulunmaktadır. Deployment file içerisinde WEB-INF içerisinde yer alan ve doğrudan erişilemeyen kaynaklara nasıl erişileceği bulunmaktadır. Bkz : Url mapping.

WEB-INF içerisinde lib ve web.xml ile birlikte classes klasörü bulunmaktadır. Bu klasör compile olan Java class’larını içermektedir ve şuan gördüğünüz gibi bulunmamaktadır. WEB-INF içerisinde ki lib, web.xml ve compile edilmis Java class’ları doğrudan erişilemez , ancak web.xml üzerindeki tanımlamalar ile erşilebilir. Şimdi WEB-INF altına index.html sayfası oluşturalım ve sayfayı görüntüleyeme çalışalım;

Browserdan http://localhost:8081/HelloWord/index.html adresine girdigimizde 404 hatası alacagız.

Screenshot from 2016-02-25 18:01:50

Şimdi index.html sayfasını WebContent klasörüne taşıyalım ve tekrar aynı adrese gidelim;

Screenshot from 2016-02-25 18:03:26

 

Web Application dizin yapısına bakalım;

jeett_dt_012

Assembly Root, server ip ve port’tan sonra gelen Context name’dir. Örneğimizde HelloWord olacaktır. Doğrudan erişilebilecek olan kaynaklar Web Pages altına eklenebilir. Web Content altına jsp klasörü açalım ve az önceki index.html sayfasını oraya taşıyalım, dizin yapısı;

Screenshot from 2016-02-25 18:21:30

Gideceğimiz url ise şöyle olacaktır; http://localhost:8081/HelloWord/jsp/index.jsp

Context name olan HelloWord’den sonra root path Web Content’in altı olacaktır. index.jsp dizinine root path/jsp/index.jsp olarak gidilecektir. Şimdi bir servlet class oluşturalım ve WAR file çıkalım, compile olan class’ların nereye çıkacağını görelim;

com.wora.servlet.HelloServlet

web.xml

Browserdan şunu girelim : http://localhost:8081/HelloWord/hello ve çıktıya bakalım;

Screenshot from 2016-02-25 18:27:04

Şimdi war file çıkalım. Bunun için Eclipse’de projeye sağ tıklayıo Export diyelim ve WAR olarak export edelim yada command prompt’dan jar cvf HelloWord.war yine war file oluşacaktır. Oluşan war file’ı inceleyelim;

War dosyasını açtığımda şunu görecegiz;

Screenshot from 2016-02-25 18:33:05

Web Content’in altındaki klasörülerin war file içerisinde yer aldıgını görebiliriz. WEB-INF içerisine girelim;

Screenshot from 2016-02-25 18:32:32

 

Dikkat edeceginiz gibi WEB-INF altında java class’larının compile edilmis hali “classes” altında yer almaktadır, HelloServlet’imizi görebiliriz. Çıktığınız war file dosyasını Tomcat’de çalıştırmak için tomcat dizini altındaki webapps altına war dosyasını kopyalayıp tomcati restart ederseniz tomcatte çalışır hale gelecektir;

Screenshot from 2016-02-25 18:41:55

 

Tomcat default olarak 8080 portundan ayaga kalmaktadır; localhost:8080 portuna gidersek Tomcat safyası açılacaktır. Var olan applicationları listeleyelim;

Screenshot from 2016-02-25 18:43:12

HelloWord’e tıkladıgımızda index.jsp’e gidecektir.

Yazıyı burada sonlandırıyorum arkadaslar, bir sonraki yazıda görüşmek üzere.

~ A.Akkus

 

985 Total Views 1 Views Today