PDA

Orijinalini görmek için tıklayınız : Struts Sisteminin Kurulumu



Rhy
15.Şubat.2014, 12:00
1. Struts Nedir?

Struts projesi Jakarta grubu tarafından Java Server Pages ve Java Servlet tabanlı web uygulamalarının belli bir kalıba (MVC-2) uygun olarak geliştirilmesini kolaylaştırmak için oluşturulmuştur. Struts sistemi web sayfası tasarımcısının tasarımahttp://www.forumuz.net/images/digersmileyler/virgul.gif yazılım geliştiricisinin ise iş mantığına odaklanmasına olanak sağlar.
Bildiğimiz gibi Java Servlet teknolojisi geliştirilerek Java programlama dili ile sunucu (server) taraflı web uygulaması geliştirmenin temelleri atılmıştır. Servlet teknolojisihttp://www.forumuz.net/images/digersmileyler/virgul.gif Java sınıflarından oluştuğu için istemciden gelen istekleri Java servlet sınıflarına yönlendirecek bir Servlet kabına (Container) ihtiyaç duymaktadır (bkz Şekil-1). En çok kullanılan Servlet kapları Apache Tomcathttp://www.forumuz.net/images/digersmileyler/virgul.gif Websphere v.b.

Şekil 1 - Servlet uygulaması
Gelen isteğe göre istemciye gönderilecek cevap (HTML etiketleri ?) servlet sınıfı içinde oluşturulmaktadır. Cevap olarak gönderilen HTML etiketlerinde (HTML tag) değişiklik yapmak istediğimizde Servlet sınıfı içinde değişiklik yapıp derlememiz gerekir. Bu da uygulama esnekliğinin kaybolmasınahttp://www.forumuz.net/images/digersmileyler/virgul.gif tasarımcının Java kodlarıyla uğraşmasına neden olur.
Servlet ile web uygulaması geliştirmedeki zorluğu ortadan kaldırmak için daha sonraları Java Server Pages (JSP) teknolojisi geliştirildi. JSP teknolojisinin temelinihttp://www.forumuz.net/images/digersmileyler/virgul.gif XML / HTML etiketlerinden ve bunların aralarına script olarak konulan Java kodlarından oluşan jsp uzantılı dosyalar oluşturmaktadır. Tomcat gibi kaplar tarafından web uygulaması yüklenirken jsp uzantılı dosyalar arka tarafta Servlet sınıflarına dönüştürülüp derlenmektedir. (bkz Şekil-2)

Şekil 2 - JSP uygulaması
JSP teknolojisi geliştirilmesi ile Servlet teknolojisindeki sorunların kalkmasına rağmen yeni sorunlar ortaya çıkmıştır. Özellikle uygulama geliştirme (development) aşamasından önce herhangi bir tasarımhttp://www.forumuz.net/images/digersmileyler/virgul.gif modelleme gibi yazılım geliştirme aşamalarının uygulanmadığı projelerde iş mantığının tamamı veya bir kısmı Java kodu olarak jsp sayfalarına gömülmektedir. Üstelik aynı işi yapan ama farklı sonuç gösteren jsp sayfalarında ise Java kodları kopyalanmaktadır. Böylece kod tekrarları oluşmaktahttp://www.forumuz.net/images/digersmileyler/virgul.gif jsp sayfalarının yönetimi zorlaşmaktahttp://www.forumuz.net/images/digersmileyler/virgul.gif kod güvenliği ortadan kalkmaktadır.
Web tabanlı projelerde karşılaşılan bu tür sorunları ortadan kaldırmak için MVC (Model View Controller) tasarım kalıbına uyularak bir çok sistem yaratılmıştır : Barracudahttp://www.forumuz.net/images/digersmileyler/virgul.gif Expressohttp://www.forumuz.net/images/digersmileyler/virgul.gif Maverick v.b. Struts projesinde MVC-2 tasarım kalıbı kullanılmıştır. Yani istemci tarafından gelen istekler ilk olarak Yönetici Servlet (Controller Servlet) tarafından karşılanmakta ve Java Bean'ehttp://www.forumuz.net/images/digersmileyler/virgul.gif JSP sayfasına yada Servlet'e yönlendirilmektedir.
2. Struts'ı Neden Kullanmalıyım

Struts ile;
JSP sayfalarında bulunan Java kodları en aza inmekte
Kullanıcı arayüzünde (JSP) iş mantığını barındıran kodların bulunması engellenmekte
Arayüz tasarımcısının tasarıma yoğunlaşması sağlanmakta
Web tabanlı uygulamanın olay akışının tek bir XML dosyası (struts-config.xml) üzerinden kontrolü sağlanmakta
Yaygın olarak kullanılan form kontrolleri (e-posta adresihttp://www.forumuz.net/images/digersmileyler/virgul.gif boşlukhttp://www.forumuz.net/images/digersmileyler/virgul.gif sayıhttp://www.forumuz.net/images/digersmileyler/virgul.gif karakter kontrolleri v.b. ) tanımlanmış olarak gelmekte
Form kontrolleri sunucu (Java) veya istemci (JavaScript) tarafında kullanılabilmekte
Birden fazla dili destekleyen uygulamalarda kullanıcı arayüzünde gösterilen mesaj ve etiketlerin yönetimi properties dosyalarından yapılmakta (id8n)
UTF - 8 kodlamasına (Internalization) destek verilmektedir
3. Tomcat ve Struts Kurulumu

Struts kurulumunu Tomcat sunucusu üzerinde yapacağız. Bunun için sistemimizde Tomcat sunucusunu kurup çalışır hale getirmemiz gerekir. Tomcat sunucusunu ve Struts paketini http://jakarta.apache.org (http://jakarta.apache.org/) adresinden indirebilirsiniz.
Genel olarak web uygulamalarımızı Tomcat kurulum dizini altındaki webapps klasöründe oluştururuz. Yine bu dizin altında struts_ornek_1 adında yeni bir dizin oluşturalım. Yapacağımız ilk struts uygulamasını struts_ornek_1 klasörü altında oluşturacağız (bkz Şekil-3)

Şekil 3 - Örnek web uygulaması dizin yapısı
Struts paketi içinde lib dizini altındaki jar uzantılı dosyaları struts_ornek_1\WEB-INF\lib dizini altına kopyalayalım. Bu dizin struts_ornek_1 uygulaması tarafından kullanılacak paketleri içerir. (bkz Şekil-4)
Yine Struts paketi içindeki lib dizininde bulunan tld ve xml uzantılı dosyaları struts_ornek_1\WEB-INF dizini altına koplayalım (bkz Şekil-4). tld uzantılı dosyalar Özel Etiketlerin (Costum Tag) tanımlamalarını içerir. Kopyaladığımız tld dosyaları jsp sayfalarında kullanacağımız Struts Özel Etiketlerinin tanımlamalarını içerir.

Şekil 4 - Gerekli paketler ve dosyalar
Validator-rules.xml dosyasında genel olarak kullanılan form kontrollerinin JavaScript tanımlamaları bulunmaktadır.
Gerekli dosyaları kopyaladıktan sonra web.xml ve struts-config.xml konfigurasyon dosyalarını WEB-INF dizini altında oluşturalım. web.xml dosyası uygulamaya ait Tomcat ayarlarınıhttp://www.forumuz.net/images/digersmileyler/virgul.gif struts-config.xml ise Struts ayarlarını içerecektir.
4. web.xml Dosyasının Oluşturulması

<?xml version = '1.0' encoding = 'windows-1254'?><!DOCTYPE web-app PUBLIC "-//Sun Microsystemshttp://www.forumuz.net/images/digersmileyler/virgul.gif Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"><web-app> <description>Empty web.xml file for Web Application</description> <servlet>1. <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param>2. <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>2</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>2</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping>3. <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <servlet-mapping>4. <servlet-name>invoker</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> <welcome-file>index.html</welcome-file> </welcome-file-list>5. <taglib> <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri> <taglib-********>/WEB-INF/struts-bean.tld</taglib-********> </taglib> <taglib> <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri> <taglib-********>/WEB-INF/struts-html.tld</taglib-********> </taglib> <taglib> <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri> <taglib-********>/WEB-INF/struts-logic.tld</taglib-********> </taglib></web-app>
1. bölümde uygulamada hangi Servlet sınıfının sistem tarafından kullanılacağı belirtiliyor. Tanımlanan Servlet sınıfı Yönetici Servlet (Controller Servlet) olarak kullanılacaktır. web.xml dosyası tanımlanmamış normal bir web uygulaması için Tomcat_Kurulum_Dizini\conf\web.xml dosyası içindeki Servlet tanımları kullanılır.
2. bölümde Servlet sınıfı için gerekli olan konfigurasyon dosyası tanımlanıyor. Yönetici Servlet oluşturulurken bu dosya içindeki bilgiler de yüklenmektedir.
3. ve 4. bölümlerde *.do ve /servlet/* uzantılı URL lerden gelen isteklerin 1. bölümde tanımlanan Servlet sınıfına yönlendirilmesini sağlayan tanımlar yapılmaktadır.
5. bölümde ise uygulama içinde kullanılacak özel etiketlerin tanımları için kısa yollar tanımlanmaktadır.
Aslında Struts sisteminin kurulumu için yapılması gerekenler bu kadar diyebiliriz. Bundan sonraki aşamalarda artık projeye yönelik yapılması gerekenler olacak. Bu aşamalar:
struts-config.xml dosyasının oluşturulması
Action ve ActionForm sınıflarının oluşturulması
JSP sayfalarının yazılması
Oluşturulan sınıflar ve JSP sayfaları arasındaki ilişkilerin struts-config.xml dosyasında tanımlanması

alıntıdırhttp://www.forumuz.net/images/digersmileyler/nokta.gif.