Struts2 El Kitabı - 4. İlk Struts2 Uygulaması 15 September 08, Monday @ 00:00

Bu yazımızda, ilk Struts2 uygulamasını yapmaya çalışacağım. Aşağıdaki yazıda da anlatıldığı gibi Struts2 uygulaması yaratmanın 2 aşaması vardır: 1. yönetimselaşama, 2. kodlama aşaması.

 

Bu yazımız yönetimsel kısmı anlatmaktadır.

 

İlk Struts2 Uygulaması

 


Bir Struts2 uygulaması yapmanın 2 aşaması vardır: yönetim aşaması ve programlama aşaması.

Yönetim aşaması, web proje yaratma ve web projesine struts2 desteği eklemeden meydana gelir.

Programlama kısmı, struts.xml dosyasında bir action tanımlama, java clasını yaratma, JSP sayfasını yaratma ve dönüş kodlarını tanımlamadan oluşur.

İlk görünüşte, bu aşamaların ne olduğunu anlayamamış olabilirsiniz, okumaya devam edin hepsi açıklığa kavuşacak.

Struts2 uygulamasını Eclipse ile geliştireceğiz. Eclipse'i http://www.eclipse.org/downloads/ linkinden elde edebilirsiniz. Lütfen “Eclipse IDE for Java EE Developers” adlı eclipse uygulamasını indiriniz.

 

Şimdi Struts2 uygulamasına yönetim kısmı ile başlayalım.


Web Projesi Yaratmak


Eclipse'te Web projesi yaratmak çok kolaydır.

Öncelikle,FileMenu->New->Project... düğmesine tıklayın ve aşağıdaki adımları uygulayın.

 

“Web/Dynamic Web Project” Sekmesini seçiniz

 

 

Proje Adını Atayınız


Burada, proje adı “SimpleStruts2Application” olarak belirlenmiştir. “Target RunTime” seçeneğinin otomatik olarak seçili olduğunu fark etmeniz lazım. Eğer , eclipse'te ilk sefer bir proje yaratıyorsanız, eclipse'e bir çalıştırma ortamı(Runtime Environment) ayarlamanız gerekmektedir. “Window->Preferences->Server->Installed Runtime” sekmesine gidip, bir Runtime ortamı atayınız. Örneğin: Apache Tomcat 6.0

Ardından, “Next” düğmesine tıklayınız.

 

 

 

 

Proje Façetasını(Facet) Atayınız

 


Eğer eclipse'de Java SDK ve hedef çalıştırma ortamını (Runtime) atamışsanız, proje Façetası otomatik olarak sizin için ayarlanır. Varsayılan ayarları değiştirmeden, “Next” düğmesine tıklayınız.

 

 

 

Web Modüllerini Ayarlamak

 

Bu aşamda da birşey yapmanıza gerek yoktur. Varsayılan ayarları kabul edip “finish” düğmesine tıklayınız.

 

 

 

Web Projenize Struts2 Desteği Sağlamak

Eğer bir Struts2 uygulamak istiyorsanız, var olan bir Struts2 Web projesine Struts2 kütüphanelerini yüklemek ve gerekli ayarları yapmak zorundasınız.


Öncelikle, http://apache.karegen.com/struts/library/struts-2.0.11.2-lib.zip adresinden Struts2 kütüphanesini indiriniz. Arşiv dosyasını açtıktan sonra WEB-INF/lib dizini altındaki JAR dosyalarını kendi projenizdeki WEB-INF/lib dizinine kopyalayınız.


Bu kopyalama sonunda Projenizin WEB-INF/lib dizini aşağıdaki gibi olmalıdır.

 

 



 

 

Ardından, web.xml dosyanızı değiştirerek Web Projenize Struts2'yi tanıtmanız gerekmektedir.

Aşağıdaki satırları WEB-ING/web.xml dosyasına ekleyiniz.


<filter>

<filter-name>struts2</filter-name>

<filter-class>

org.apache.struts2.dispatcher.FilterDispatcher

</filter-class>

</filter>

<!-- Add the filter mapping after all filters -->

<filter-mapping>

<filter-name>struts2</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

 

Web Projesine Struts2'yi tanıttıktan sonra son olarak yapmanız gereken bir struts.xml dosyası oluşturmaktır. Bu dosya Struts2 kütüphanesinin ayar dosyasıdır.


Struts.xml dosyası src/ dizini altında yaratılmalıdır. Bu dosyayı yaratıp aşağıdaki tekst'i dosyaya yapıştırınız. Bu en basit struts.xml dosyasıdır.




<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>


<package name="SimpleStruts2ApplicationPackage1" namespace="/" extends="struts-default">



</package>


</struts>



Bu aşamada, struts.xml dosyasında herhangi bir Action tanımlanmamıştır. Bu yönetimsel aşamalar bittikten sonra ilk Action'ımızı tanımlayacağız.


Şimdilik herşey tamam, en azından öyle görünüyor, çünkü henüz test yapmadık.

 

 


Struts2 uygulamamızı ayağa kaldırmak için, Web Projemizi Apache Tomcat Sunucumuzz yüklememiz gerekmektedir.


Eclipse'te J2EE perspektivine geçip, aşağıdaki “Servers” tab'ında sağtıklayınız.

 

 

Yukarıdaki resimdeki gibi, new->Server sekmesine tıklayarak, Sunucu yaratımına başlayınız. Tıklamadan sonra ekranınızda aşağıdaki resim belirecektir. Burada Tomcat 6.0 sunucusunu seçerek “Next” düğmesine tıklayınız.

 


 

 

Bir sonraki ekranda, sol bölmedeki SimpleStruts2Application sırasına tıklayıp “Add” düğmesine tıklayınız. Bu işlem sonucunda SimpleStruts2Application uygulaması sağ bölmede görünecektir. “Finish” düğmesine tıklayarak ekranı sonlandırın. Böylelikle SimpleStruts2Application uygulamasını Apache sunucusuna yüklemiş oldunuz.

 

 




Şimdi test zamanı. Eclipse ekranında aşağıda yer alan “Servers” tabındaki sunucuya sağ tıklayıp, gelen menüde “start” düğmesi ile sunucuyu başlatın.


Şimdi, işin kötü kısmı başlıyor. Şanslı isek konsolda hiçbir hata görmeden sunucumuz çalışacak, eğer şansımız yoksa ekranımızda kırmızı kırmızı hata mesajları belirecek.





SEVERE: Exception starting filter struts2

Unable to load bean: type:com.opensymphony.xwork2.ObjectFactory class:org.apache.struts2.spring.StrutsSpringObjectFactory - bean - jar:file:/home/halil/workspace_tvq/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/SimpleStruts2Application/WEB-INF/lib/struts2-spring-plugin-2.0.11.2.jar!/struts-plugin.xml:30:132



Maalesef ki şanslı değiliz. Yukarıdaki hata mesajı konsol ekranımızda belirdi. Eğer siz de böyle bir hata aldıysanız, bu şu demek: Sunucunuz org.apache.struts2.spring.StrutsSpringObjectFactory sınıfına ihtiyaç duyuyor ve onu herhangi bir yerde bulamıyor.


Bu problemi çözmek için bahsi geçen sınıfın hangi jar dosyası içinde bulunduğunu öğrenip, o jar dosyasını WEB-INF/ib dizinimize eklememiz gerekiyor.


Bu jar dosyası spring.jar. http://sourceforge.net/project/showfiles.php?group_id=73357&package_id=173644&release_id=608794 linkindeki Spring kütüphanelerini indirisek bir spring.jar dosyamız olacak.


Şimdi linkten arşiv dosyaını indirip, içini açıp spring.jar dosyasını WEB-INF/lib dizinine kopyalayınız. Ardından, Tomcat sunucunuzu tekrardan başlatınız.



Eğer yukarıda anlattığım yolların hepsini izlemişseniz, tekrar başlattıktan sonra aşağıdaki bir hata ile daha karşılaşmanız gerekmekte :).



SEVERE: ********** FATAL ERROR STARTING UP STRUTS-SPRING INTEGRATION **********

Looks like the Spring listener was not configured for your web app!

Nothing will work until WebApplicationContextUtils returns a valid ApplicationContext.

You might need to add the following to web.xml:

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>






İngilizce biliyorsanız, yukarıdaki hata gayet açık. Aşağıdaki yazıyı web.xml dosyanıza ekleyip, sunucunuzu tekrar başlatın diyor.




<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>






Tekrar başlattıktan sonra, işler maalesef bitmiyor. Yine benim gittiğim yoldan gitmişseniz :), aşağıdaki gibi bir hata ile karşılaşmanız gerekiyor.




org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/applicationContext.xml]



Yine İngilizce biliyorsanız, hata yine gayet yönlendirici. Diyor ki, /WEB-INF/applicationContenxt.xml dosyasını bulamıyorum. Yapmamız gereken böyle bir dosya yaratmak.



Bahsi geçen dosyayı yaratıp, aşağıdaki içeriği dosyaya yapıştırın. Ve tekrardan Tomcat'i baştan başlatın.




<?xml version="1.0" encoding="UTF-8" ?>


<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">


</beans>




Maalesef hatalar bitmiyor. Bu sefer de aşağıdaki hata ile karşılaşıyoruz.



WARNING: Unable to load config class org.apache.struts2.jsf.FacesSetupInterceptor at interceptor - jar:file:/home/halil/workspace_tvq/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/SimpleStruts2Application/WEB-INF/lib/struts2-jsf-plugin-2.0.11.2.jar!/struts-plugin.xml:36:97 probably due to a missing jar, which might be fine if you never plan to use the jsfSetup interceptor

26.Ağu.2008 11:01:17 com.opensymphony.xwork2.config.providers.InterceptorBuilder constructInterceptorReference

SEVERE: Actual exception

Could not load class org.apache.struts2.jsf.FacesSetupInterceptor. Perhaps it exists but certain dependencies are not available? - interceptor - jar:file:/home/halil/workspace_tvq/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/SimpleStruts2Application/WEB-INF/lib/struts2-jsf-plugin-2.0.11.2.jar!/struts-plugin.xml:36:97






Bu hata da aslında gayet açık. Eğer projenizde JSF desteği istiyorsanız, org.apache.struts2.jsf.FacesSetupInterceptor sınıfını ve bağlı olduğu jar dosyalarını sisteme yükleyiniz.


Ama biz projemizde JSF desteği istemiyoruz. Dolayısı ile Struts2 ile gelen JSF eklentisini de istemiyoruz. Zaten hataya sebep olan bu eklenti kütüphanesi. Yapmamız gereken, bu hataya sebep olan eklenti kütüphanesini yani struts2-jsf-plugin-2.0.11.2.jar dosyasını Web-INF/lib dizininden silmek.


Bunu jar dosyasını sildikten sonra sunucunuzu tekrardan başlatın. Yine eğer benim gittiğim yoldan gitmişseniz, bu sefer hata almamanız gerekiyor :).


Nihayet, Struts2 uygulamamızın ilk ayağı olan yönetim ayağı bitmiş oldu. Çünkü sistemimiz ayağa kalkarken(yani sunucu start olurken) hiçbir hata almıyor. Şimdi sıra Struts2 action'larımızı tanımlamada.

 

 

-halil agin. 




Tags: struts2  Struts2 uygulaması  Struts2 Projesi Yaratmak 

Comments

Post a comment (max. 3000 character)

Your name: Comment:
Number of remaining characters: