m i.c o
HACETTEPE ÜNİVERSİTESİ
BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
dil
BİL447 - YAZILIM MÜHENDİSLİĞİ LABORATUVARI ARAŞTIRMA ÖDEVİ
va
(STRUTS)
ww w. ja
Nilay KINDAN 20022054
[email protected]
OCAK, 2005
Ocak 2005, Hacettepe Üniversitesi Bilgisayar Mühendisliği
Sayfa 1 / 18
m
GENEL.......................................................................................................................................................................... 3 ACTION SINIFI ........................................................................................................................................................... 3
i.c o
ACTIONFORM SINIFI ............................................................................................................................................. 4 HTML FORMLARI .................................................................................................................................................... 4 GİRDİLERİ ELE ALMA............................................................................................................................................ 5 METİN GİRDİSİ(TEXT INPUT) ..................................................................................................................................... 5 AÇILIR KUTU GİRDİSİ(DROP-DOWN COMBO BOX INPUT) ......................................................................................... 5 RADYO DÜĞMESİ GİRDİSİ .......................................................................................................................................... 7 ONAY KUTUSU GİRDİSİ .............................................................................................................................................. 7 ÇIKTILARI ELE ALMA............................................................................................................................................ 8
dil
METİN ÇIKTISI(TEXT OUTPUT) .................................................................................................................................. 8 STRUTS’ TA TABLO YARATMA ................................................................................................................................... 8 ITERATE ETİKETİNİN ETKİ ALANINDA(SCOPE) İNDİSLİ NİTELİK KULLANMA.............................................................. 8 BİR TABLODA ONAY DÜĞMELERİ KULLANMA .......................................................................................................... 9 RADYO DÜĞMELERİ TABLOSU YARATMA ............................................................................................................... 10 HATA MESAJLARI.................................................................................................................................................. 11 HATA MESAJLARINDA SABİTLERİN KULLANIMI ...................................................................................................... 12 HATA MESAJLARI İÇİN SAYFA BAŞLIĞI VE SAYFA ALTLIĞI ..................................................................................... 13
va
ACTİONFORM GEÇERLEME(VALİDATE) VE RESETLEME(RESET) ...................................................... 15 STRUTS-CONFİG.XML NEDİR?......................................................................................................................... 16 GENEL YÖNLENİCİLER(GLOBAL FORWARDS) .......................................................................................................... 16 ÇEKİRDEK BİLDİRİMLERİ ......................................................................................................................................... 16 ACTİON EŞLEMLERİ(ACTİON MAPPİNGS)................................................................................................................. 16
ww w. ja
KAYNAKÇA:............................................................................................................................................................. 18
Ocak 2005, Hacettepe Üniversitesi Bilgisayar Mühendisliği
Sayfa 2 / 18
m i.c o
GENEL
ww w. ja
ACTION SINIFI
va
dil
Struts model, görünüm(view) ve denetçi(controller) MVC tasarım örüntüsüne dayalı sunucu taraflı bir java uygulamasıdır. Web uygulamalarının sunum katmanını kolayca ayırabilmek, aynı zamanda birim işlem ve veri katmanından soyutlamak için tasarlanmış açık kodlu bir framework’tür. Model: Model veri nesnelerinin kullanıcıya sunumundan sorumludur Görünüm: Modelin ekrana sunumunda görev alır. Veri nesnelerinin o anki durumlarını sunar. Denetçi: Kullanıcı girdileri ile etkileşecek kullanıcı arayüzlerinin yollarını tanımlar. Denetçi bileşeni model veya veriyi işleyen bir nesnedir. Struts MVC nin JSP, JSP etiketleri(tags) ve java servletlerinden oluşan kombinasyonun gerçekleştirimidir.Struts daki her görünüm bileşeni struts etiketlerinin kombinasyonlarını barındıran bir JSP ile eşleşir. Denetçi ve Action sınıflarını etkileşimleri şu şekildedir: - İstem geliyor. - Denetçi(ActionServlet) istemi ele alıyor ve hangi action olduğuna karar veriyor. - Action modelle ilgili işlemleri yapıyor. - Action çalşmasını bitirince, kontrol denetçiye dönüyor ve bir anahtar sağlıyor.Denetçi anahtara bakarak nereye sapması gerektiğine karar veriyor. - Denetçi istemi dönen anahtarın bağlı olduğu görünüme yönlendiriyor, görünüm de sonuçları action’a gösteriyor.
Action sınıfının birkaç görevi var: -
Görüntülenecek JSP için veriyle birlikte istem(request)/oturum başlatmak Veri ile ActionForm sınıf çekirdeğini(bean) kurmak ActionForm sınıf çekirdeğindeki kullanıcıdan dönen veriyi geçerlemek(validate) ve veri tabanında saklamak Bu son madde için Action sınıfındaki name alanına karşılık gelen struts-config.xml de name/yol çifti(yerel ve genel yönleniciler) kurulur.
JSP sayfasına veri aktarmak için mutlaka bir ActionForm sınıfına ihtiyaç vardır, yani bir JSP sayfasından baksa bir JSP sayfasına direkt bir geçiş söz konusu değildir. JSP’lere direkt erişim tehlikelidir, mutlaka denetçi üzerinden geçiş yapmaları gerekiyor. Aksi takdirde denetçinin sağlayacağı erişim kontrolü atlanmış olur.
Ocak 2005, Hacettepe Üniversitesi Bilgisayar Mühendisliği
Sayfa 3 / 18
m i.c o
ACTIONFORM SINIFI
HTML FORMLARI
dil
ActionForm sınıfı bir yastık alanı gibi düşünülebilir.Kullanıcı yanlış veri girerse, bunun hemen veri tabanına gitmesi engellenmiş oluyor. Kullanıcının girdiği eski verilerd bir yanlişlık varsa, kullanıcı nerede hata yaptığını görebiliyor ve bunu düzeltebiliyor. ActionForm sınıfındaki bütün alanlara ilk değerler atayabilirsiniz. Struts bu ilk değerleri gösterir ve kullanıcının bunları değiştirmesine olanak verir. Kullanıcı formu onaylar, siz geçerlersiniz, hataları saptarsınız, struts’a bulduğunuz hataların listesini verirsiniz ve bunları ele almasını söylersiniz. Struts kullanıcıya formun üst kısmındaki hata listesiyle birlikte formu tekrar görüntüler. Böylece kullanıcı hatalarını görür, düzeltir ve formu yeniden onaylar.
Struts’daki html etiketleri(tag) genellikle sadece html:form etiketi bağlamı içinde çalışır. Örneğin:
va
TanımDüzenle.do bu jsp için bir action sınıfıdır. scope verinin bulunacağı ve geçerli olacağı faaliyet alanıdır. Bu form sunucuya html:submit etiketi kullanılarak onaya gönderilir. Aşağıda bunun örneği yer almakta:
ww w. ja
Yukarıdaki satır; onayDüğmesi dizgisini form çekirdeğinin property niteliğini niteliğinin değerini “Düzenle” olarak atar ve formu onaylar.
ve value
Bu action sınıfınızda ne yapacağınızı şekillendiren bir anahtardır. Eğer bu alan bos olsaydı, action sınıfınızı başka bir sayfadan alırdınız ve ilk değerlerini atardınız. Alan boş değilse bunu kullanıcının “Düzenle” düğmesine basmasıyla alırsınız. value hem düğmeyi etiketlendirmek için hem de property ile gösterilen alanın değerini atamak için kullanılır.
Form onaylandığı zaman ekleme, düzenleme veya kaydetme işlemlerinden hangisini yaptığınızı “iş” alanını kontrol ederek karar verebilirsiniz.
Ocak 2005, Hacettepe Üniversitesi Bilgisayar Mühendisliği
Sayfa 4 / 18
m
GİRDİLERİ ELE ALMA
Metin Girdisi(Text Input)
i.c o
Struts’ta girdiler çoğunlukla html:form etiketi bağlamı içinde ortaya çıkar. Html etiketleri sadece htlm:form etiketi bağlamında çalışır.
JSP’ye bir metin kutusu değeri girmek için şu struts etiketini kullanabilirsiniz.
dil
Bunu çalıştırmak için ActionForm çekirdeği “kullanıcıAdı” olarak adlandırılan özel(private) ve korunmuş(protected) dizgi değerleri içn “setKullanıcıAdı” adlı atama(setter) ve “getKullanıcıAdı” adlı değer döndürme(getter) metodlarını içermelidir. Struts java çekirdeğindeki property i getirerek JSP de görüntülemeyi ve onaya gönderildiğinde JSP den alınan değerle java çekirdeğindeki property i doldurmayı sağlar.
Açılır Kutu Girdisi(Drop-Down Combo Box Input)
va
Açılır kutular kullanıcının birden çok eleman arasından birini seçmesi için kullanılır. Struts’ta bu select, option ve options etiketleri kullanılarak gerçekleştirilir. Kullanıcı açılır kutuda bir madde seçerken, struts form çekirdeğinde seçilen değeri bir değişkenle ilşikilendirir. Bu değişkenin ilk değeri seçim öncesi görünen değeri gösterir.
ww w. ja
Seçimi select etiketinin value niteliğini kullanarak hard coding(programda verinin kodun içinde olduğu dolayısıyla değiştirilmesinin zor olduğu şekli) de mümkündür. Bu sadece seçim öncesi bir değeri istediğimiz zaman yararlıdır. Örneğin ülke adlarının alfabetik sıralandığı bir listede her zaman “Türkiye” nin görünmesi gibi. Bunu yapmanın anlamı kullanıcı bu ekrana geldiğinde “Türkiye” nin öncelikli değer olması ve kullanıcı seçiminin bir işe yaramamasıdır. Bu kötü bir fikirdir. Select aşağıdakilerle kullanılabilir: - dizgi kümesi(collection of strings), dizi listesi(arraylist) - her biri dizgi alanları içeren çekirdek kümesi - kod içine gömülü(hard coded) değerler - yukarıdakilerin kombinasyonu Dizgilerin dizi listesi ile:
Dizi listesinin adı “isimListesi” olsun. Bu liste istem veya oturumdan birinin içine koyulacak. Kullanıcının seçimiyle atamak için kullanılan form çekirdeğindeki alanın adı “seçilenDeğer”. Formda bu değer seçim öncesi değer olarak atanır.
Ocak 2005, Hacettepe Üniversitesi Bilgisayar Mühendisliği
Sayfa 5 / 18
Select şu sekilde değiştirilir:
i.c o
Dizgi dizi listesi ile seçilen value nasıl ilişkilendirilir:
m
burada “birİsim” dizi listesindeki isimlerden biridir. Çekirdek dizi listesi ile:
-
görüntülenenDeğer kimlikDeğeri
dil
Çekirdeklerin dizgi alanları şunlarla ilgilidir:
va
Dizi listesinin adı “çekirdekListesi” olsun. Bu liste istem veya oturum dan birinin içine koyulur. Kullanıcının seçiminin atanacağı form çekirdeğindeki alanın adı “seçilenDeğer” dir. Bu seçilen çekirdeğin “kimlikDeğeri” ne atanacaktır. Bu değer aynı zamanda formdaki seçim öncesi değere atanır. Kullanıcı “görüntülenenDeğer” in içeriğini listedeki bir eleman olarak görecektir.
ww w. ja
Çekirdeklerin dizi listesi ile seçilenDeğer nasıl ilişkilendirilir: Select şu şekilde değiştirilir:
“birÖzellik” options etiketinde collection niteliği tarafından belirlenen listedeki çekirdeğin alanlarındaki dizgilerden biridir. İlişkilendirilmiş Dizgiler
Kullanıcının seçimi olan seçilen değer form çekirdeğindeki alanın adına atanır. Bu değer formda seçim öncesi değere atanmalıdır.
Ocak 2005, Hacettepe Üniversitesi Bilgisayar Mühendisliği
Sayfa 6 / 18
m
i.c o
İlişkilendirilmiş dizgilerle “SeçilenDeğer”in İlişkilendirilmesi Select şu şekilde değiştirilir:
Radyo Düğmesi Girdisi
dil
va
Radyo düğmesi girdisi için kullanıcıya birbirini dışlayan birkaç seçenek sunulur ve sadece bir tanesini seçmesine izin verilir. Bir örnek:
Form çekirdeğindeki “isim” alanının değerini yazmak içindir. filter niteliği html’de problem yaratacakkarakterleri otomatik kodlamaya izin verir.Hiç bşr değişiklik yapılmadığı takdirde(default) değeri 0 (false)’tır.
dil
Struts’ ta Tablo Yaratma
Struts’ta iterate etiketi tablo yaratmak için kullanılır. Aşağıda basit bir örnek var.
ww w. ja
va
| | | |
bean:write etiketinin name niteliği property’i form çekirdeğinde aramak yerine iterate etiketi tarafından yaratılan çekirdeği kullanmak için kullanılıyor. scope değeri verilmemişse etiket çekirdeği sırayla sayfa(page), istem(request), oturum(session) veya uygulama(application) etki alanlarında arıyor. Type değeri formun fiziksel yolunu verirken; name formun mantıksal ismini veriyor.
Iterate Etiketinin Etki alanında(scope) İndisli Nitelik Kullanma Iterate kullanırken bir tabloya giriş yapmaya imkan verilmesi için html etiketlerinin indisli niteliklerini kullanmalısınız.Bunun birkaç örneği aşağıda ele alınmış. Bu niteliği ele alırken dikkat edilmesi gereken bir nokta da verinin struts’ta sadece form çekirdeğine girilebilmesidir.
Ocak 2005, Hacettepe Üniversitesi Bilgisayar Mühendisliği
Sayfa 8 / 18
m
Bu demek oluyor ki çalışacak indisli niteliği almak için listenizi form çekirdeğinde saklamalısınız.
i.c o
İndisli nitelik 1.02. sürümden sonra ortaya çıkmıştır.
Bir Tabloda Onay Düğmeleri Kullanma
Bir tablonun elemanları düzenlenmek veya silinmek üzere sunulduğu zaman, tablodaki her satıra karşılık bir ya da iki onay düğmesinin olmasını isteyebilirsiniz. Aşağıda bunun örneği var.
ww w. ja
va
dil
| | | | | |
Bu “komut” dizgi dizisinin property niteliğine düğmeye basıldığı zaman “Düzenle” atanıyordu, örneğin komut[3]==”Düzenle”. Struts reflection kullanır, reflection da atama ve değer döndürme metodlarına bağlı olarak türü belirler. Bu örnekte form çekirdeğinin ilgili bölümleri şu şekildedir: private int secilenDeger = 0; private String komut = “”;
public void setKomut (int index, String deger) { secilenDeger = indis; komut = deger; }
Ocak 2005, Hacettepe Üniversitesi Bilgisayar Mühendisliği
Sayfa 9 / 18
m i.c o
public String getKomut (int indis) { return komut; }
dil
public String getKomut() { return komut; } public int getIndis() { return secilenDeger; } Action’da hangi düğmeye basıldığını “komut” u kontrol ederek ve hangi eleman olduğunu indisi kontrol ederek görebilirsiniz. Formda oturum veya isteme geçirdiğiniz listeyi alıp getirmeniz gerekebilir, bu durumda indisi kullanarak seçilen elemanı alabilirsiniz.
va
Radyo Düğmeleri Tablosu Yaratma
Bazı durumlarda aşağıdaki tablo benzeri tablolar yaratılmak istenebilir. geçti * 0
Kaldı 0 0
ww w. ja
durum muaf 0 *
Form elemanı Genel ders durumu Akademik ders durumu
select/ options etiketlerinin tersine radyo düğmesi etiketi tektir. select te struts’a sonucu nereye koyacağınızı, options’ta ise listeyi nereden alacağınızı söylemeniz gerekir. Radyo düğmesinin etiketini tekliğinden dolayı liste; sonuçların saklandığı yerle aynı yerden gelir(struts’ta sonuçlar sadece form çekirdeğinde saklanır). Aşağıda bunun nasıl yapılacağının örneği var. Bu örnekte çekirdek dizi listesi veri yapısı var. Öyle ki her çekirdek kapı adı ve durum propery sine sahip. Eğer radyo düğme etiketinde belirlenen değer ile çekirdeğin durum özelliği eşleşirse, bu radyo düğmesi tablo görüntülenirken kontrol edilir. Kullanıcı formu onayladıktan sonra, dizi listesi getirilip her bir çekirdeğin durum alanının o anki değeri alınır. Dikkat edilmesi gereken nokta; iterate etiketindeki id için kullandığınız değer ile form çekirdeğindeki property değerinin örtüşmesidir. Bu sadece yerel değişken yaratmak için değil, sonuçların nereye gideceğini de belirlemek için kullanılıyor. Bu anlatılanlar id nin her şeyin yolunda gitmesi için gereken iki görevidir.
Ocak 2005, Hacettepe Üniversitesi Bilgisayar Mühendisliği
Sayfa 10 / 18
m
HATA MESAJLARI
i.c o
Struts etiketlerin hata mesajlarını göstermelerine olanak verir:. Bu struts etiketi jsp içinde html’nin üretildiği noktada hata mesaj listesinin eklenmesine yol açar. Bu etiket da görüldüğü gibi bir property niteliğine sahiptir ve bu etiket sadece “anahtar” ile eşleşen hata mesajlarının görüntülenmesini sağlar. Action sınıfınızda, bir hata yakaladığınız zaman şu sekilde devam edilir:
dil
ActionErrors hatalar = new ActionErrors( ); errors.add(parametre1,new ActionError(parametreler)); saveErrors(istem , hatalar); return (new ActionForward( eşlem.getInput()));
va
Burada “istem”(request) HttpServletRequest türündedir. “eşlem” ise ActionMapping türündedir. Hata mesajı listesi ActionErrors hatalar=new ActionErrors ile yaratılır ve tekil bir ActionError da “ add” metodu ile hatalara eklenir. “add” metodu iki parametre alır. Bunlar html:error etiketinde kullanılacak bir anahtar ve hata mesajını kapsülleyen(encapsulate) ActionError’ dır. Yine iki parametre alan aşırı yüklenmiş add metodunda hatalar.add( String özellik, ActionError hata) özellik(property) hatanın kategorisini tanımlamak için kullanılır.
ww w. ja
ActionError nesnesinin yapıcı metodu(constructor) birden beşe kadar parametre alabilir.Birinci parametre “UygulamaKaynakları.properties” kütüğüne anahtardır. Bu kütük hata mesajlarının oluşturduğu metni içerir. Kalan parametreler seçmelidir, hata mesajlarındaki yer-tutucular(placeholders) ‘ın yerine geçen değerlerdir. Parametreler ve mesaj dizgilerinin nasıl yaratıldığı hakkında daha kapsamlı bilgi için “java.text.MesageFormat” kütüphane dökümanları incelenmelidir. Basit bir örnek: UygulamaKaynakları.properties kütüğünde: VTHata = Hata: {1}çalışılırken {0} Jsp kütüğünde:
Action sınıf kütüğünde: hatalar.add(“öğrenciListeDBError”, new ActionError(“VTHata”, ”alan bulunamadı” , "öğrenci listesi almaya ")); JSP de görüntülenen Hata Mesajı:
Ocak 2005, Hacettepe Üniversitesi Bilgisayar Mühendisliği
Sayfa 11 / 18
i.c o
Hata Mesajlarında Sabitlerin Kullanımı
m
Hata: öğrenci listesi almaya çalışılırken alan bulanamadı
Derleme zamanında dizgiler hata almazlar. Derleyicinin potansiyel çalışma zamanı hatalarını bulmasına yardımcı olmak için mümkün olduğunca sabit kullanmak bir standart haline gelmiştir. Hata mesajları için iki yerde sabit kullanımı uygundur. Birincisi “UygulamaKaynakları.properties” kütüğündeki mesaj anahtarlarını “Sabitler” kütüğü içine yerleştirmektir. Hata mesaj anahtarlarının bütün referansları “UygulamaKaynakları.properties” kütüğündeki hata mesajları ile birebir eşleşir.
Sabitlerle ilgili Örnek:
dil
İkincisi ActionError sınıfına konan tekil ActionError nesnelerini kimliklendiren anahtarlar için action alt sınıflarında yerel sabitler yaratmaktır. html:errors etiketinin property niteliği ile eşleşen anahtar yine listede dönen bir elemanla eşleşecektir.
va
com.öğrenci.Sabitler.java kütüğünde: public static final String VT_HATA= "VTHata"; UygulamaKaynakları.properties kütüğünde: VTHata=Hata: {0} çalışılırken {1}
ww w. ja
JSP kütüğünde:
Action sınıf kütüğünde: public final String OGRENCI= “Öğrenci”; public final String OGRENCI_VT_HATA = Constants.VT_HATA + "." + OGRENCI; hatalar.add(OGRENCI_VT_HATA, new ActionError (Constants.VT_HATA, ”öğrenci listesi almaya” , "alan bulunamadı")); Hata Mesajı Hata: öğrenci listesi almaya çalışılırken alan bulanamadı
JSP Kütüğü içinde Sabitlerin Kullanımı ile İlgili Basit Örnek Sabitler kütüğünde:
Ocak 2005, Hacettepe Üniversitesi Bilgisayar Mühendisliği
Sayfa 12 / 18
m
public static final String VT_HATA = "VTHata";
i.c o
UygulamaKaynakları.properties kütüğünde: VTHata=Hata: {0} çalışılırken{1}
JSP kütüğünde: <%@ page import="com.öğrenci.controller.org.ÖğrenciEkleAction" %>
dil
Action sınıf kütüğünde: public final String OGRENCI = “öğrenci”; public final String OGRENCI_HATA = Sabitler.VT_HATA+ "." + OGRENCI; errors.add(PARENT_ORGS_DB_ERROR, new ActionError (Sabitler.VT_HATA, ”öğrenci listesi almaya” , "alan bulunamadı"));
Yorumlar:
va
Hata Mesajı Hata: öğrenci listesi almaya çalışılırken alan bulanamadı
ww w. ja
1. Sabitlerde hata mesaj parametreleri belirlenebilmesine rağman aslında buna gerek yok.Çoğu zaman parametre dizgisi kural dışı durum(exception) metninden geliyor çünkü.
2. Bir hata mesajı ile bir alanı birleştirmek mümkündür. Bunu yapabilmek için her alan kümesi kendi dene/yakala(try/catch) bloğunda kapsüllenebilir, böylece her hata mesajının yeri belli olur. html:errors etiketi parametresiz kullanıldığı zaman hata mesajı listesinden sonra sayfayı ortadan bölen bir çizginin görünmesine neden oluyor.
Hata Mesajları için Sayfa Başlığı ve Sayfa Altlığı UygulamaKaynakları.properties kütüğünde sadece hata mesajları saklanmıyor, bunu yanında hata sayfa başlığı ve altlığı da burada saklanıyor. Bir örnek: hatalar.header=
Bu sayfa için Hatalar hatalar.footer=
Bu şu şekilde görünür: -----------------------------------------------------------------------
Ocak 2005, Hacettepe Üniversitesi Bilgisayar Mühendisliği
Sayfa 13 / 18
m
i.c o
Bu sayfa için Hatalar .Hata: Bu bir hatadır .Hata: Bu başka bir hatadır. ----------------------------------------------------------------------JSP sayfasının geri kalanı
ww w. ja
va
dil
Eğer hataların tekil alanlardan sonra görüntülenmesini istiyorsanız sayfa başlığında ve altlığında herhangi bir atama yapılmadığından emin olmalısınız.
Ocak 2005, Hacettepe Üniversitesi Bilgisayar Mühendisliği
Sayfa 14 / 18
m
ActionForm Geçerleme(Validate) ve Resetleme(Reset)
i.c o
ActionForm tabanlı java çekirdeğinde validate metodu şu şekildedir:
public ActionErrors validate(ActionMapping eşlem, HttpServletRequest istem)
Bu; kullanıcının girdilerini geçerlemek için çağrılır. Java çekirdeği ayrıca aşağıda görüldüğü gibi bir reset metodu da belirleyebilir. public void reset(ActionMapping eşlem, HttpServletRequest istem)
Bu metod java çekirdeğindeki değerleri onların ilk hallerine dönüştürür.
2.
Uygun geçerlemeleri yap ve hiçbir problem bulma. boş değer(null) veya sıfır büyüklükte ActionError döndür ve denetçi servlet e uygun action sınıfının perfom metodunu çağır. Uygun geçerlemeleri yap ve problem bul. Bir ActionErrors kopyası döndür. Öyleki bu sınıflar görüntülenecek hata mesaj anahtarları içersin. Denetçi servlet etiketinin kullanacağı uygun bir istem niteliği alarak bu diziyi saklar ve bunu giriş formuna kadar yollar (Bu form ActionMapping için girdiformu property değeri ile kimliklendirilmiştir ve bununla ayırt edilebilmektedir) .
va
1.
dil
validate metodu denetçi servlet tarafından java çekirdeği özellikleri yaygınlaştırıldıktan(deploy) sonra çağrılır. validate karşılık gelen action sınıfının perform metodu çağrılmadan hemen önce çağrılır. validate metodu şu seçeneklere sahiptir:
ww w. ja
validate metodunun normal gerçekleştirimi boş değer döndürür ve denetçi sevlet gerekli geçerlemenin action sınıfı tarafından yapıldığını farzeder. Bu normal şartlarda olur fakat çoğu geçerleme iş mantığına aykırı bir geçerleme işlemi gerçekleştirir ve ActionForm çekirdeği kendisine bileşik bir işmantığı içermez. Not: Reset onay kutusu kullanıyorsanız form çekirdeğinde kullanılmaz.
İş mantığınız ,JSP niz ve tümleşik olan java çekirdeğine ek olarak; veri tabanına veri saklayan ve veri getiren diğer sınıflarada sahip olmanız gerekir .
Ocak 2005, Hacettepe Üniversitesi Bilgisayar Mühendisliği
Sayfa 15 / 18
m
Struts-config.xml NEDİR?
i.c o
Struts-config.xml de 3 tür bilgi bulunur:
Genel Yönleniciler(Global Forwards)
bir örnek:
dil
Bu name’ i kullanarak kendi jsp’nizden diğer sayfa bağlantılarına gitmenizi sağlar. Eğer dizin yolu değişirse siz de JSP nizde herhangi bir değişiklik yapmaya gerek kalmadan sadece struts-config.xml kütüğünde değişiklik yaparak halledebilirsiniz .Bunu yapmak için şu formu kullanbilirsiniz:
Bir örnek:
va
görüntülenecek bağlantı adı
Kullanıcı eklemek için tıkla
ww w. ja
Çekirdek Bildirimleri
Bir örnek:
Kullanıcının girdilerini kabul edecek her JSP sayfanız için bunlardan bir tane olmalıdır.
Action Eşlemleri(Action Mappings)
Bunu iki çeşidi vardır. Biri girdi kabul edecek JSP ve girdi kabul etmeyecek JSP. Girdi kabul etmeyecek JSP ler için tümleşik bir ActionForm düşünülemez.
Ocak 2005, Hacettepe Üniversitesi Bilgisayar Mühendisliği
Sayfa 16 / 18
m
scope="request" input="tümleşik JSP nin yolu" rel="nofollow">
i.c o
Bunun bir örneği:
va
dil
path niteliği bu sayfanın yolunu veriyor. type niteliği bu action için action sınıfına yolunu verir. input niteliği JSP ye bu action için yolunu verir. forward niteliği action sınıfında kullanılacak “name” leri veriyor. Örneğin action sınıfınızda kullanıcının girdisine bağlı olarak farklı sayfalara gidebilirsiniz. Bunu yukarıdaki tanımlı name’leri kullanarak yapabilirsiniz. Gitmek istediğiniz sayfa başına bir name tanımlamak yeterlidir. Bu size hedef sayfa değiştşiğinde struts-config.xml’i düzenlemeye olanak verir. Eğer kullanıcı girdisi yoksa kendi “başarılı” sayfamıza geri döneriz. Action sınıfınızda bu name’ e aşağıdaki gibi ulaşırsınız: return mapping.findForward("başarılı");
Girdi kabul eden JSP ActionMapping formu:
ww w. ja
Bunun bir örneği:
Daha önce form çekirdeklerinde belirtilmesi gereken “KullanıcıEkleFormu” nu name niteliği belirler. Struts’ ta uygulamanızın her modülü için bir ActionForm çekirdeği kullanmanız tavsiye edilir.
Ocak 2005, Hacettepe Üniversitesi Bilgisayar Mühendisliği
Sayfa 17 / 18
m
Kaynakça:
ww w. ja
va
dil
http://www.athensgroup.com Mastering Jakarta Struts, Wiley publishing
i.c o
Not: Bütün örnekler mantıksal olarak düşünüldüğünden okunurluğunun kolay olması açısından Türkçe karakterler kullanılmıştır.
Ocak 2005, Hacettepe Üniversitesi Bilgisayar Mühendisliği
Sayfa 18 / 18