Merhaba, bu yazıda emir etiketlerini göreceğiz. Emir etiketleri, JSP sayfalarının tüm işleyişini kontrol eder ve uygulama sunucusuna işleyişle ilgili bilgiler verir. Emir etiketleri JSP sayfalarının herhangi bir yerinde bulunabilir fakat genellikle en üste yazılır ve <%@ .. %> arasına kodlanır.
Syntax (Söz dizimi)
1
<%@ emir attribute="değer" %>
Emir etiketlerinin 3 çeşidi vardır. Bunlar:
- Page
- Include
- Taglib
Page Etiketi
Etiketlerin attribute diye adlandırdığımız öznitelikleri vardır. Page etiketine bu öznitelikleri ekleyerek sayfa hakkında uygulama sunucusuna bilgi veririz. Fazla kafa karıştırmamak için bu özniteliklerden sadece önemli olanlarını inceleyeceğim. Bunlar:
- contentType
- errorPage
- isErrorPage
- import
- language
1- contentType: JSP sayfasının tipini belirler. text/html, text/xml gibi değerler alabilir. Varsayılan değeri text/html’dir. Kullanım:
1
<%@ page contentType="text/html" %>
2- errorPage: Eğer bir JSP sayfasında hata oluşması bekleniyorsa, hata oluştuğunda hangi sayfaya gidileceğini bu öznitelikle belirleyebiliriz. Tabii gidilecek sayfa isErrorPage özniteliği kullanılarak hata sayfası olarak tanımlanmalı. Bir sonraki başlıkta bu konuya değineceğiz. Kullanım:
1
<%@ page errorPage="hataSayfasi.jsp" %>
3- isErrorPage: Üstteki başlıkta, hata oluştuğunda gidilecek sayfanın hata sayfası olarak belirlenmesi gerektiğini söylemiştik. Bu özniteliğimiz yazıldığı sayfayı hata sayfası olarak tanımlar ve başka bir JSP sayfasından hata oluştuğunda çağrılmasına izin verir. Varsayılan değeri false’dir. Kullanım:
1
<%@ page isErrorPage="true" %>
4- import: Çeşitli paketleri ve bu paketlerin altındaki java classlarını dahil etmek için kullanılır. Örneğin Date sınıfını kullanmak istiyorsak bu özniteliği kullanarak sayfaya “java.util.Date” i dahil etmeliyiz. Kullanım:
1
<%@ page import="java.util.Date" %>
5- language: JSP sayfasının temelinde kullanılan programlama dilini ifade eder. Varsayılan değeri java’dır. Kullanım:
1
<%@ page language="java" %>
Include Etiketi
Include etiketi bir JSP sayfasının içeriğini olduğu gibi başka bir JSP sayfasına dahil eder. Bu işlemi file özniteliği ile yapar. Kullanım:
1
<%@ include file="dahilEdilecekSayfa.jsp" %>
Taglib Etiketi
Bu etiket, kullanıcının özel olarak oluşturulan etiketleri(custom tags) kullanmasını sağlar. JSTL (Java Standard Tag Library) de bu sistemle oluşturulduğundan JSTL’i kullanmak için sayfalarımızın başında taglib etiketini kullanmalıyız. JSTL’i ileride daha detaylı inceleyeceğiz. Taglib etiketinin iki tane özniteliği vardır. Bunlar: uri ve prefix. Prefix ön ek demektir. Kullanacağımız özel etiketlerin önüne koyarız. Örnek: JSTL içindeki c:out etiketi. C burada ön ektir. Uri özniteliği ise kullanacağımız özel etiketlerin kaynağını belirtir. Kullanım:
1
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Not: JSTL kullanabilmeniz için ilgili jar dosyasını projenizin WebContent\WEB-INF\lib dizinine atmanız gerekmektedir. Gerekli Jar dosyasını şu linkten indirebilirsiniz : JSTL 1.2 Evet, Directive Tags(Emir etiketleri) konusunu tamamlamış olduk. Şimdi öğrendiklerimizle bir uygulama yapalım. Hazır mıyız?
index.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page import="java.util.Date,java.text.DateFormat"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Directive Tags</title>
</head>
<body>
<%@ include file="tarihYazdir.jsp" %>
<form action="bolmeYap.jsp" method="post">
<table>
<tr>
<td><c:out value="İlk Sayı:"/></td>
<td><input type="text" name="ilkSayi"/></td>
</tr>
<tr>
<td><c:out value="İkinci Sayı:"/></td>
<td><input type="text" name="ikinciSayi"/></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Böl" style="width:100%;"/></td>
</tr>
</table>
</form>
</body>
</html>
- JSP sayfamızla ilgili ayarları yaptık. language=”java” ve contentType=”text/html” dedik.
- 2.satırda JSTL’nin özel etiketlerini kullanmak için taglib emir etiketini kullandık.
- 13.satırda <%@ include > etiketi ile tarihYazdir.jsp dosyasını çağırdık. tarihYazdir.jsp dosyasında java kodları ile tarih ve saat bilgisi alınıp ekrana yazdırılıyor. Dikkat ederseniz kodlar tarihYazdir.jsp’de fakat çalıştığı yer index.jsp. Çünkü biz o kodları dahil(include) ettik.
- 14.satırda butona basıldığında bolmeYap.jsp‘ye gidecek bir form oluşturduk.
tarihYazdir.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<%@ page import="java.util.Date"%>
<%@ page import="java.text.DateFormat"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Tarih Saat</title>
</head>
<body>
<%
String tarih = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.SHORT)
.format(new Date());
out.println(tarih);
%>
</body>
</html>
- İlk iki satırda sayfa içerisinde tarihlerle ilgili işlem yapacağımız için gerekli paketleri import ettik.
- JSP etiketleri arasında java kodu kullanarak tarih ve saati alıp ekrana yazdırdık.
bolmeYap.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" errorPage="hataSayfasi.jsp"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Bölme Sayfası</title>
</head>
<body>
<%
int ilkSayi = Integer.parseInt(request.getParameter("ilkSayi"));
int ikinciSayi = Integer.parseInt(request.getParameter("ikinciSayi"));
int sonuc = ilkSayi / ikinciSayi;
out.println("İŞLEMİN SONUCU : " + sonuc);
%>
</body>
</html>
- Page emir etiketinin içerisinde errorPage belirledik. Yani bu sayfada bir hata olursa hataSayfasi.jsp’ye git dedik.
- Body içerisinde formdan gelen verileri aldık ve bölme işlemini yapıp ekrana yazdırdık.(request objesini ve fonksiyonlarını daha sonra detaylı inceleyeceğiz. getParameter() fonksiyonu formdan gelen verileri almak için kullanılır. Bunu bilmeniz şimdilik yeterli.)
hataSayfasi.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hata Sayfası</title>
</head>
<body>
<h1>Bir hata meydana geldi!!</h1>
<h3>Hata: <%=exception%></h3>
</body>
</html>
- Page emir etiketinin içerisinde isErrorPage özniteliğine true değeri verdik. bolmeYap.jsp’de hata olduğunda buraya yönlendirilmesini söylemiştik ama bu sayfanın hata sayfası olduğunu doğrulamadık. isErrorPage özniteliğiyle bunu sağladık.
- <%=exception%> kod parçası ile oluşan hatayı ekrana yazdırdık.
Özetleyecek olursak, index.jsp’de öncelikle tarihYazdir.jsp isimli sayfa dahil edilmiş. Ardından iki adet sayı alan bir form var. Girilen iki sayı bolmeYap.jsp’ye gönderiliyor ve orada işlem yapılıp sonuç ekrana yazdırılıyor. Eğer bir hata meydana gelirse önceden belirlenmiş olan hataSayfasi.jsp’ye yönlendiriliyor.
Ekran Görüntüleri
Eğer ikinci sayıya “0” girersek, sıfıra bölme hatası oluşacağından bizi hata sayfasına yönlendirecek.
Bir sonraki yazıda JSP Action Tags’leri işleyeceğiz. Görüşmek üzere.