Struts 20 Nis 2008 23:58
Struts Nedir?
Struts; MVC (model-view-controller) tasarım kalıbını temel alan, Java tabanlı web uygulamaları geliştirmek için kullanılan bir sınıf kütüphanesidir (framework). Tanımdan da anlaşıldığı üzere Struts’ın yoğunlaştığı kısım yazılım geliştirme sürecinin daha organize bir şekilde olmasıdır.
Struts, MVC (Model-View-Controller) tasarım modelini örnek alır. Yüksek performanslı, iş-odaklı web uygulamalarının geliştirilmesinde karşılaşılan problemleri “Java servlet” ve “JavaServer Pages” kullanarak çözmede büyük kolaylık sağlar.
Struts’ın başardığı en önemli şey web programcısının düşünme mantığının geliştirilmesi noktasında olmuştur. Nasıl ki fonksiyonel programlamadan nesne tabanlı programlamaya geçişin en önemli amaçlarından birisi daha büyük yazılımları daha kolay yönetebilmekse, web uygulamalarında Struts kullanmanın avantajı da MVC yapısı sayesinde parçaları çok kolay çıkarıp takabilmek olarak özetlenebilir.
Eğer başarabilirsem, JSF gibi yeni teknolojiler karşısında popülerliğini biraz kaybetmiş olsa da Türkiye’de ve dünyada halen yaygın bir şekilde kullanılan Struts’ı örnek uygulamalarla pekiştirerek anlatmaya çalışacağım. Google’da yaptığım basit bir arama sonucunda ne yazık ki bir çok konuda olduğu gibi bu konuda da çok fazla Türkçe kaynak olmadığını gördüm. O yüzden bu kaynağın “az laf çok iş” yapması ve size yararlı olmasını diliyorum.
Struts’ın en önemli özelliklerinden birisi de açık kaynak kodlu olmasıdır. Bunun anlamı herhangi birisi Struts’ın kaynak kodlarını indirip, üzerinde dilediği gibi değişiklikler yapabilir.
Struts şu anda gelişimine iki farklı dalda devam ediyor: Sürüm 1.x ve Sürüm 2.x şeklinde. Struts2 daha çok Struts ve WebWork’ün harmanlanmış bir sürümü olduğu için o konuya şimdilik değinmeyeceğim. Belki ilerleyen yazılarda Struts2 ile ilgili örnek uygulamalar da olabilir. Ama şimdilik hedefim Struts1. Bu serinin ilk bölümlerinde şu anki en kararlı Struts sürümü olan 1.3.8 temel alınacak. Struts’la uygulama geliştirmek için gerekli tüm uygulamaların kurulumunu da örneklerle adım adım anlatmaya çalışacağım. Dilerseniz önce Struts’ın ne olduğunu daha net anlamamızı sağlayan MVC yapısına bir bakalım.
MVC
MVC; model, view (görünüm) ve controller (denetleyici) kelimelerinin baş harflerininin birleştirilmesiyle oluşturulmuştur. MVC yapısını anlamak Struts için gerekli teorik altyapıyı yerine getirmiş olmakla eşdeğerdir. MVC, temellerini bir süredir Smalltalk dünyasında kullanılan bir grafiksel kullanıcı arayüzü tasarım kalıbı (GUI design pattern) üzerine kurar.
Model Bileşenleri: MVC mimarisinde, model bileşenleri veriye ve uygulama tarafından kullanılan servislere bir arayüz sağlama görevini üstlenir. Bu yüzden denetleyici bileşenleri uygulama verisini değiştirme gibi işlerle ilgilenmez; bunun yerine veri erişimini ve manipülasyonunu sağlayan model bileşenleriyle iletişim kurarlar. Özetle model bileşenleri iş mantığı (business logic) kısmının kodlandığı kısımdır. Model bileşenleri basit “Java bean”leri, Enterprise Java Bean’ler (EJB) veya Web servisleri olabilir.
Görünüm (View) Bileşenleri: Bu bileşenlerin temel işlevi tarayıcıya (browser) uygun yanıtları üretmektir. Yani kullanıcının gördüğü, görünüm bileşenlerinin ürettiğidir. Görünüm bileşenleri genellikle JSPler veya HTML sayfaları olabilir. İstenirse WML, Velocity, FreeMarker, XML with XSTL veya başka bir görünüm teknolojisini MVC’nin bu bileşenini oluşturmak için kullanabilirsiniz.
Denetleyici (Controller) Bileşenleri: MVC uygulamalarının çekirdeğinde denetleyici bileşenleri bulunmaktadır. Denetleyici, uygulama içindeki istekleri alan ve model ile görünüm bileşenleri arasındaki iletişimi yöneten basit bir “servlet”dir.
Tarihçe
Struts, ilk olarak Craig R. McClanahan tarafından yaratılıyor ve Mayıs 2000′de Apache Software Foundation’ın Jakarta Projesi’ne bağışlanıyor. Haziran 2001′de Struts 1.0 yayınlanıyor. Java topluluğundan olumlu not alan Struts geliştirilmeye devam ediliyor ve Java ile web uygulamaları geliştirmede yüksek oranda kabul görüyor. Haziran 2003′de Struts 1.1; Tiles, Validator, Declarative Exception Handling gibi yenilikler eklenerek yayınlanıyor. Aralık 2004′de küçük güncelleştirmeler içeren 1.2 çıkıyor. 2006 yılında çıkan 1.3 sürümü en yenilikçi sürüm oluyor. Bu sürümle birlikte COR (Chain of Responsibility) tabanlı istek işleme motoru kullanılıyor. Bu yazının yazıldığı sırada http://struts.apache.org/downloads.html adresinde en kararlı sürüm 1.3.8 idi.
Struts’ın Temel Bileşenleri
Struts, zengin Java kütüphanelerinden oluşmaktadır. Temel olarak şu başlıklara ayırabiliriz.
- Temel sınıf kütüphanesi (Base framework)
- JSP etiket kütüphaneleri (JSP tag libraries)
- Tiles eklentisi (Tiles plugin)
- Validator eklentisi (Validator plugin)
Temel sınıf kütüphanesi; MVC fonksiyonelliğini kullanarak uygulamanın temellerini oluşturur. Temel sınıf kütüphanesinin temelinde ActionServlet denetleyici “servlet”i bulunmaktadır. Temel sınıf kütüphanesinin geri kalan kısmı uygulamanızın miras alması gereken temel sınıflar (base classes) ve bazı yardımcı sınıflardan oluşmaktadır. En önemli temel sınıflar Action ve ActionForm sınıflarıdır. Bu iki sınıf hemen hemen her Struts uygulamasında kullanılır. Action sınıfları belirli istekleri karşılamak için ActionServlet tarafından kullanılır. ActionForm sınıflarıysa HTML formlarından veri almayı, işlenmesi bittikten sonra da bu verilerin görünüm bileşenleri kullanılarak geri gönderilmesini sağlar.
JSP etiket kütüphaneleri; HTML, Bean, Logic ve Nested kütüphanelerinden oluşur. JSPlerde veriye erişim ve kullanım kolaylığı sağlarlar. Bu etiket kütüphanelerine ileride tekrar döneceğiz.
Tiles ve Validator eklentileri de sırasıyla JSP sayfalarının görünümü ve bu sayfalardaki veri doğrulama işlemleriyle ilgilenirler.
Böylece Struts’la ilgili “geyik muhabbeti”nin ilk bölümünün sonuna gelmiş oluyoruz. Bir sonraki yazıda Struts kodları yazabilmek için gerekli program ve bileşenlerin adım adım kurulumunu göstereceğim. Bu konudaki üçüncü yazıyı da Struts1 ile ilgili kaynakların tanıtımına ayırmayı düşünüyorum. Daha sonraki bölümlerde örnek uygulamalar ve Struts’ın derinliklerine inmekle uğraşıyor olacağız…
Öneri ve görüşlerinizi bekliyorum…

21 Nis 2008 13:00 1.engin…
Hatta yazılımcı gözüyle daha iyi inceleyebileceğinizi düşündüm kolay gelsin
21 Nis 2008 13:16 2.Umut DOĞAN…
23 Nis 2008 11:10 3.eren…
kolay gelsin..
12 May 2008 21:35 4.eda…
14 Kas 2009 16:51 5.İbrahim…
(Dipnot yorum için mail zorunlu olması biraz saçma