Struts Framework Rzafer Wwwjavadilicom

  • Uploaded by: www.javadili.com
  • 0
  • 0
  • December 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Struts Framework Rzafer Wwwjavadilicom as PDF for free.

More details

  • Words: 6,027
  • Pages: 22
m i.c o

___________________________________________________________________________

HACETTEPE ÜN VERS TES

BÖLÜMÜ

dil

B LG SAYAR MÜHEND SL

B L447 - YAZILIM MÜHEND SL

LABORATUVARI

va

ARA TIRMA ÖDEV

ww w. ja

(Struts Framework)

Harun Re it Zafer 20022365

[email protected]

m

GR

BAS T B R JSP DOSYASININ ÇER TEK-SAYFA YAKLA IMININ DEZAVANTAJLARI HTML SAYFAMIZDA ÇOK DAHA AZ JAVA KODU

i.c o

B R JSP DOSYASI B R JAVA SERVLETT R

MODEL-V EW-CONTROLLER (MVC) TASARIM DESEN

STRUTS A G R

dil

GÖRÜNTÜ (V EW) CONTROLLER (DENETÇ ) MODEL UYGULAMADA MVC

3 3 3 5 6 7 7 9 11 11 12 12 12 12 12 13 13 13 15 15 15 15 15 16 16 17 17 18 19 20 20 20 20 21

KAYNAKÇA:

22

ww w. ja

va

STRUTS KURULUMU ACTION SINIFI ACTIONFORM SINIFI HTML FORMLARI G RD LER ELE ALMA MET N G RD S (TEXT INPUT) AÇILIR KUTU G RD S (DROP-DOWN COMBO BOX INPUT) RADYO DÜ MES G RD S ONAY KUTUSU G RD S ÇIKTILARI ELE ALMA MET N ÇIKTISI(TEXT OUTPUT) STRUTS TA TABLO YARATMA ITERATE ET KET N N ETK ALANINDA(SCOPE) ND SL N TEL K KULLANMA B R TABLODA ONAY DÜ MELER KULLANMA RADYO DÜ MELER TABLOSU YARATMA HATA MESAJLARI HATA MESAJLARINDA SAB TLER N KULLANIMI HATA MESAJLARI Ç N SAYFA BA LI I VE SAYFA ALTLI I ACT ONFORM GEÇERLEME(VAL DATE) VE RESETLEME(RESET) STRUTS-CONF G.XML NED R? GENEL YÖNLEN C LER(GLOBAL FORWARDS) ÇEK RDEK B LD R MLER ACT ON E LEMLER (ACT ON MAPP NGS)

m i.c o

GR

Günümüzde ortaokul çocuklar bile internete HTML sayfalar koyup yay nlayabiliyor. Oysa bu tür basitçe haz rlanm bir web sayfas ile profesyonelce geli tirilmi bir web sitesi aras nda inan lmaz derecede fark vard r. Sayfa tasar mc s (ya da HTML geli tiricisi) renk uyumu, ürün yelpazesi, mü teri al kanl klar , taray c uyumlulu u, sayfa genel görünümü, resim tasarlama, JavaScript ve daha birçok konudan anlamak zorundad r. Büyük ve gerçekten güzel görünümlü bir siteyi bir araya getirmek gerçekten uzun ve yorucu bir i tir ve ço u Java geli tiricisi iyi tasarlanm bir kullan c arayüzü geli tirmekten ziyade, iyi tasarlanm bir nesne arayüzü geli tirmekle ilgilenir. Java Sunucu Sayfalar (JavaServer Pages, JSP) i te bu noktada devreye girer ve bir sayfa tasar mc s ile bir Java geli tiricisi aras ndaki s k etkile imi sa lar.

dil

Geni yelpazeli bir web uygulamas üzerinde çal m olanlar de i tirmek teriminin ne anlama geldi ini bilirler. MVC yap lacak de i iklikleri kontrol etmeye yard mc olmak üzere bir araya getirilmi bir tasar m desenidir(örüntüsü). Struts ise J2EE tan mlar ndan Servlets 2.2 ve Jsp 1.1 i kullanan bir MVC uygulamas d r.

va

Bu yaz da öncelikle, a ina oldu umuz -büyük ihtimalle- elemanlar kullanan bir JSP sayfas (dosyas ) ele al nacak ve avantaj ve dezavantajlar tart lacakt r. Ard ndan Struts ve onun web projemizdeki de i iklikler konusunda bize nas l yard mc olaca aç klanacakt r. Sonunda JSP sayfas yeniden geli tirilecek ve tasar m mant de i tirilecek. B R JSP DOSYASI B R JAVA SERVLETT R

ww w. ja

Asl nda bir JSP sayfas bir servlet i görüntülemenin farkl bir yolundan ba ka bir ey de ildir. JSP kavram bize bir Java servlet i HTML sayfas olarak görebilmemizi sa lar. Bu görünüm normal olarak bir Java kodunda görülen, rahats z edici tüm print()ifadelerini ortadan kald r r. JSP dosyas önce ".java" uzant l bir dosyaya çevrilir ard ndan derlenerek ".class" uzant l bir Java s n f elde edilir. ekil 1 JSPServlet ak n gösteriyor.

ekil 1

Basit bir JSP dosyas n n içeri i

Küçük bir JSP uygulamas nda, genelde veri, i mant ve kullan c arayüzünün tek bir kod kesiminde bir araya getirildi i görülür. Ve de genelde uygulama, uygulaman n ak n belirleyecek olan mant (algoritmay ) içerir. Liste 1 ve ekil 2 kullan c lar n bir e-posta listesine (mailing list) kat lmalar n sa layan basit bir JSP dosyas n gösteriyor.

Liste 1. "join.jsp" basit bir talep-yan t JSP dosyas

// do we have an email address if( email!=null ) {

m

i.c o

<%@ page language="java" %> <%@ page import="business.util.Validation" %> <%@ page import="business.db.MailingList" %> <% String error = ""; String email = request.getParameter("email");

// validate input... if( business.util.Validation.isValidEmail(email) ) {

%>

dil

// store input... try { business.db.MailingList.AddEmail(email); } catch (Exception e) { error = "Error adding email address to system. } if( error.length()==0 ) {

" + e;

<%

va

// redirect to welcome page... <jsp:forward page="welcome.html"/>

ww w. ja

} } else { // set error message and redisplay page error = email + " is not a valid email address, please try again."; } } else { email = ""; } %> Join Mailing List <%=error%>

Enter your email to join the group

>


kontrol eder ve

i.c o

m

Basit bir istem-yan t durumunda, JSP dosyas veriyi haz rlar, bir sonraki sayfaya ak HTML kodunu olu turur.

ekil 2

Buradaki e-posta listesi JSP sayfas içeri i kendine ait, ak n tamam n Gerçekle tiren bir modül (parça). JSP dosyas n n içermedi i iki ey e-posta geçerlili ini denetleyen, isValidEmail() metodunun içerdi i kod kesimi ile e-posta adresini veritaban na ekleyen kod kesimidir yaln zca. Tek-sayfa yakla m n n avantaj anla lmas n n ve ba lang çta in a edilmesinin kolayl d r. Buna ek olarak tüm grafiksel geli tirme araçlar ile ba lan lmas kolayd r. Join.jsp nin yapt klar

lk giri sayfas n görüntüle form parametresinden email de erini oku email geçerlili ini kontrol et email adresi geçerli ise a. Adresi veritaban na ekle b. Bir sonraki sayfaya yönlendir 5. email adresi geçersiz ise a. bir hata mesaj haz rla b. join.jsp sayfas n hata mesaj ile beraber tekrar görüntüle

va

dil

1. 2. 3. 4.

Tek-Sayfa Yakla m n n Dezavantajlar

ww w. ja

A r html ve Java e lemesi JSP dosyas n n kodlay c s hem bir Java geli tiricisi hem de bir sayfa tasar mc s olmak zorundad r. Bu genelde ya berbat Java kodlar n n ortaya ç kmas na ya da berbat görünümlü sayfalar n haz rlanmas na sebebiyet verir. Baz durumlarda her ikisi de olabilir! Java ve JavaScript belirsizli i Sayfalar geni ledikçe biraz JavaScript kullanma e ilimi ortaya ç kabilir. JavaScript sayfada göründü ünde Java kodu ile bir çak ma söz konusu olabilir. Örne in email de erinin geçerlili ini s namak için istemci tarafl bir JavaScript kullanmak olas bir çak ma sebebidir.

Gömülü Algoritma Uygulaman n ak mant n anlayabilmek için tüm sayfalar ke fetmek durumunday z. 100 sayfal bir web sitesini hayal etti imizde ortaya ç kacak spagetti kodu bir dü ünün! Hata Ay klama (debuging) zorlu u HTML etiketleri, Java ve JavaScript kodunun hepsinin bir arada olmas hata ay klamay zorla t r r.

mant olas

K s tl De i im nda ya da veride yap lacak bir de i iklik durumunda hemen hemen tüm sayfalara dokunmak Estetik

m

Do al olarak geni sayfalarda bu tür bir kodlama karmakar k olacakt r. Sat r say s 1000 e varabilir. HTML Sayfam zda Çok Daha Az Java Kodu

i.c o

Liste 1 de Java kodumuzun içinde çokça HTML kodu bulunmas yerine HTML sayfam zda çokça Java kodu bulunuyor. Bu noktadan hareketle sayfa tasar mc lar na Java kodu yazmalar na izin vermenin gerçekten problemimizi çözmedi ini görüyoruz. Neyse ki JSP 1.1 ile tag(etiket) ad verilen yeni bir özelli e sahibiz.

ekil 3 JSP tag

dil

Bir JSP etiketi kodu sayfadan soyutlaman n basit bir yoludur. JSP etiketleri JSP dosyalar için tasarlanm kodu servlet te bulunan makrolarm gibi dü ünülebilir.(Bu yakla m hemen hemen do rudur) Ayn nedenden dolay Java kodumuzda HTML etiketlerinin olmas ve JSP dosyam zda Java kodunun bulunmas do ru de ildir. Çünkü JSP teknolojisinin tüm amac sayfa tasar mc s na Java kodu ile u ra madan servlet ler tasarlamas na olanak vermektir. Etiketler Java programc lar n n HTML gibi görünen Java kodlar ile JSP sayfalar n geni letmelerine olanak verir. ekil 3 bize kodu JSP sayfas ndan al p JSP etiketine koyman n genel mant n gösteriyor.

ww w. ja

va

Liste 2 de Struts tag n sa lad avantaja bir örnek görüyoruz. Liste 2 de normal HTML
etiketi Struts etiketi ile de i iyor. Liste 3 ise taray c n n alaca sonuç HTML i gösteriyor. Taray c HTML etiketini al yor fakat JavaScript gibi bir tür ek kod ile. Ek JavaScript email alan ndaki focus ilk de erini atar. Sunucu tarafl etiket kodu özelle tirilmi HTML kodunu olu turdu ve JavaScript kodunu sayfa tasar mc s ndan soyutlam oldu.



<script language="JavaScript">
m

// -->

i.c o

Model-View-Controller (MVC) Tasar m Deseni

ekil 4 mvc

dil

Struts anlayabilmek için öncelikle MVC tasar m desenini anlamak gerekir. MVC tasar m deseni model, view ve controller olmak üzere üç temel yap dan olu ur.

ww w. ja

va

ekilden de görebilece iniz gibi kullan c controller (genelde servletler) bile enleri ile onlara istem göndererek etkile ir. Controller bile eni model (genelde ejb bean) bile enine anl k bildirimde bulunur ve i ak mant na göre onlar idare eder. Model yap land r ld nda controller kullan c ya s rada hangi view (genelde JSP) bile enini gösterece ine karar verir ve bu view bile eni kullan c ya ilgili veriyi göstermek için model ile etkile ir.

Bile enler aras ndaki etkile imi daha iyi anlayabilmek için basit bir örne i inceleyelim. Bu örnekte kullan c basitce üye giri bilgileri ile sisteme giri yaparken bilgileri de sisteme kaydediliyor.

Görüntü (View)

Bu uygulaman n görünümü için 2 basit JSP kullanaca z.

Please Login

Please enter your login information




login.jsp sayfas

va



dil

i.c o

m

Username
Password
 


Bu üye giri sayfas kullan c ya kullan c ad ve ifresini girme olana verir. Ve girilen veriyi controller Servlet e (a a da gösterilen) arzederek ona login (giri yap) eylemini (action) yapmas n söyler :

ww w. ja

<jsp:useBean id="user" class="com.samjdalton.mvc.model.UserBean" scope="session" /> Welcome

Welcome <jsp:getProperty name="user" property="name"/>



welcome.jsp sayfas

m

welcome.jsp sayfas kullan c ya bir önceki sayfada kullan c n n sa lad kullan c ad n kullanarak bir ho geldin mesaj sunar. Görüldü ü gibi burada basitce oturum içindeki bir JavaBean kullan l r (useBean etiketi kullan larak gösterilen). Bu bean oturuma birazdan görece imiz gibi Controller taraf ndan yerle tirildi.

i.c o

Controller (Denetçi)

A a daki kod ile gösterilen Servlet uygulamam zda kulland

m z Controller gösterir.

package com.samjdalton.mvc.controller;

import com.samjdalton.mvc.controller.actions.LoginAction; javax.servlet.http.HttpServlet; javax.servlet.http.HttpServletRequest; javax.servlet.http.HttpServletResponse; javax.servlet.ServletException; javax.servlet.RequestDispatcher; java.io.IOException;

dil

import import import import import import

va

public class Controller extends HttpServlet { protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException { doPost(httpServletRequest, httpServletResponse); }

ww w. ja

protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException { // get the action property from the request String theAction = httpServletRequest.getParameter("action");

Action action=null; if (theAction.equalsIgnoreCase("login")) { action = new LoginAction(httpServletRequest,httpServletResponse); } // execute the action, which returns the page to go to next String page = action.execute(httpServletRequest,httpServletResponse); RequestDispatcher rd = httpServletRequest.getRequestDispatcher(page); // forward to the next page rd.forward(httpServletRequest,httpServletResponse);

}

m

}

i.c o

Controller.class

Bu hangi eylemi (action) ça raca na karar vermek için yaln zca bir istem parametresi kullanan çok basit bir Controller. Burada sayfa giri -yap eylemini parametre olarak gönderiyor ve LoginAction ça r l yor. Bu eylem Request ve Response nesnelerini parametre olarak alan bir method ile standart bir arayüz tan ml yor. Action s n f bir sonraki sayfan n yolunu dönderiyor ve kullan c bu sayfaya yönlendirilmi oluyor. Örne imizdeki LoginAction a a da gösterilmi tir

dil

package com.samjdalton.mvc.controller.actions; import com.samjdalton.mvc.controller.Action; import com.samjdalton.mvc.model.UserBean;

va

import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

public class LoginAction implements Action { public LoginAction(HttpServletRequest request, HttpServletResponse response) { }

ww w. ja

public String execute(HttpServletRequest req, HttpServletResponse res) { // get the user name String username = req.getParameter("username"); // create a UserBean UserBean user = new UserBean(username); // put it in the session req.getSession().setAttribute("user", user); // redirect to the welcome.jsp page return "/welcome.jsp";

}

}

LoginAction s n f

Bu action kullan c ad parametresini istemden elde ederek yeni bir model nesnesi (UserBean) yarat r, oturuma yerle tirir ve aç lacak bir sonraki sayfan n welcome.jsp olaca na karar verir.

m

Model

Uygulamam zdaki model yaln zca bir JavaBean kullanan çok basit bir yap ya sahip. A a da gösteriliyor:

public class UserBean { private String name; public UserBean(){} public UserBean(String name) { this.setName(name); }

i.c o

package com.samjdalton.mvc.model;

}

UserBean.class Uygulamada MVC

va

public String getName() { return name; }

dil

public void setName(String name) { this.name=name; }

ww w. ja

Görüldü ü gibi yukar daki uygulama çok basit bir Model 2 (MVC 2) uygulamas . Bu uygulama istenseydi çok daha geni letilebilirdi. Örne in eylemleri dinamik olarak uyarlayabilir, ak kontrolünü d ar dan yap l r hale getirebilirdik. Bütün bu uyralamalar , de i iklikleri ve çok daha fazlas n yababilmemizi Struts framework sa l yor.

m

STRUTS A G R

i.c o

Struts projesi 2000 Craig McClanahan taraf ndan MVC tabanl Java Web uygulamalar geli tirmede bir standart belirlemek amac yla tasarland . Struts 1.0 2001 in ortas nda yay nland ve u anda Apache Kurulu u nun Jakarta Projesinin bir parças d r. Struts çok çe itli projelerde geni bir yelpazede, farkl endüstri dallar için kullan lmaktad r. Struts yüksek uyarlanabilirlikli, geni letilebilir bir MVC framework üdür ve hayal edilebilecek herhangi bir Java Web uygulamas nda kullan labilir. MVC tasar m deseninin her üyesi Struts ta desteklenmektedir. Struts Kurulumu

dil

En son Struts sürümünü bu adresten elde edebilirsiniz. http://www.sitepoint.com/"http://apache.getsoftware.com/jakarta/struts/binaries/jakarta-struts-1.1.zip/" . ndirdikten sonra s k t r lm dosyalar açmal s n z. Da t m bir Struts uygulamas geli tirebilmek için gerekli olan tüm kütüphaneleri içermektedir. Da t mda ayn zamanda Webapps dizininin içerisinde bo bir Struts uygulamas (strutsblank.war) bulunmaktad r. Bu kendi web uygulamalar m z geli tirmek için bize bir çat sa lamak ad na oldukça kullan l d r. Kendi kodunuzu WEB-INF/classes dizinine, kendi ayarlar n z WEB-INF/struts-config.xml dosyas na koyabilirsiniz. Böylelikle tamamen fonksiyonel bir Struts uygulamas na sahip olmu olursunuz.

va

ACTION SINIFI 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

ww w. ja

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.

ACTIONFORM SINIFI 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. HTML FORMLARI Struts daki html etiketleri(tag) genellikle sadece html:form etiketi ba lam içinde çal r. Örne in:

i.c o

m

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: Yukar daki sat r; onayDü mesi dizgisini form çekirde inin property niteli ini ve value niteli inin de erini Düzenle olarak atar ve formu onaylar. 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.

dil

G RD LER ELE ALMA 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.

va

Metin Girdisi(Text Input) JSP ye bir metin kutusu de eri girmek için u struts etiketini kullanabilirsiniz. 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.

ww w. ja

Aç l r Kutu Girdisi(Drop-Down Combo Box Input)

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. 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.

m



i.c o

Dizgi dizi listesi ile seçilen value nas l ili kilendirilir: Select u sekilde de i tirilir: burada bir sim dizi listesindeki isimlerden biridir. Çekirdek dizi listesi ile: Çekirdeklerin dizgi alanlar unlarla ilgilidir: - görüntülenenDe er - kimlikDe eri

dil

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

va

Ç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. li kilendirilmi dizgilerle SeçilenDe er in li kilendirilmesi Select u ekilde de i tirilir:

m

Radyo Dü mesi Girdisi

i.c o

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. Struts ta Tablo Yaratma

Struts ta iterate etiketi tablo yaratmak için kullan l r. A a da basit bir örnek var.

i.c o

m

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. Bu demek oluyor ki çal acak indisli niteli i almak için listenizi form çekirde inde saklamal s n z. ndisli nitelik 1.02. sürümden sonra ortaya ç km t r.

dil

Bir Tabloda Onay Dü meleri Kullanma

ww w. ja

va

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. 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;

Radyo Dü meleri Tablosu Yaratma

dil

i.c o

m

} public String getKomut (int indis) { return komut; } 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.

Baz durumlarda a a daki tablo benzeri tablolar yarat lmak istenebilir. durum geçti Kald

Form eleman

0

*

0

Genel ders durumu

*

0

0

Akademik ders durumu

va

muaf

ww w. ja

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. HATA MESAJLARI

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: ActionErrors hatalar = new ActionErrors( ); errors.add(parametre1,new ActionError(parametreler)); saveErrors(istem , hatalar);

va

dil

i.c o

m

return (new ActionForward( e lem.getInput())); 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. 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(place-holders) 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 : Hata: ö renci listesi almaya çal l rken alan bulanamad Hata Mesajlar nda Sabitlerin Kullan m

    ww w. ja

    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. 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. Sabitlerle ilgili Örnek: 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} 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 ,

    va

    dil

    i.c o

    m

    "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: public static final String VT_HATA = "VTHata"; UygulamaKaynaklar .properties kütü ünde: VTHata=
  • Hata: {0} çal l rken{1} JSP kütü ünde: <%@ page import="com.ö renci.controller.org.Ö renciEkleAction" %> 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 ")); Hata Mesaj Hata: ö renci listesi almaya çal l rken alan bulanamad Yorumlar: 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ü.

    ww w. ja

    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: ----------------------------------------------------------------------Bu sayfa için Hatalar .Hata: Bu bir hatad r .Hata: Bu ba ka bir hatad r. ----------------------------------------------------------------------JSP sayfas n n geri kalan 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.

    m

    dil

    i.c o

    ActionForm Geçerleme(Validate) ve Resetleme(Reset) 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. 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: 1. 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. 2. 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

    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 . Struts-config.xml NED R? Struts-config.xml de 3 tür bilgi bulunur:

    ww w. ja

    Genel Yönleniciler(Global Forwards)

    bir örnek: 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: görüntülenecek ba lant ad Bir örnek: Kullan c eklemek için t kla Çekirdek Bildirimleri Bir örnek:

    m

    Kullan c n n girdilerini kabul edecek her JSP sayfan z için bunlardan bir tane olmal d r. Action E lemleri(Action Mappings)

    ww w. ja

    va

    dil

    i.c o

    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. Bunun bir örne i: 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: 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.

    Kaynakça: http://www.athensgroup.com

    i.c o

    http://www.sitepoint.com/"http://jakara.apache.org/struts/"

    m

    Not: Örneklerin baz lar mant ksal olarak dü ünüldü ünden okunurlu unun kolay olmas aç s ndan Türkçe karakterler kullan lm t r.

    http://www.sitepoint.com/"http://www.amazon.com/exec/obidos/ASIN/0596005199//" http://www.sitepoint.com/"http://www.amazon.com/exec/obidos/tg/detail/-/0596003285/"

    ww w. ja

    va

    dil

    http://www.sitepoint.com/"http://www.amazon.com/exec/obidos/ASIN/1930110502//"

    Hacettepe Üniversitesi Bilgisayar Mühendisli i, Harun Re it Zafer, Ocak 2006

    22/22

  • Related Documents