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