İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır

Standard Eylemler

Standard Eylemler

Eylemler Java kodu kullanmadan , nesne oluşturma , JSP sayfaları ve Servletler gibi sunucu taraflı kaynaklarla iletişim gibi gelişmiş işleri gerçekleştirmek için kullanılmaktadırlar.Aynı iş Java kodu kullanılarak scriptletler aracılığı ile yapılabileceği gibi , eylem etiketleri bileşenlerin yeniden kullanılabilirliğine ve uygulamanın devamlılığını mümkün kılmaktadır.

JavaBean Bileşenlerinin Kullanımı

JSP teknolojisinin bileşen modeli JavaBeans bileşen modeli mimarisine dayalıdır.Java Bean’ler belirli bir dizayna ve isimlendirme paternine uyan Java nesneleridir:Java Bean özelliklerini private olarak tanımlayarak içerisinde saklı tutar ve bunlara erişim için genel erişimciler(getter / setter metodları) kullanır.

Bir JSP sayfasından bir Java Bean e ulaşmadan önce , bean’i tanımlamak ve ona bir referans elde etmek gerekmektedir.<jsp:useBean> etiketi belirtilen id ve scope içerisinde oturum veya uygulama scope içerisinde daha önceden başka bir JSP sayfası tarafından oluşturulmuş bir JavaBean için referans almaya çalışır.Bu bean eğer referans belirtilen scope içerisinde elde edilemez ise Java sınıf ismi ile sınıf özelliklerinden oluşturulur.

<jsp:useBean id="user" class="com.jguru.Person"
scope="session" />

Yukarıdaki etiket örneğinde Person örneklemesi bir kere oluşturularak oturuma konmaktadır.Eğer bu usebean etiketi daha sonra başka bir JSP sayfası içerisinde kullanılırsa oturumdan daha önceden oluşturulan Bean örneklemesi için kullanılan referans elde edilir.

<jsp:useBean> etiketi ayrıca örnekteki gibi bir vücut içerebilir.

<jsp:useBean id="user" class="com.jguru.Person"
scope="session">
<%
user.setDate(DateFormat.getDateInstance(
).format(new Date()));
//etc..
%>
</jsp:useBean>

<jsp:useBean> etiketi vücudu içerisindeki herhangi bir scriptlet (<jsp:setProperty> etiketleri) sadece bean oluşturulurken çalıştırılmakta ve bean in özelliklerini atamak için kullanılmaktadır.

JavaBean bileşeni tanımlandıktan sonra , özelliklerinin atanması için özelliklerini giriş gerçekleştirilmelidir.Bir bean’in özelliklerine erişim <jsp:getProperty> etiketi ile gerçekleştirilmektedir.Bu etiket sayesinde kullanılacak bean ismi verimeli ve hangi özellik ile ilgileniliyorsa ayrıca bu özelliğin ismi verilmelidir.Geröek değer bu işlem sonunda çıktıya bastırılacaktır.

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

Bir JavaBean bileşeninin özelliğinin değiştirilmesi <jsp:setProperty> etiketi ile gerçekleştirilmektedir.Bu etiket ile bean belirlenmeli ve değiştirilecek olan özellik yeni değeri ile birlikte verilmelidir.

<jsp:setProperty name="user"  property="name" value="jGuru" />

veya

<jsp:setProperty name="user" property="name" value="<%=expression %>" />

Bir form bilgisinin işlenmesi için bean geliştirilirken , bean özelliklerinin form girdi elemanlarının ismini izlemesi gibi bir ortak dizayn paterni izlenebilir.Ayrıca her özellik için karşılık gelen getter/setter metodlarının da tanımlanması gerekmektedir.Buradaki avantaj, istek objesinin parçası olan HTML form elemanlarından gelen değerlerin ayrıştırılması için JSP motorunu yönetebilir ve karşılık gelen bean özelliklerine atamayı izleyen örnekteki gibi gerçekleştirebilirsiniz.

<jsp:setProperty name="user" property="*"/>

Bu çalışma zamanı sihri , introspection adı verilen ve istek üzerine bir sınıfın özelliklerini ortaya çıkarmasını sağlayan bir işlem ile mümkündür.Introscpection JSP motoru tarafından yönteilmekte ve Java reflection mekanizması ile implemente edilmektedir.Bu özellik tek başına çok fazla elaman içeren formlardan bilgiyi çekmekte oldukça büyük kolaylık sağlayacaktır.

Eğer bean özellik isimleri form girdi eleman isimleri ile uyuşmazlık gösterirse,yine de dıştan özellik ile eşleştirme parametrenin örnektki gibi adlandırılması ile mümkündür.

<jsp:setProperty name="user" property="address" param="parameterName" />

İstek İletimi(Forwarding Requests)

<jsp:forward> etiketi ile herhangi bir JSP,Servlet veya statik HTML sayfasına gelen isteği aynı kontekste farklı bir sayfaya yeniden yönlendirebilirsiniz(REDIRECTION).Bu efektif olarak o ana kadarki işlemlerin tümünün gerçekleşmesinin ardından yeniden yönlendirmenin başladığı noktada sayfanın işleyişini durdurur.

<jsp:forward page="birSayfa.jsp" />

Çağrımı yapan sayfa ayrıca istek içerisinde hedef kaynak bean parametrelerini de iletebilir.

<jsp:forward> etiketi ayrıca iletimde kullanılan isteğe ait bazı değerleri sunan jsp:param altelemanları içerebilir.

<jsp:forward page="<%= somePage %>" >
<jsp:param name="name1" value="value1" />
<jsp:param name="name2" value="value2" />
</jsp:forward>

İstek zincirleme

HTML formları işlerken JSP sayfaları ve Servletler içerisinde efektif olarak kullanılabilen ve oldukça güçlü bir diğer özellik istek zincirlemedir.

Bu konu için bir örnek verelim.Bean1.jsp adında FormBean tipinde bir fBean örneklemesi oluşturan , bunu isteğe koyan ve çağrıyı JSP2Servlet adındaki servlete ileten bir JSP sayfasını düşünelim.Önceden bahsettiğimiz introspection yöntemi ile bean örneklemesi oluştuğunu varsayıyoruz.

<jsp:useBean id="fBean" class="govi.FormBean"
scope="request"/>
<jsp:setProperty name="fBean" property="*" />
<jsp:forward page="/servlet/JSP2Servlet" />

Şimdi JSP2Servlet istekten kendisine geçirilen bean i çıkartmakta ve uygun set metodları ile gerekli değişikliği geröekleştirmektedir , ve daha sonar çağrıyı request dispatcher (istek sevkçisi) kullanarak diğer bir JSP sayfasına(Bean2.jsp) iletmektedir.Bu servlet kontrolcü rolünü üstlenmekte ve eğer gerekli ise istek içerisine ek olarak başka beanler koyabilmektedir.

public void doPost (HttpServletRequest request,
HttpServletResponse response) {
try {
FormBean f = (FormBean) request.getAttribute
("fBean");
f.setName("Mogambo");
// do whatever else necessary
getServletConfig().getServletContext().
getRequestDispatcher("/jsp/Bean2.jsp").
forward(request, response);
} catch (Exception ex) {
. . .
}
}

Şimdi JSP sayfası Bean2.jsp fBean adındaki bean’imizi istekten çıkarıp(eğer eklenmişse diğer bean’lerde dahil olmak üzere) özelliklerini kullanabilecektir.

<html>
<body>
<jsp:useBean id="fBean" class="govi.FormBean"
scope="request"/>
<jsp:getProperty name="fBean" property="name" />
</body>
</html>

İsteklerin Dahil Edilmesi(Including Requests)

<jsp:include> etiketi, çarıyı yapan JSP sayfası ile aynı kontekste sahip olan herhangi bir statik veya dinamik kaynağa isteğin yeniden yönlendirilmesini sağlamaktadır. Çağrımı yapan sayfa ayrıca istek içerisinde hedef kaynak bean parametrelerini de iletebilir

Örneğin;

<jsp:include page="shoppingcart.jsp" flush="true"/>

sadece shoppıngcart.jsp ye <jsp:useBean> etiketi ile isteğe yerleştirilen bean’lere erişim hakkını vermekle kalmayarak ayrıca kendisi tarafından oluşturulan dinamik içerik <jsp:include> etiketinin belirdiği noktaya eklenir.Fakat dahil edilen kaynak herhangi bir HTTP header(başlığına) değer atayamaz.Bu sebepten cookıe atama gibi işlemleri gerçekleştiremez ; bunu yapması durumunda ortaya bir exception çıkar.

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır