You are on page 1of 73

JAVA SERVER PAGES

TEKNOLOJS

http://blog.burakkutbay.com

hayat, yaanr klan


iki kadn..
ve
bir adama

Burak KUTBAY
1.Yayn Ocak 2014
info@burakkutbay.com
http://burakkutbay.com
http://blog.burakkutbay.com

Kapak ve Sayfa Dzeni : Burak KUTBAY

Bu kitabn btn haklar sakldr. Kaynak gsterilerek kullanlabilir.

Burak KUTBAY Kimdir?


Merhaba ben Burak KUTBAY, benim kim olduum hakknda fikir edinmek isterseniz
(http://blog.burakkutbay.com/hakkinda/) linkinden ulaabilirsiniz.
Ksaca kendimden bahsetmek gerekirse, Lise yaantmdan bu tarafa kendimi yazlma adam
programlama zerine kendimi gelitirmeyi seven, yazlm bir hobi olarak grmekteyim. Yazlmla
tanmam Pascal ile oldu ardndan Delphi ile byk bir devrim yaadm. Daha iyisini grmek iin 3
sene C Sharp Desktop Application stnde altktan sonra Javann esiz dnyasndaki Web zm
olan Java Server Pages ile tantm. Java Web Teknolojileri zerine kendimi gelitirmeye, projeler
yapmaya devam etmekteyim.

NSZ
u an okumakta olduunuz belkide olacanz kitap Java Server Pages Teknolojisi hakknda
bilgiler vermektedir.
Bu bilgiler kendi blogumda yazm olduum ( http://blog.burakkutbay.com ) Java Server
Pages Derslerinin derlenip toparlanm halidir.
Kendimi JSP zerine gelitiriken rendiim/tecrbe ettiim konular bloguma aktarrken u
an ki haliyle bile Java Server Pages Teknolojisini kavrayp bir proje yapabileceinize bile
inanmaktaym. En temel bilgilerden tutun daha ileri seviye olabilecek bilgileri elimden geldiince
detaylca anlatmaya altm.Bu kitapta bulduunuz/bulabileceiniz yazm hatalar iin sizden
imdiden zr diliyorum.
Bu kitap cretsizdir gnlnzce kullanabilirsiniz. Kendi sitem haricinde bir datm yaplacak
ise kaynak belirtmenizi rica ederim.
Eksik bulduunuz yerleri, istediklerinizi eletiri ve ikayetleri aklnza gelen her trl iletiyi
benimle lften ( http://blog.burakkutbay.com/iletisim/ ) adresinden paylan.
Blogumda Java Server Pages yazlar eklediimde bu PDFde anlk olarak gncellenecektir. Bu
gncellemelerden haberdar olmak iin sitemi ziyaret edebilirsiniz.

Faydal olmas dilei ile

NDEKLER
JAVA SERVER PAGES NEDR? ......................................................................................................... 1
APACHE TOMCAT KURULUMU VE KULLANIMI ............................................................................... 1
MYSQL SERVER MYSQL WORKBENCH KURULUMU ........................................................................ 3
JSP TEMELLER VE MERHABA DNYA ............................................................................................ 4
JSP ETKETLER JSP TAG LAR ...................................................................................................... 5
JAVA STANDART TAG LBRARY NEDR? JSTL KULLANIMI ................................................................ 6
JSP JSTL < C : CATCH > < C : F > ..................................................................................................... 8
JSP JSTL < C : FOREACH > < C : OUT > ............................................................................................. 9
JSP DE DOSYA LEMLER OKUMA, YAZMA, OLUTURMA ............................................................ 10
DOSYA OLUTURMA ................................................................................................................................... 10
DOSYA OKUMA ......................................................................................................................................... 11
JSP QUERY STRNG KULLANIMI ................................................................................................... 12
JAVA SERVER PAGES ( JSP ) SWTCH CASE KULLANIMI.................................................................. 13
RECURSVE FONKSYON JAVA SERVER PAGES .............................................................................. 15
JAVA SERVER PAGES ACTONS JSP ............................................................................................... 16
JSPDE METHOD OLUTURMAK RNEK ....................................................................................... 17
JSPDE DZ KULLANIMI ............................................................................................................... 18
JSP RADO BUTTON KULLANIMI .................................................................................................. 19
JSP CHECKBOX KULLANIMI.......................................................................................................... 20
JSP SAYFALARDA JAVASCRPT KULLANMAK................................................................................. 22

COOKES (EREZ) OLUTURMA VE KULLANIMI ............................................................................ 23


JSP SESSON OLUTURMA........................................................................................................... 25
JSP SESSON KAPATMAK (JAVA SERVER PAGES)........................................................................... 27
JSP SAYFASI AIRMA (JSP INCLUDE FLE) ................................................................................... 27
JAVA SERVER PAGES (JSP) CACHE CONTROL ................................................................................ 29
REQUEST METODU ..................................................................................................................... 30
JSP YEREL TARH SAAT BLGLERNZ ALMAK ............................................................................... 31
JAVA SERVER PAGES OTOMATK YENLEME ................................................................................. 32
JSP URL BULMA ( GETREQUESTURL ) ........................................................................................... 33
JSP KULLANICININ DL VE LKE BLGSN BULMAK ...................................................................... 34
JAVA SERVER PAGES HATA SAYFASI OLUTURMA ....................................................................... 35
JSP HATA SAYFALARINI YNETMEK............................................................................................. 36
JSP HATA MESAJI GSTERMEK.................................................................................................... 37
JSP MYSQL BALANTISI KURMAK ............................................................................................... 39
VER TABANINA KAYIT EKLEME (MYSQL) ..................................................................................... 41
VER TABANINDA KAYIT ARAMA (MYSQL) ................................................................................... 44
JSP TRKE KARAKTER SORUNU ................................................................................................. 47
JSP VERLER DNAMK OLARAK SAYFALATMA ............................................................................. 48
JSP DE XML VER GSTERM ..................................................................................................... 51
UYGULAMA ................................................................................................................................ 51
JAVA SERVER PAGES THREAD SAFE ............................................................................................. 53

THREAD NEDR? ......................................................................................................................... 53


JAVA SERVER PAGES LE JAVA BEANS KULLANIMI ........................................................................ 54
ORM OBJECT RELATONAL MAPPNG NEDR? .............................................................................. 55
JSPDE YE KAYT FORMU RNE .............................................................................................. 57
JSP SAYFA SAYACI YAPIMI (JSP RNEK) ....................................................................................... 61
JSP JAVA BEAN RNE .............................................................................................................. 62

Java Server Pages Nedir?


Web sayfalarnda Java dilini kullanarak dinamik web sayfalar oluturmamz salayan bir Java
teknolojisidir. Jsp (Java Server Page) Html dili iine yazlr ve zel taglar kullanarak <% . . . . .
. %> yazlr.
JSP, Servlet uzantsdr. Html ierisine yazdmz JSP kodlar sunucuda Servlete evirilir.
JSPler Java Beansler le alr ve daha rahat bir gelitirme imkan sunar.Eer Java biliyorsanz
Html ierisine zorlanmadan JSP kodlayabilirsiniz. JSP Platform bamszdr. Java destei olan
her yerde rahatlkla alabilir. Baka bir gzel yan ise Java Classlar ile birlikte
alabilmektedir.
JSPnin alt Yer Uygulama Sunucusudur.
JSPde yazdnz kodlarn almas iin Web Sunucularna deil Uygulama Sunucusuna
atmanz gerekir. JSP bir Java uygulamasdr. Bu yzden JSPnin almas iin gerekli olan
Uygulama Sunucusudur. Apache Tomcat bir uygulama sunucusudur.
JSP hakknda biraz bilgilendiysek dier blm de JSP iin gerekli uygulama gelitiricimizi ve
uygulama sunucumuzu kuracaz.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/jspye-giris-java-server-pages-nedir-ders-1.html/

Apache Tomcat Kurulumu ve Kullanm


Apache Tomcat, Java Server Pages yani JSP sayfalarmzn almas iin bilgisayarmza
kurduumuz bir server diyebiliriz. Apache Tomcat gibi JSP sayflarmzn almas iin baka
server rnleri mevcut. Ama Apache Tomcati nermemin sebeblerinden biriside
Netbeansda projemizi altrdmz zaman aktif olmas ve Netbeansta ki projemizi
kapatnca kendini kapatmas. Dier server tiplerinde bu zellik var m bilmiyorum. Sistemde
arkaplan da almamas gerekten ok ho.

1|Burak KUTBAY

Java Server Pages |http://burakkutbay.com

Apache Tomcat Kurulumu


1. ncelikle yapmamz gereken Apache Tomcati bilgisayarmza indirmek. Bunun
iin http://tomcat.apache.org/ sitesinde Tomcatin en son srmn indiriyoruz.
2. Zipli dosyay bilgisayarmza indirdikten sonra zipten karalm ve C:\ dizinimize
kopyalayalm.
3. Kurulum aamas bu kadar.
Apache Tomcat Ayarlar
Tomcatimize Javay tantmamz gerekmekte. Bunun iin Ortam deikenlerimizi tantmamz
gerekiyor.
1. Bilgisayarm a sa tklayp zellikler dedikten sonra Gelimi sekmesinden Ortam
Deikenleri butonuna tklyoruz.
2. kullanc deikenleri altnda bulunan Yeni butonuna tklyoruz ve karmza
gelen Deiken adna JAVA_HOME, deiken deerine de jdk adresimizi
yani C:\ProgramFiles (x86) \Java\jdk1.6.0_23 yazyoruz ve tamam diyoruz. (Bu
yol bilgisayarnzn trne gre deiebilir. 32-64 bit farkllklar olabilir.)
3. Ardndan Sistem Deikenlerinde Path i bulup dzenle butonuna tklyoruz. Daha
sonra
deiken
deeri
satrnn
bana C:\ProgramFiles
(x86)
\Java\jdk1.6.0_23bin; adresini ekliyoruz.
Ortam Deikenlerinin Kontrolnn Yaplmas
Bu yollar ekledikten sonra doruluundan emin olmamz gerekmekte. Bu yollarn gerekten
Java dizinine doru ekilde eklediimizden emin olmak iin yapmamz gerekenler ise unlar.
1. Balat->altr->cmd yazp Enter tuuna basalm.
2. Karmza kan komut sisteminde ise C:\> echo%java_home% yazdktan sonra
Java yolunu doru veriyorsa sorunsuz bir ekilde tanttk demektir.
Apache Tomcatin altrlmas
Tomcati kurduk. Ortam deikenlerini ayarladk. Buraya kadar bir sorun yok ise Sra
servermz altrmaya geldi.
1. C:\tomcat\bin\startup.bat dosyasn altralm.
2. Ardndan herhangi bir internet taraycmzn adres
ubuuna http://localhost:8080/ yazalm ve Entera basalm.

2|Burak KUTBAY

Java Server Pages |http://burakkutbay.com

3. Karnza Apache Tomcat sayfas geliyorsa sorunsuz bir ekilde servernz


kurdunuz demektir.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/apcahe-tomcat-kurulumu-ve-kullanimi.html/

MySql Server MySql WorkBench


Kurulumu
Veritabanlar programlarmzn vazgeilmezidir. Bir yazlmda veri hereydir.
*
MySql veritaban kurulumuna geelim ardndan nasl kullanlr ona bakalm.
MySql Server bilgisayarmz bir veritaban servisi oluturmamz salayacak. Mysql
Workbench ise Mysql Servermz kolayca ynetebilmek iin bir arayzdr.
Mysql Server Kurulumu
1. Bu adm Mysqli bilgisayarmza indirmek
olacak. http://www.mysql.com/downloads/mysql/ adresinden sisteminizin
gereksinimlerinize uygun olan versiyonu seiniz.
2. ndirdiiniz dosyay bilgisayarnza kurun.
3. Kurulum ilemi tamamlandktan sonra konfigre etmemiz gerekiyor.
Mysql Server Konfigre Etmek
1. Karmza bir sihirbaz gelecek bu sihirbaz bize yardmc olacak.
2. Detailed Configurationu seelim ve next tuuna basalm.
3. Bu admda Server Machine seeneini iaretleyelim. (Bu admda makinemizi
server olarak tanttk)
4. Multifunctional Database seeini seelim ve next uuna basalm.
5. Bu admda ne kadar yer kaplayaca belirtiliyor next tuuna basalm.
6. OLAP seenii seelim. (Ka kiilik bir sistem kulllandmz soruyor)
7. Bu adm ok nemlidir. MySql Servermzn kullanaca port ve TCP/IP
kullanmza izin vermemiz gerekiyor. Port otomatik olarak gelir bir deiiklik
yapmamaya alalm. Ardndan Enable TCP/IP Networking ve Enable Strict
Modeyi seelim.

3|Burak KUTBAY

Java Server Pages |http://burakkutbay.com

8. Veritabanmzn kullanaca dili belirtelim. Best Support For Multilanguazimim


seelim.
9. Son adm ise MySql ifresi oluturmak ve kurulumu tamamlamak.
MySql Server WorkBench Kurulumu
1. http://www.mysql.com/downloads/workbench/ adresinden
kuruyoruz

indiriyoruz

ve

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/mysql-server-mysql-workbench-kurulumu.html/

JSP Temelleri ve Merhaba Dnya


Bugn Java Server Page (JSP) ile ilk web sitemizi yapacaz ve bu tabiki Hello World yazs
olacak.
JSP
kodlamaya
gemeden
nce
bir
hatrlatma
yapalm.
Jsp renmek, ilerlemek isteyen kiiler Html dilini ve Html de bulunan sklkla
karlaacanz tag lar bilmenizde fayda var. JSP (Java Server Pages) Html taglarnn
arasna yazlr ve Html ile paralel alr diyebilirim. leri ki derslerde detayl olarak
greceksiniz.
imdi sadece unu bilelim JSP <body> </body> arasnda kodlanr. (imdilik bunu bilmek
yeterli ileriki yazlarmda bu sz geerliliini kaybedecek).
<body> tag: Html formatta taraycda gsterilmek istenen yaz resim vb. gsterilmesini
salayan bir tag dr. Gelelim Merhaba Dnya yazmaya.
Jsp (Java Server Pages) iin Java kodlarn nereye yazacamz akladk. imdi ise sra geldi
JSP sayfamzda Java yazmaya. Unutmamalyz ki JSPler de tag diye tabir ettiimiz etiketlerle
yazlr. JSP iin ise bu tag <% %> taglardr. Bu taglar arasnda Java yazabileceiz.
Genel Grnm yle olacak:
1 <% %>

ve biz Java kodlarmz


4|Burak KUTBAY

Java Server Pages |http://burakkutbay.com

1 <% %>
taglar arasna yazacaz.
Merhaba dnya yazalm ve Jsp Sayfamz altralm.
1 <% out.print("Merhaba Dnya"); %>
Java ainal olanlar bilir Java Console uygulamalarnda ekrana yaz yazdrmak iin kullanlan
System.out.print komutu yerine JSP de sadece out.print yazmamz gerekmekte.
JSPye genel bir giri yaptk. Tag zelliinden bahsettik. Dier Jsp derslerinde biraz daha
derine ineceiz.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/jsp-temelleri-ve-merhaba-dunya.html/

JSP Etiketleri JSP Tag lar


Java Server Pages Derslerimizin bu blmnde ok nemli bir konudan bahsedeceim.
*
Java Server Pages kodlama stili taglar arasnda olmaktadr. Her tagn belirli bir
ilevi bulunmaktadr. Bu taglar kod okunmasn kolaylatrr ve profesyonel projeler de JSP
kullanm
taglar
zelliklerine
gre
kodlanmaktadr.
*
Bu taglar ksaca aklayalm. leriki derslerde taglar detayl olarak yazacam

1.
Declaration Tag (Bildiri Tag)
Bu tag arasnda deiken belirleme ve ya o deikene deer atama ilemleri yaplmaktadr.
Tagn ifadesi <%! %> eklindedir.

2.
Expression Tag (fade Tag)
JSP sayfalarmzda Java ifadelerini yazmak iin baka bir yntem. Hi kullanmadm demsem
yeridir. Hml kodlama satrnda tek admlk Java ifadeleri iin
kullanmaktaym. fade <%= %>eklindedir.

3.
Directive Tag (Emir Tag)
JSP sayfamza zellikler eklemede kullanlr. Bu zellikler ktphane ekleme, extends
kullanma, hata sayfalar eklemek, JSP sayafmzn dil zellikleri gibi bir sr emirler vererek
5|Burak KUTBAY

Java Server Pages |http://burakkutbay.com

zelletirebiliriz. Kullanm ise <%@ %> eklindedir.

4.
Scriptlet Tag (Kodlama Tag)
JSP sayfamzda Java kod paralarn yazmak iin kullanlr. Kullanm <% %> eklindedir.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/java-server-pages-etiketleri-jsp-tag-lar.html/

Java Standart Tag Library Nedir? JSTL


Kullanm
Java ile web programclna JSP ile giri yaptm bunlar ders halinde blogumdan anlatmaya
devam etmekteyim dier Java Server Pages derslerine ulamak iin buradan.
*
Java Standart Tag Library ifadesini biraz aalm. Java Server Pages ve Java Server Faces Java
ile Web programlama yapabildiimiz arac kodlarmz.
*
Bu JSP ve JSF kodlamada Java kodlamaktayz. Java Standart Tag Library ile beraber JSP
sayfamzda daha az kodlama yapyoruz. Bu daha az kodlama bizim ilerimizi
kolaylatrmaktadr.
Tag Libraryi projemizde kullanmak iin proje ktphanemize eklememiz gerekebilir.
Kullanlan / kullandm library taglar ise unlar.
1. Core (prefix: c) : En ok kullandm ktphanelerden birisi. Ak kontrolleri, url
ynetimi gibi ilemleri rahata yapabilmekteyiz.
2. XML (prefix: x) : Adndan da anlalaca zere XML ile ilgili ilemler
yapabilmemizi salamaktadr.
3. Internationalization (prefix: fmt) : Tarih , say ilemleri iim kullanlr.
4. Database (prefix: sql) : Bu da ok sk kullandm ve kullanacanz Veri taban
ilemleri iin gerekli olan neredeyse tm ilemleri yapabiliyoruz.
Maddelere gemeden ncede sylediim gibi bu taglar kullanmadan nce import etmemiz
gerekmekte. JSP sayfalarmzda bu taglar kullanmamz iin gerekli import komutlar ise
yle.
1 <%@ taglib prefix=c uri=http://java.sun.com/jsp/jstl/core%>
2 <%@ taglib prefix=x uri=http://java.sun.com/jsp/jstl/xml%>
3 <%@ taglib prefix=fmt uri=http://java.sun.com/jsp/jstl/fmt%>
6|Burak KUTBAY

Java Server Pages |http://burakkutbay.com

4 <%@ taglib prefix=sql uri=http://java.sun.com/jsp/jstl/sql%>

Bu prefixlerin kullanm taglar ise yle;

Core Etiketleri
c:catch
c:choose
c:forEach
c:forTokens
c:if
c:import
c:otherwise
c:out
c:param
c:redirect
c:remove
c:set
c:url
c:when
XML Etiketleri
x:choose
x:forEach
x:if
x:otherwise
x:out
x:param
x:parse
x:set
x:transform
x:when

i18n Etiketleri
fmt:bundle
fmt:formatDate
fmt:formatNumber
fmt:message
fmt:param
fmt:parseDate
fmt:parseNumber
fmt:requestEncoding
fmt:setBundle
fmt:setLocale
fmt:setTimeZone
fmt:timeZone
SQL Etiketleri
sql:dateParam
sql:param
sql:query
sql:setDataSource
sql:transaction
sql:update

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/java-standart-tag-library-nedir-jstlkullanimi.html/

7|Burak KUTBAY

Java Server Pages |http://burakkutbay.com

JSP JSTL < c : catch > < c : if >


Java Server Pages Derslerinde bugn Daha nce ki derslerde ilediimiz Java Standart Tag
Library Nedir? JSTL Kullanm ile ilgili JSTLlin etiketlerinden Catch ve if etiketlerini bu
dersimizde inceleyeceiz.
JSTL kullanmak JSP projelerimizde bize kullanm kolayl salamaktadr.
<c:catch>
Catch Tag adndan da anlalaca zere yakalama zerine olan ilemleri
gerekletirmektedir. Yakalad durumlar ise hatadr. Yaptmz bir projede bir tekrar
etmesi gereken ilemler dngler varsa bir hata meydana geldiinde bu hatay yakalatp,
sonucunu bize gnderen bir etikettir. Tek bana kullanlabilir fakat anlamsz kalabilir. Bu
hatann sonucunu bir deerlendirmeye balayarak yaplacak olan ilemleri devam edebiliriz.
Bunu da aada aklayacam <c:if> tag ile bir btn haline getirip hatay daha da
anlamlatrabilmekteyiz.
Bu tag daha iyi anlamamz iin bir rnek yapalm. Bu yapacamz rnekte programmza
hata oluturacaz.
Programmza matematiksel bir hata verelim.
1
<c:catch var ="catchException">
2
<% int sayi = 18/0; %>
3
</c:catch>
Bu kod blou hata verecektir. Bu hatay catch yakalad. Bu hata ile neler yapabiliriz yaznn
devamnda aklayacam imdi renmemiz gereken bir tag var.
<c:if>
if tagmz bir koula bal olay yaptrmamzda kullanmaktayz. Bir karlatrma ya da bir
sonuca bal durumlarda isterleri bu tag blogunda yazmaktayz.
Bir rnek ile aklayalm.
Yukarda Catch tagn aklamak iin bir rnek yaptk. Bu rneimizde bir hata var bu hatay
bir koula balayalm. Yani bu ilem de bir hata var ise ekrana bir mesaj yazdralm.
1
2
3

<c:if sonuc = "${catchException != null}">


Bir hata meydana geldi. Ltfen leminizi kontrol edin.
</c:if>

8|Burak KUTBAY

Java Server Pages |http://burakkutbay.com

Bu kod blogu ise yukarda meydana gelen hatay yani catchException u kontrol etti ve
catchException da null deeri var ise <c:if> blou ierisindeki mesaj taraycada gsterdi.
JSPde JSTL kullanmak rnekler de de grld gibi zaman ve kod karmakl byk bir
lde engellemekte.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/jsp-jstl-catch-kullanimi.html/

JSP JSTL < c : forEach > < c : out >


Java Server Pages Derslerine devam ediyoruz. Bu dersimizde daha nce akladmz Java
Standart Tag Library Nedir? JSTL Kullanmna detaylca inceliyoruz. JSTL ile alakal dier ders
ise JSP JSTL < c : catch > < c : if > idi . Bu dersde ise forEach ve out kavramlarn inceleyelim.
JSTL kullanmak JSP projelerimizde bize kullanm kolayl salamaktadr.
<c:forEach>
Bu JSTL bir dngdr. For dngs gibi ilem grmektedir ancak kullanm daha kolay
olmaktadr.
1

<c:forEach var="degisken_adi" begin="1" end="80">

Yapmz bu ekilde nceden alk olduumuz dng yapsndadr. Bu yap genelde veri
ekerken kullanlmakta.
<c:out>
1

<c:out value="${degisken_adi}"/><p>

Bu tag ise bize dngden gelen sonular ekrana yanstmamz salamaktadr.


Veritabanmzdan verileri ekerken bu kullanm bize ok kolaylk salamaktadr.
Toparlarsak.
1
2
3

<c:forEach var="degisken_adi" begin="1" end="80">


Liste <c:out value="${degisken_adi}"/><p>
</c:forEach>

9|Burak KUTBAY

Java Server Pages |http://burakkutbay.com

forEach bloklar arasnda ki kodlar dng devam ettii srece almaya devam etmektedir.
Dng sonucu ise out tag ile kullanabilmekteyiz.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/jsp-jstl-c-foreach-c-out.html/

Jsp de Dosya lemleri Okuma, Yazma,


Oluturma
Java Server Pages Dersimizin bu yazsnda, Java Server Pages zerinden;
Dosya Oluturma;
Dosya Yazma;
Dosya Okuma;
ilemlerini greceiz.
Dosya ilemlerinde kullanacamz ktphane java.io.* ktphaneleridir. Dosya yazma
ilemine balamadan nce bu ktphaneyi programmza eklemeyi ihmal etmeyelim.

Dosya Oluturma
Java Server Pageste Dosya Oluturma ilemi FileOutputStream komutu ile olmaktadr. JSPde
bir dosya oluurmak istiyrosak komutumuz.

1
2
3
4
5
6
7
8
9
10
11
12

<%@page import="java.io.*"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="javax.servlet.http.HttpUtils,java.util.*" %>
<%
try{
FileOutputStream dosya = new FileOutputStream("C://Deneme.txt");
out.println ("Dosya Oluturuldu");
}
catch (IOException e){
out.println ("Dosya Oluturulamad");
}

10 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

13

%>

Dosya Yazma
Dosyamz oluturduk. Oluan dosyamza bir metin ya da kayt eklemek iin kullanlan komut
ise PrintStream ile gereklemektedir.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

<%@page import="java.io.*"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="javax.servlet.http.HttpUtils,java.util.*" %>
<%
try{
FileOutputStream dosya = new FileOutputStream("C://Deneme.txt");
out.println ("Dosya Oluturuldu");
try{
new PrintStream(dosya).println("Burak Kutbay");
out.println ("Verileriniz Dosyaya Eklendi.");
dosya.close();
}
catch(Exception e){
out.print("Verileriniz Dosyaya Eklenemedi.");
}
}
catch (IOException e){
out.println ("Dosya Oluturulamad");
}
%>

Dosya Okuma
Verilerimizi dosyamza kayt ettik. Bu verileri okumak istersek BufferedReader komutu ile
gerekletiriyoruz.

1
2
3
4
5
6
7
8
9

<%@page import="java.io.*"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="javax.servlet.http.HttpUtils,java.util.*" %>
<%
try{
out.println("Dosya Bilgileri"+"
");
BufferedReader dosya = new BufferedReader(new FileReader("C://Deneme.txt"));

11 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

10
11
12
13
14
15
16
17
18
19

String bosluk = "";


while ((bosluk = dosya.readLine()) != null) {
out.println("*"+bosluk+"");
}
dosya.close();}
catch(IOException e)
{
out.print("");
}
%>

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/jsp-de-dosya-islemleri-okuma-yazma-olusturma.html/

Jsp Query String Kullanm


Query String denilen kavram nedir ilk nce bu kavram inceleyelim.
*
Query String taraycmzn adres ubuundan oluturduumuz baka bir sayfaya veri tama
ilemidir. Adres ubuundan veri tama ilemi ? ve ya & iaretleri olur ve bu bilgileri
ayrr.
*
Adres ubuunda bilgiler bu ekilde gzkr.
1

kullanicibilgi.jsp?adi=Burak&soyadi=kutbay

Bu adres ubuunda ki bilgileri sayfamza almamz gerekmektedir. Adres ubuunda ki


verileri Request.Querystring metodu ile almaktayz.
1
2

String kullaniciadi=request.getParameter("adi");
String kullanicisoyadi=request.getParameter("soyadi");

request.getParameter metodu ile bilgileri JSP sayfamza arp kullanabiliyoruz.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/jsp-query-string-kullanimi-java-server-pages-requestgetparameter.html/

12 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

Java Server Pages ( JSP ) Switch Case


Kullanm
Java Server Pages Derslerimize devam ediyoruz. Bu ders temel programlama ifadeleri
diyebileceim (seim zerine) ifadelerin JSP sayfalarmzda nasl kullanld ile alakal olacak.
Bu dersler biraz basit gibi grnse de neden yazyorsun bunlar diye sorabilirsiniz. Gelen
geribildirimlere gre programlamay yeni renen dostlarmz bu ifadelerin hem HTML hem
de Java ile nasl altn merak etmekte. O dostlar krmamak adna hemde JSP ile alakal
ne varsa basit, zor kavram yapmadan buraya not etmek istiyorum.

Uzun bir dipnottan sonra konumuza dnelim. Switch Case kullancya bir seim
yaptrdktan sonra o programmza o ilemi yaptrmak ve sonra kesmek stne kurulu bir
ifadedir. Bu kullanm genel de kullancya kstl seenekler sunan ve o seeneklerin kesin
olarak bir uygulama yntemi olup baka bir kodun almasna gerek olmayan kesin
ifadelerde kullanlr. Yani programmzda o seime gre kesin bir ifade olacak ve bunun
sonucunda kullanya kesin bir sonu vermesi planlanan durumlarda kullanlr.
Switch-Casenin detayl anlatmn bu ders zerinde yapmay doru bulmuyorum zaten JSP ile
ilgili bir rnek zerinde grdnzde anlayacanz umuyorum.
Java Server Pages rneimiz de kullanacamz senaryo ise u olacak. Sayfamz da bir form
olacak bu formda kullancdan bir giri isteyeceiz. Kullancya Hangi Ay diye soracaz ve
rakam cinsinden bir deer girecek bu deere karlk gelen ay ise JSP sayfamz bize
syleyecek imdi formumuzu tasarlayalm.
index.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14

<%@page contentType="text/html" pageEncoding="UTF-8"%>


<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Burak Kutbay Com Switch Case Uygulamas</title>
</head>
<body>
<form name="form1" method="get" action="sonuc.jsp">
<label>Hangi Ay</label>
<input type="text" name="ay" id="ay">
<input type="submit" name="gonder" id="gonder" value="Gnder">
</form>

13 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

15
16
17

</body>
</html>

index.jsp sayfamzdan aldmz deeri sonuc.jsp formuna tayacaz bu ilemi GET


metodunu kullanarak gerekletireceiz. nceki dersimizde bahsettiim Jsp Query String
Kullanm ile kullancdan gelecek ay cevab bilgisini alp Swicth Case blokuna alcaz.
sonuc.jsp
1 <%@page contentType="text/html" pageEncoding="UTF-8"%>
2 <!DOCTYPE html>
3 <html>
4
<head>
5
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
6
<title>Switch Case Sonu</title>
7
</head>
8
<body>
9
<% String formdangelen="0";
10
formdangelen=request.getParameter("ay");
11
int a=Integer.parseInt(formdangelen);
12
switch(a) {
13
case 1:
14
out.println("Ocak");
15
break;
16
case 2:
17
out.println("ubat");
18
break;
19
case 3:
20
out.println("Mart");
21
break;
22
case 4:
23
out.println("Nisan");
24
break;
25
case 5:
26
out.println("Mays");
27
break;
28
case 6:
29
out.println("Haziran");
30
break;
31
case 7:
32
out.println("Temmuz");
33
break;
34
case 8:
35
out.println("Austos");
36
break;
37
case 9:
14 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

38
out.println("Eyll");
39
break;
40
case 10:
41
out.println("Ekim");
42
break;
43
case 11:
44
out.println("Kasm");
45
break;
46
case 12:
47
out.println("Aralk");
48
break;
49
default:
50
out.println("Ay Seelim. Gzelleelim");
51
}
52
53
%>
54
</body>
55 </html>

index.jsp sayfamzdan gelen deeri sonuc.jsp sayfamza aldk. Alnan deerin karlna gelen
veriyi kullancya gsterdik. Gzel kodlamalar. (:

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/java-server-pages-jsp-switch-case-kullanimi.html/

Recursive Fonksiyon Java Server Pages


Java Server Pages Dersimizin bu gnk konusu zyinelemeli fonksiyon olarak tabir ettiimiz
recursive fonksiyonlardan olacaktr. Fonksiyon kavramn biraz aalm. Programlama
dillerinde fonksiyon ana program d ve ya iinde ayr bir kod bloklardr. Bu bloklar ana
programdan deer alp deer gnderebilirler.
Programlarmzda tekrar tekrar kullandmz ilemler iin kullanlr ve bu sistemimizi yorar.
Recursive fonksiyon sistemi olabilecek en dk seviyede almasn salar. Kendi kendini
ararak fonksiyonumuz bir dng eklinde almaya devam eder.
Java Server Pagesde Recursive Fonksiyonlar kullanmnn yazmamdaki neden gelen istek.
JSPde bu ilemin nasl olduunu (iletiim) soranlar olduka fazla idi.
Aslnda bilinen kullanm eklinden hibir fark bulunmamaktadr. imdi rneimize geelim.
Bu rnek olduka basit ve recursive fonksiyonlar kavramak iin verilen rnei yapalm.
Faktriyel rneini Java Server Pagesde yapalm.
15 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

Recusive Methods for Java Server Pages


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

<HTML>
<HEAD>
<TITLE>Burak Kutbay Blog</TITLE>
</HEAD>
<BODY>
<H1>Recursive Fonksiyon</H1>
<%!
int faktor(int n)
{
if (n == 1) {
return n;
}
else {
return n * faktor(n - 1);
}
}
%>
<%
out.println("15 in faktoriyeli... " + faktor(15));
%>
</BODY>
</HTML>

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/recursive-fonksiyon-jsp-java-server-pages.html/

Java Server Pages Actions JSP


Java Server Pages Derslerinde bu yazda Java Server Pageste kullanlan eylemleri sizlere
inceleyeceiz.
*
zetle yazacak olursak. Java kodlar oluturmadan nesne oluturma o nesneleri kullanma
eylemidir. Bu yntem servlet tarafna yani sunucu tarafna gnderi yaplmas iin
kullanabiliriz. Bu action kullanm zorunlu deil burada aklayacam kullanm trleri Java
kodlar ile de rahata yaplmaktadr.
Kullanm:
1

<%jsp:action_name attribute="value" %>;

16 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

Eylemler Syntax
jsp:include
jsp:useBean
jsp:setProperty
jsp:getProperty
jsp:forward
jsp:plugin

Aklama
Bir jsp sayfasn bulunduunuz baka bir sayfay dahil edebiliriz.
JavaBeani Jsp sayfamza tanmlyoruz.
JavaBeanlerin zelliklerini deitirmek iin kullanlan eylem.
JavaBeanlerin giri zelliklerini deitirebileceimiz eylem.
Bir jsp sayfasndan baka bir jsp sayfasna ynlendirme
yapmaktadr.
Sayfamza Java Eklentisi yerletirebiliriz. Object ve ya Embed
olarak.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/java-server-pages-actions-jsp-eylemler.html/

JSPde Method Oluturmak rnek


Method Nedir?
Method ksaca bizim programmzda kullanmak zere yazdmz kk program paralardr.
Nesneye Ynelimli Programlamalar da kullanlan en temel yntemdir. Metod tekrarlanan
ilemleri yapacamz gibi ayrca bize zaman ve sistemlerimizin de kaynaklarn az
kullanmamz salamaktadr.
Method kavram olduka geni bir kavram ancak bizim konumuz JSP ve bu dersimizde Java
Server Pageste nasl kullanldna bakacaz.
Method olutumay bildiiminizi umarak Java Server Pageste nasl kullanlr bakalm.
ncelikle kullanacamz JSP tag
1
2
3
4

<%!
.....
...
%>

Bu JSP tagn daha nceki derste grmtk. Bu tag bilgidiri tagdr. (oku)Methodumuzu
yazacamz tag rendik ve bu taglar arasna methodlarmz yazdktan sonra Kod
tagmzdan verileri gnderip ekranda sonucu gstereceiz.
1
2
3
4

<html>
<head>
<title>Burak Kutbay</title>
</head>

17 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

5
6
7
8
9
10
11
12
13
14
15
16

<body>
<%!
int topla(int sayi1, int sayi2) {
return sayi1 + sayi2;
}
%>
<%
int sonuc = topla(5, 9);
out.println(sonuc);
%>
</body>
</html>

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/java-server-pages-method-olusturmak.html/

JSPde Dizi Kullanm


Bu yazda Java Server Pagesde dizi kullanmna bakacaz.
Programlama da dizi demek birden fazla deeri ayn deikende depolamaya ve depodan
kullanmamza olanak tanmaktadr.
Java Server Pagesde dizi oluturma ilemi;
1
2
3

<%
String[] dizi={"bu","ra","k"};
%>

kullanlmaktadr.
Bizim ilemlerimizde belirli bir deer bulunmuyor olabilir. Bu durumlarda baka sayfalardan
gelen deerleride dizimize atmamz mmkn belirteyim.
Bu dizimizi her ama iin kullanmamz mmkn herhangi bir program dilinde yapmak
istediiniz tm ilemleri JSP iinde yapabilirsiniz. Biz bu dizimizdeki deerleri ekrana
yazdralm.
1
2
3
4

<%for(int x=0;x<dizi.length;j++){
out.println(dizi[x]);
}
%>

18 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

Basit bir rnek ile akladm. Java Server Pages ile dizi oluturup, ilemlerinize gre
kullanmanz bu kadar kolay

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/jspde-dizi-kullanimi-java-server-pages.html/

JSP Radio Button Kullanm


Bu konumuzda sayfamzdan oluturduumuz formmuzda Radio Button var ise bu seilen
deeri JSP sayfamzda nasl kullanacaz ineceleyelim.
Radio Button ksaca aklamak gerekirse kullancmza ok seenekten sadece bir seenek
iaretlettirmek istiyorsak Radio Button kullanrz.
Html Formdan gelecek verileri Java Server Pageste nasl kullanldna daha nceki
derslerimizde bakmtk. Bu dersler;

JSP ile Veri Tabanna Kayt Eklemek (MySql)


JSPde ye Kayit Formu rnei
gibi yazlarmzda yapmtk. Yine asl mantk formdan gelen deeri
1

request.getParameter

olarak almak olacak. Yukarda paylatm dersler de de bunu yapmtk.


Radio Button oluturalm ve bu formdan gelen deeri Jsp sayfamza alalm.
index.jsp
1
2
3
4
5
6
7
8
9
10
11
12

<html>
<head>
<title>Burakkutbay.com</title>
</head>
<body>
<form name="secenek_formu" action="sonucgonder.jsp" method="post" >
<input name="radioButton" type="radio" value="dusunuyorum"
checked="checked"/> a
<input name="radioButton" type="radio" value="dusunmuyorum" /> b
<input name="radioButton" type="radio" value="daha sonra hatrlat" /> c
<input name="kaydet" type="submit" value="gonder" />
</form>

19 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

13
14

</body>
</html>

Ana sayfamzda formmumuzu oluturduk. imdi ise bu deeri jsp sayfasnda kullanmak.
sonucgonder.jsp sayfasnda Radio Buttondan gelen deeri alalm.
sonucgonder.jsp
1
2
3
4

<%
String kullanici_secenek= request.getParameter("radioButton");
System.out.println("Seeneiniz ::"+kullanici_secenek);
%>

lem tamam.
1

request.getParameter

ile seeneimizi aldk ve bu deer ile ilemlerimizi devam ettirebilmekteyiz.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/jsp-radio-button-kullanimi-java-serverpages.html/

JSP CheckBox Kullanm


Java Server Pages Derslerinde ki bu yazda CheckBox kullanmndan bahsedeceim. Java
Server Pagesin temel yapsn alma mantn eer bu yazya kadar okuduysanz fikir edinip
uygulamaya gemisinizdir diye dnyorum. Yaklak 40 derste Html ile ili dl oluyoruz.
Temel Html kullanmnn yannda bize ok lazm olan bileenlerin kullanmn da Java Server
Pages Derslerim de yer ayrmay dnyorum.
nceki derslerimiz de zaten form bileenlerinden JSP Radio Button Kullanmn
incelemitik. CheckBox RadioButtondan farkl olarak birden fazla seenei iaretlememize
olanak tanmaktadr. Yazlmlarmzda kullancya birden fazla deer seenek sunmak iin bu
bileen kullanlmaktadr.
Basit bir form oluturup formun iine CheckBox bileenimizi yerletireceiz.
Formumuz CheckBoxdan gelen deerleri bir diziye atacaz nk seilen veriler eer birden
fazla ise bunu unutmamalyz.Bu deeri ya da deerleri bir dng ile (dizimizin boyutu kadar

20 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

olacak) alacaz. Alnan bu deerleri isteimize gre kullanabilmek mmkn olacaktr. Ben
kullancya setii deerler iin kullanacam.
Formumuz u ekilde olacak.

Kodlarmz ise;
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

<%-Document : index
Created on : 10.Eki.2013, 21:42:47
Author : Burak
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<form name="form" onsubmit="index.jsp">
<h3>Se Been Al</h3>
<p><input type="checkbox" name="sec" value="Ben"/>Ben</p>
<p><input type="checkbox" name="sec" value="Secilmem"/>Seilmem</p>
<p><input type="checkbox" name="sec" value="Secerim"/>Seerim</p>
<p><input type="submit" value="Gnderici"/>
</form>
<%
String secimler[] = request.getParameterValues("sec");
if (secimler != null) {
for (int i = 0; i < secimler.length; i++) {
out.println(secimler[i]);
}
}

21 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

29
30
31

%>
</body>
</html>

olacaktr.
Burada dikkat etmemiz gereken nokta deerimizi getparameter ile aldktan sonra bir ilem
yapmadan gelen dizinin ii bo mu deil mi bunu kontrol etmeliyiz eer bo bir deer gelirse
sistemlerimiz ve biz zor duruma debiliriz.
Gzel kodlamalar yazlmclar.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/jsp-checkbox-kullanimi.html/

JSP Sayfalarda JavaScript Kullanmak


JSP sayfalarmzda Javascript nasl kullanabiliriz, deiken deerlerini nasl gnderip, alrz
gibi sorular cevaplandrmaya alacam.
Javascript bir betiktir. Sadece o yazlan sayfa zerinde anlk olarak alr ve sonlanr.
Java Server Pages Dersinde Javascripti nasl altrrz. Bunun cevab olduka kolay. Ayn
html sayfalarda nasl bir ilem uygulanyorsa aynsn yapmamz yeterli. Peki veri alverii
nasl olmakta sorusuna bir rnek yaparak cevap vereceim.
Standart bir Java Server Pages sayfas aalm. Bu sayfaya yapacaklarmz ise yle.

- Java Server Pages sayfas oluturacaz.


- Javascript yazacaz bir fonksiyon yazacaz. Bu fonksiyonun ad mesaj olacak.
- Jsp sayfamzda oluturduumuz ileti deikenimizin deerini Javascriptte ki
sonuc deikenine atyoruz.
- Bu deikenimizi uyary ekrannda gstermek iin sayfamzn dolmasn
beklemekteyiz.

Sonu sayfamz altrdmzda u grnt ile karlaacaz.

22 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

JSP Javascript

Ve kodlarmz.
1
2
3
4
5
6
7
8
9
10
11
12
13
14

<html>
<head>
<script language="javascript">
function mesaj(){
<% String ileti="Uzun yol katettim Java Scriptten Geldim"; %>
var sonuc="<%=ileti%>";
alert(sonuc);
}
</script>
</head>
<body onload="mesaj()">
Burak Kutbay Blog
</body>
</html>

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/jsp-java-server-pages-java-script-kullanmak.html/

Cookies (erez) Oluturma ve Kullanm


Jsp Dersimizin bu yazsnda erez oluturma ve oluturduumuz bilgileri oluturma
ilemlerini inceleyeceiz.
*
Cookies yani erez olarak adlandrdmz ey. nternet sitelerinin bilgisayarmzda brakt
bilgilerdir. Bu bilgiler ise o internet sitesine bilgilerini giren kiilerin erezleridir.
*
23 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

erez kavramn detayl olarak anlatmayacam ama kullanm kolayln ksaca bir rnekle
aklayaym. erez braklan bilgisayarda erezin zelliklerine gre kapattnz bir internet
sitesini tekrar giri yapmadan kendi sayfanzn getirilmesi salanabilir. Bir sayfadan baka bir
sayfaya bilgilerimiz tanmasnda da erez kavram kullanlabilmektedir.
Java Server Pageste erez Oluturma
1 <% String kullanici= Burak;
2
3 Cookie cookie = new Cookie (Cerez_kullanici,kullanici); %>
erez oluturma mant ksaca bu.
Cerez_kullanici bizim oluturduumuz bir isim ve bu ismin karlnda kullanici adl
deikeni eletirdik. Bunu daha sonra kullanacaz.
Java Server Pageste erez Sresi Belirleme
Bu erezlerin bir sresi vardr. Bu belirlediimiz sre kadar saklanr ve ileme konulur. Bu
sreyi belirlemek iin ise erezimi oluturduktan sonra;
1

<% cookie.setMaxAge(10000); %>

Sremizi oluturduk. Bu erezimizin yaam sresidir.


Java Server Pageste erezi Kaydetme
Kaydetme tabiri ne kadar doru bilemiyorum ama erezimizi oluturduk, sresini belirledik
ve ardndan bu deerleri kullancnn bilgisayarna kayt edeceiz.
1

<% response.addCookie(cookie); %>

Bu kod ile kullancnn bilgisayarna kaydetmi olduk.


Java Server Pageste erez Bulma lemi
erezi bulma ilemi bize verilerin tekrar geri gelmesini ve o kullanc eer erezin sresi
bitmemi ise kendine izin verilen sayfalarda gezinirken internet sitesi gezen kiinin bilgilerini
hatrlayp o kullancya zg bilgileri gstermi olacak.

1
2
3
4
5
6
7
8
9

<% String saklanan_cerez= Cerez_kullanici;


Cookie cookies [] = request.getCookies ();
for (int i = 0; i < cookies.length; i++){
if (cookies [i].getName().equals (saklanan_cerez)){
String bulunan_cerez_ad = cookies[i];

24 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

10
11
12
13

break;
}} %>

Burada dikkat etmemiz gereken nokta biz bulunan erezin adn aldk. Yani .getName
fonksiyonu ile alm olduk. getValue() deyeseydik bize bu erezin deerini gnderecekti.
Java Server Pageste Bulunan erezi Kullanma
erezimi bulduk ve bu erezimizden gelen deeri hogeldiniz deeri
1

<% out.println("Hogeldiniz Sayn" , bulunan_cerez_ad); %>

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/jsp-de-cookies-cerez-olusturma-ve-kullanimi-javaserver-pages.html/

JSP Session Oluturma


Java Server Pages Derslerimizde bugn Session oluturmay greceiz.
*
Yaptmz internet sitemizde kullanc veri girii yaptktan sonra kendi zel sayfalar arasnda
dolamaldr. Bu dolam ileminde kullanc bilgilerini kaybetmeden gezmelidir ki kullanc
kendi bilgilerini grerek ve ya kendine zel sayfalarnda salkl bir ekilde dolamal ve dier
kullanclar baka kullanclarnn bilgilerini grmemelidir.
*
Session oturum ynetimi her kullancya zel olarak oluturulur. Dier kullanclar iin ise
farkl farkl sessionlar almaktadr. Oturum sresi deitirilmedii srece 30 dk dr.
imdi rneimize geelim. Oluturduumuz sayfann kullanc giri sayfas olduunu ve bu
kullanc giri yaptktan sonra kendine zel sayfasna ynlendirilecek.
Kullanc Giri Formu muzu yapalm.
1
2
3
4
5

<form name=login Action=giriskontrol.jsp metod="post">


Kullanc Adnz: <input type="text" name="adi" > <BR>
ifreniz:<input type="text" name="sifre" > <BR>
<input type="submit" value="login">
</form>

25 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

Kullancmz bu formdan bilgilerini girecek. Ardndan kontrol sayfamz veya bean diye tabir
ettiimiz java snfmzda kontrol ettireceiz. Bean kavramna daha sonra geleceiz. Kullanc
login tuuna bast zaman giriskontrol.jsp sayfamza arp kontrol ettireceiz.
Eer girilen veriler doru ise Session oluturup kullancnn ana sayfasna ynlendireceiz. Bu
kullanc ana sayfasna session olumayan kullanc giremeyecktir.
giriskontrol.jsp sayfamz yle olacaktr.
1
2

String kullaniciadi=request.getParameter("adi");
String kullanicisifre=request.getParameter("sifre");

Parameter metodu ile bilgileri aldk imdi yapacamz ilem ise elimizdeki veriler ile
kullancdan gelen verileri karlatrmak. Bu veriler eer doru ise session ap kullanc
sayfasna ynlendireceiz.
1
2
3
4
5
6
7
8
9
10

if(kullaniciadi.equals("burak") && kullanicisifre.equals("1234"))


{
HttpSession anasayfa = request.getSession(true);
anasayfa.putValue("kullanici_giris", "gecerli");
response.sendRedirect("./kullanicianasayfa.jsp");
}
else
{
out.println("Oturum ama baarsz");
}

HttpSession metodu ile oturum ynetimi atk ve anasayfamza


ynlendirdik. kullanicianasayfa.jsp sayfasnda oturum sadece oturum aan kullanc
grntleyebilecek. Oturum amayan kullanc kullancya ait sayfay grntlemeyecek.
Bunun kontroln yapalm.
1
2
3
4

if(anasayfa.getValue("kullanici_giris")!="gecerli")
{
response.sendRedirect("index.jsp");
}

Kodlar ile oturumu kontrol etmeyi salamaktadr.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/jsp-session-olusturma-java-server-pages.html/

26 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

JSP Session Kapatmak


JSP Derslerimizin bu konusunda JSP sayfalarnda atmz sessionlar kapatma ilemi nasl
yaplr ona bakalm. JSP Session Oluturma Session oluturma ve o bilgileri nasl
kullanabileceimizi bahsetmitim.
Ksaca aklamak gerekir ise Session kullancnn internet sitenizde gezindii srece
bilgilerinin kayt atnda tutulmas diyebilirim.
Bu sessionu atk ve kullanc ilemini bittiinde logout olmak isterse bu sessionu
kapatmalyz. Kullancnn hesabn gvenle kapatsn. Logout sayfanza eklemeniz gereken kod
budur.
1

<%@page language="java" session="false"%>

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/jsp-session-kapatmak-java-server-pages.html/

JSP Sayfas arma (JSP Include File)


Java Server Pages Derslerimize devam ediyoruz. Bugnk dersi bir dip not olarak
grebiliriz.Java Server Pages sayfalarmz bir blok halinde olumamakta. Genellikle ayr ayr
blmlemeler halinde. Jsp sayfalarm kullanmak istediim sayfalara arp kullanyorum.
Bylelikle bir blokta yaplan deiiklik dier sayfalar etkilememekte.
Gnmz de de web sayfalar blmler halindedir. rnek verecek olursam u an bu sitede
yazy okuduunuz blm single.php sayfasdr. st ksmda grnen balk ve
menler header.phpsayfann en altnda grnen blok ise footer.php sa blok
ise sidebar.php sayfalardr.
Bu sayfalar bir btn halinde gzkmesinin ise include denilen yntem ile gereklemekte.
Bir sayfaya dier sayfalar ararak bi btn oluturmaktadr. WordPressten yola karak
bizim de JSP projelerimizde sayfalar kullanp ana sayfamza ya da kullanmak istediimiz
sayfalara armak elbette mmkn.

27 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

Bu islem olduka basit ve tek satrlk bir kod. Ancak tasarmc olmadm iin ve CSS bilgim
olduka zayf olduu ben sadece sayfa arrm gerisi beni ilgilendirmez.
st resimde olduu gibi tasarm uygunluunu salayacak olan tasarmc ile bu include etme
ilemlerinde
ok
fazla
diyalog
ierisine
girmezsiniz
umarm.

JSP sayfasna baka bir JSP Sayfas armak

index.jsp
1
2

<%@ include file="altsayfa.jsp" %>


<%@ include file="altsayfa2.html" %>

Bu komut yardm ile sayfamz arabilirsiniz. Ben JSP sayfalarn armak diye balk atsam
da .html uzantl sayfalarnzda ve destekleyen dier sayfalarnz bu komut yardm ile
arabilmeniz mmkn.
Baka bir JSP dersinde grmek zere.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/jsp-sayfasi-cagirma-jsp-include-file.html/

28 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

Java Server Pages (JSP) Cache Control


Java Server Pages Derslerimizin bugnk konusu gvenlik, verimlilik ile alakal olacak. Cache
Control yaptmz sayfalarn tarayclar ile nbelleklenme sresini ayarlamamaz mmkn.
Cache Controln aada aklayacam zellikleri ile taraycmza yaptmz yazlmn
geerlilik sresini belirlemek mmkn. nternet tarayclar genellikle bu bilgileri ister bu
bilgileri taraycmza vermek internet taraycsnn yazlmmz tanmas ayrca kullandmz
sistemlerin az kaynak harcamasna olanak salamaktadr.
Cache yapsna belirli bir sre vererek sayfalarmzn tekrar sunucumuzdan ekilmesine izin
vermememiz mmkn ancak dikkat edeceimiz durumlar bulunmakta. Bu Cache yaps uzun
sre gncellenmeyeceinizden emin olduunuz sayfalarda kullanmak daha salkl olacaktr.
Sk gncellenen sayfalarda varsa zellikle yazlmsal deiikliklerde bu Cache sresini
uzattnz anda yaptnz deiikliler grntlenmeyebilmektedir. zellikle yksek gvenlik
isteyen yazlmlarnzda Cachelemeyi durdurmak daha salkl olacaktr.nk gvenlik
asndan yaplan bir deiiklik Cache durdurulmad ise kullanclarda o an devam
etmesine neden olabilmektedir.
Cache sistemini ksaca anlatmaya altm imdi ise Cache Control Java Server Pageste
nasl yaplr inceleyelim.
Cache Control sistemi Setheader yntemi uygulanmaktadr.
1
2
3

<%
response.setHeader ("Cache-Control", "public");
%>

Sayfamzn nbellekleme istemiyorsak


1

<% httpResponse.setHeader("Cache-Control","no-cache"); %>

Belirli bir sre vermek istiyorsak

1 <%
2 response.setHeader ("Cache-Control", "max-age = 1500");
3 %>
yazmamz yeterli olacaktr.
Cache varsa tamamen temizlemek ve cache durdurmak iin
1

<%

29 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

2
3
4
5

response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");
response.setDateHeader ("Expires", 0);
%>

Bu kontroller ile birlikte sistemimizin kaynaklarn daha verimli kullanmaya balayabiliriz.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/java-server-pages-jsp-cache-control.html/

Jsp Request Metodlar


Request Snf bizim isteklerimizi yerine getirmektedir. Request demek istek,bilgi demektir.
Biz bu bilgiyi almak iin Request snfnn metodlarn kullanmaktayz.Bu snf ile ister
sunucudan isterseniz de kullancdan bilgi alm konusunda bu snf ve metodlarn
kullanacaz.
1
2
3
4
5
6
7
8
9
10
11
12

<%@page contentType="text/html" pageEncoding="UTF-8"%>


<%@ page import="javax.servlet.http.HttpUtils,java.util.*" %>
Request Metodu
JSP stek Metodu: <%= request.getMethod() %>
stek URI: <%= request.getRequestURI() %>
stek Protokol: <%= request.getProtocol() %>
Server Ad: <%= request.getServerName() %>
Server Port: <%= request.getServerPort() %>
Uzak Adres: <%= request.getRemoteAddr() %>
Uzak Host: <%= request.getRemoteHost() %>
Local: <%= request.getLocale() %>
Bulunduun URL: <%=request.getRequestURL()%>

kts ise yle.


Request Metodu
JSP stek Metodu: GET
stek URI: /WebApplication1/
stek Protokol: HTTP/1.1
30 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

Server Ad: localhost


Server Port: 8084
Uzak Adres: 127.0.0.1 Uzak Host: 127.0.0.1
Local: tr_TR Bulunduun URL: http://localhost:8084/WebApplication1/

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/jsp-request-metodlari-java-server-pages.html/

JSP Yerel Tarih Saat Bilgilerinizi Almak


Bu gn bir uygulama yapacaz bu uygulama ile kullanc bilgisayarnn tarih ve saat bilgilerini

alacaz. Bu bilgileri kullanma ihtiyac hissedebilirsiniz.


ok basit bir yntem ile bu bilgileri alacaz. Java dilinde yaplan her durum Java Server Pages
ile yapmak mmkndr. Bu rnek ile beraber derslerimizin bir ilkini gerekletireceiz.
Kullanc bilgisayarndan bir bilgi alacaz (:
Adm adm neler yapacaz aklaym o halde.
KTPHANELER
JSP sayfamzda kullanacamz ktphaneler 4 tane bunlar;
1
2

<%@ page import="java.io.*,java.util.Locale" %>


<%@ page import="java.text.DateFormat,java.util.Date" %>

java.io : Giri, k ilemleri iin.


java.util.Locale : Kullanc bilgisayarna erimek iin.
java.text.DateFormat : Alacamz tarih ve saat verisinin yaynlama formatn dzenlemek
iin.
java.util.Date : Tarih bilgisini almak iin.
JSP SAYFASI
index.jsp
1
2
3
4
5

<%@ page import="java.io.*,java.util.Locale" %>


<%@ page import="java.text.DateFormat,java.util.Date" %>
<%
Locale yerel = request.getLocale( );

31 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

String tarihsaat = DateFormat.getDateTimeInstance(


DateFormat.FULL,
DateFormat.SHORT,
yerel).format(new Date( ));
%>
<html>
<head>
<title>Burak Kutbay Yazlm</title>
</head>
<body>
<center>
<h1>
Tarih , saat: <% out.print(tarihsaat); %>
</h1>
</center>
</body>
</html>

Kodu yakndan incelerseniz ok fazla yaptmz bir ey yok. Bir deiken oluturuyorsunuz bu
deikeni tanmlarken eklediimiz ktphanenin zelliklerini tanmlayarak ve ardndan bu
deikeni ekran yazdrmaktan ibaret.
Peki bu deikene neler tanmladk biraz aklamaya alaym. DateFormatn tarih ksmnn
hepsini saat ksmn sadece saat ve dakikasn aldk. Full ve Short ksmlar ile bunu salam
olduk.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/jsp-yerel-tarih-saat-bilgilerinizi-almak.html/

Java Server Pages Otomatik Yenileme


Jsp Derslerimize kaldmz yerden devam ediyoruz. Konumuz Java Server
Pages sayfalarmzda otomatik yenileme nasl olur buna bakacaz. Oluturduunuz
sayfalar otomatik yenileme devri artk oktan geti bu yenilemeler ajax gibi teknolojiler ile
salanmaktasa da konumuz Java Server Pages olduu iin her ayrnty karmadan bloguma
not etmek istiyorum.

32 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

Otomatik yenileme kodlar sayfalar belirli bir sre ierisinde tekrar yenileyerek amacnza
hizmet etmektedirler.
Java Server Pagesde otomatik yenileme ilemi aadaki kod blou ile olmakta.
1

<%response.setIntHeader("Refresh", 1); %>

Otomatik yenileme kodundaki rakam saniye cinsinden otomatik yenileme sresini


belirlemektedir.Bu kodun fazla aklanacak bir durum olduunu dnmyorum.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/java-server-pages-otomatik-yenileme.html/

JSP URL Bulma ( getRequestURL )


Dersimizin bugnk konusu Java Server Pages sayfamzn aktif olduu URL adresini bulmak
olacak. Yaznn bal konuyu tam anlatmamakta maalesef. Dzgn bir balk bulamadm.
Sayfamzn bulunduu linki bulmak iin
1 <% = Request.getRequestURL ()%>
yntemini kullanmamz yeterlidir.
Bu yntem ile istek edilen ve ya istek alnm olan URI ve ya URLleri alarak bir ksayol
butonu, fonksiyon ynlendirme ilemleri yapabiliriz.
Bu yntem btn web konteynerleri iin ayndr. Bir deiiklik yoktur. yi kodlamalar.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/java-server-pages-url-bulma-getrequesturl.html/

33 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

JSP Kullancnn Dil ve lke Bilgisini


Bulmak
JSP sayfamz kullanan kiinin bulunduu lke ve dilini nasl reniriz buna bakacaz.
Kullanclarmzn belirli istatistiklerini tutmak ve ya bana gre en nemlisi bulunduu konum
veya dile gre Java Server Pages sayfalarmzda farkl ierik, farkl sayfa, farkl ynlendirme ve
ya isteimize bal ne var ise bunu yapabilmemize imkan salayacaktr.
Bu kullanc bilgileri ya IP adresinden alarak bir sonu kartrz ya da tarayc bilgilerinden
ulaarak temin edebiliriz. Kullanlan sistem isteinize gre deiebilir. Bu dersimizde IPden
deil Java ve tarayc bilgilerinden bu bilgilere erieceiz.
java.util.Locale
Locale snfn kullanarak erieceiz. Bunlar;

locale.getLanguage();
locale.getCountry();
locale.getDisplayCountry();

metodlarn kullanarak erieceiz.


Metodlar kullanmamz iin Java Server Pages sayfamza eklememiz gereken ktphaneler
ise;
1
2
3

<%@ page import="java.io.*"%>


<%@ page import="java.util.Locale"%>
<%@ page import="javax.servlet.http.* "%>

Java Server Pages sayfamza ekledikten sonra yapmamz gereken Localize snfnn
metodlarn kullanmak olucak.

locale.getLanguage();
Kullancnn yazm dilini lke kodu olarak gsterir.

locale.getCountry();
Kullancnn lkesini kod olarak gsterir.

locale.getDisplayCountry();
Kullancn lkesini gsterir.
Java Server Pages sayfamza
1

<%

34 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

2
3
4
5
6
7
8
9

Locale kullanici = request.getLocale();


String dil = kullanici.getLanguage();
String ulke_kod = kullanici.getCountry();
String ulke = kullanici.getDisplayCountry();
out.println(dil);
out.println(ulke_kod);
out.println(ulke);
%>

eklememiz yeterli olacaktr.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/java-server-pages-kullanicinin-dil-ve-ulke-bilgisinibulmak.html/

Java Server Pages Hata Sayfas Oluturma


Bu dersimizde oluturduumuz JSP sayfalarmza hata sayfas oluturmay deneyelim. Bu hata
sayfas internet sayfalarnda grlen HTML sayfas hatas deil. Java Server Pages tarafndan
oluan hatalar karmza karmaya ynelik zel bir sayfa yapacaz.
*
Bu hata sayfasn kullanc tarafna gstermek ne kadar mantkl bilemiyorum ama hata
sayfasn zelletirerek kullancya anlayaca bir dil ile iletebilir. Jsp sayfalarmz da
beklenmedik bir hata ile karlatn da da bu hata sayfasn arabiliriz.
imdi rneimize geelim.
Bir hata yaratmamz gerek, bu nasl salarz sizce? Bir deikende saklanmamas gereken
deeri saklamak istediimizde ve ya matematiksel ilemlerde ki yanl durumlar ile
oluturmak istediimiz hatay salayabiliriz.
Bu rneimiz iin hemen oluturulam.
Bu hatamz index.jsp sayfamzda olsun. Hata sayfamz
ise errorpage.jsp olacak. index.jsp sayfasnda bir hata olduu zaman errorpage.jsp sayfasna
ynlenecek ve gerekli uyary vereceiz.
1
2
3

<%@ page errorpage="errorpage.jsp" %>


<title>blog.burakkutbay.com Jsp Dersi</title>

35 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

4
5
6
7
8

<%
int sayi = 1;
sayi =sayi/ 0;
%>

index.jsp sayfamzda errorpage.jsp sayfamz kullanmak iin tanttk.

1
2
3
4
5

<%@ page iserrorpage="true" %>;


HATA
yanl bir ilem gerekletirildi.

errorpage.jsp sayfamza bilgilendirme mesajn yazdk. Bylelikle istenmeyen durumlara kar


nlemimizi aldk. Her sayfa iin ayr bir hata sayfas oluturmaya gerek yok bir hata sayfas
yaptktan sonra gerekli sayfaya import ederek kullanabiliriz.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/java-server-pages-hata-sayfasi-error-pageolusturma.html/

JSP Hata Sayfalarn Ynetmek


JSP Dersinde bugn Java Server Pageste yazm olduumuz kodlarn yanl yazlmas,
kullanc tarafndan gelen hatal giriler ve ya server yznden gelen sorunlarda hata sayfalar
ile karlatrz. Bu hata sayfalar Derleyici tarafndan taraycda gzkr. Kt niyetli kiiler
bu hata kodlarndan faydalanarak sistemi amaya alabilirler.
Daha nceden yazdm Java Server Pages Hata Sayfas Oluturma yazsnda kendi
programmzda ki kullanc tarafndan veri girii srasnda oluan hatalarda oluturduumuz
hata sayfas idi. Bu gn yapacamz hata sayfalar ise kendi istediimiz dnda (kontroll
ettiimiz sayfalar dnda) kalan hata uyarlarnn hepsini kullancya gstermemek.
UYGULAMA
ok basit bir ekilde hata sayfalarn istediimiz dzene sokabiliriz. web.xml sayfas
oluturacaz bu xml sayfasnda bir hata olduunda servern ne yapmas gerektiini
syleyeceiz. Diyeceiz ki, hata.jsp sayfasna git.
36 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

web.xml
1
2
3
4

<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/hata.jsp</location>
</error-page>

Bu xml sayfasnda hata tipini Throwable olarak setik. Bu tip hatalarda hata.jsp sayfasna
ynlecek.
hata.jsp
1
2
3
4
5

<%@ page isErrorPage="true" import="java.io.*" contentType="text/plain"%>


<%
exception.printStackTrace(printWriter);
out.println("istenmeyen bir durum olutu ltfen tekrar deneyiniz");
%>

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/java-server-pages-hata-sayfalarini-yonetmek.html/

JSP Hata Mesaj Gstermek


Java Server Pages Derslerimizin bu yazsnda sayfalarmzda hata mesajlar gstermek
istediimizde neler yapmalyz inceleyeceiz.
Bu yazda Java kodu olmayacaktr. Html ve Javascript kullanlarak gerekletirilecektir. Bu
yapy JSP tarafna modlnze gre deikenlik gsterebilir.
Bir formumuz olacak bu formda bo geilemez alanlar olduunu varsayarak kullancya bo
geilemez olduunu hatrlatacaz. Alanlar tam doldurduunda ise Hogeldiniz mesaj
vereceiz. Bu mesaj verme durumunu Javascript ile gerekletireceiz.
Javascript ile yapacamz kontrol ve uyar verme durumu basit bir if ile gerekletirken Html
formumuzdan Javascript fonksiyonuna formumuzdaki deerleri gndereceiz.Bu hata mesaj
gsterme durumunu Javascript yerine Ajax kullanarak
Basit bir Html Formu ve Javascript fonksiyonu yapacaz.

37 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

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
30
31
32
33
34
35
36
37
38
39
40

<html>
<head>
<title>Burak Kutbay</title>
</head>
<body>
<html>
<head>
<script>
function kontrol(){
if (document.form.adi.value == ""){
alert ( "Adnz Yaznz" );
return false;
}
if (document.form.sifre.value == ""){
alert ( "Sifrenizi Giriniz" );
return false;
}
alert ( "Hogeldiniz" );
return true;
}
</script>
</head>
<body>
<form name="form" method="post" onsubmit="return kontrol();">
<table>
<tr><td>Adiniz</td>
<td><input type="text" name="adi" value=""></td>
</tr>
<tr><td>Sifre:</td>
<td><input type="password" name="sifre" value=""></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="Submit" value="Giris"></td>
</tr>
</table>
</form>
</body>
</html>
</body>

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/java-server-pages-hata-mesaji-gostermek.html/

38 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

JSP MySql Balants Kurmak


JSP Sayfamz Veritaban Ynetim Sistemlerinden biri olan MySqle nasl balayacaz, onu
greceiz.Veritaban ile yapacamz Jsp sayfalar arasnda ki ba nasl kurulur? Sorularnn
cevaplarn arayalm.
*
JSP derslerimizde NetBeans kullanyorum. ncelikle yapmamz gereken ey MySql
ktphanesini kendi projemizin ktphanesine eklememiz gerekiyor.
Projemizin Library blme sa tkladktan sonra Add Library seeneine tklayalm

Mysql Ktphanesi Eklemek

Ardndan karmza kan pencerede Mysql JDBC Driver seeniini bulduktan sonra Add
Library butonuna basarak projemizin ktphanesine eklemi bulunuyoruz.

Mysqli Proje Ktphanemize Eklemek


<% String driver = "com.mysql.jdbc.Driver";

39 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

2
3

String url = "jdbc:mysql://localhost/veritabaniadi";


Connection con = null; %>

Projemize MySql ktphanemizi ekledikten sonra JSP sayfamza yapmamz gereken ilemlere
geelim.
Dikkat: Veritaban balantlar Bean denilen kavramlarl yaplmas gvenlik iin daha
sallkldr. leri ki derslerde deineceim.
Jsp Sayfamzda Veritaban balantsn kuralm yapacaklarmz ksaca zetleyecek olursak
1.
2.
3.
4.

JSP sayfamzda veritabanna balant iin gerekli olan srcy altracaz


Yklenip, yklenmediini kontrol edeceiz.
Mysql Balantmz kuracaz.
Jsp ile Mysql balantmz kurulup kurulmadn kontrol edeceiz

Bu yazm olduum her bir adm try cath blouna alp kontrol ettireceim. JDBC
yklenmesi srasnda ve ya Mysql balants salanrken oluan hatalar kontroll bir biimde
grm olacam.
Balant srasnda kullanacamz tanmlamalar yazalm ardndan aklayalm.

JDBC srmz, balanacamz veri taban yolunu ve balant iin gerekli olan con adl
deilenimizi oluturduk. Burada dikkat edilmesi gereken nokta veritabaniadi . Mysql de
oluturduunuz Shema ismidir bu.
imdi JDBC srmz ykleyelim try-catch blogu iine alarak her durumu kontrol ettirelim.

1
2
3
4
5
6
7

<%try {
Class.forName(driver);
out.println("JDBC surucu basari ile yklendi.");
} catch (Exception e) {
out.println("JDBC surucu Yklenemedi.");
System.exit(0);
}%>

imdi JSP ile Mysql balantmz kurmaya geldi kodlarmz yazalm ve aklmamz yapalm.
1
2
3
4
5

<%try {
con = DriverManager.getConnection(url, "root", "root");
out.println("Veritabanna balanld.");
} catch (Exception e) {
System.out.println("Balant Kurulamad"");

40 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

6
7

System.exit(0);
}%>

Burada dikkat edeceimiz husus con deikenindeki root ve root blmleridir. lk root
Mysql veritabann yneten kiinin kullanc ismidir. kinci root ise ifremizdir. Bu
deiiklikleri yaparak veritaban balantmz oluturabiliriz.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/jsp-ile-mysql-islemleri-baglantisi-kurmak.html/

Veri Tabanna Kayt Ekleme (MySql)


JSP Dersimizin bu blmnde JSP ile Veri tabanna kayt ekleyeceiz.
JSP Sayfamzda Ad, Soyad ve l alanlarmz olacak. Kullanc bu formu doldurup kaydet
butonuna basacak ve bu bilgiler veritabanmza kayt olacak.
Jsp ile Kayt Formu
Bu tasarmn kodlar ise
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Kayt Formu Burak Kutbay</title>
</head>
<body>
Kayt Formunu Ltfen Doldurunuz.
<form id="form2" name="form2" method="post" action="kontrol.jsp">
<table>
<table width="200" border="1">
<tr>
<th><label for="AD">ADINIZ </label></th>
<th><input type="text" name="AD" id="AD" /></th>
</tr>
<tr>
<th> <label for="SOYAD">SOYADINIZ</label></th>
<th><input type="text" name="SOYAD" id="SOYAD" /></th>

41 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

19
20
21
22
23
24
25
26
27
28
29

</tr>
<tr>
<th><label for="il">LNZ</label></th>
<th> <input type="text" name="il" id="il" /></th>
</tr>
<tr><th></th><th><input type="submit" name="gonder" id="gonder" value="KAYIT
OL" /></th></tr>
</table>
</form>
</body>
</html>

Bu sayfamzn form elementi post yolu ile verilerimizi kontrol.jsp sayfasna gnderecek.
Btn ilem kontrol ettirme sayfasnda olacak ve haliyle de java kodlarmz da o sayfada
olacak.
Konrol.jsp sayfasnda yaplacak ilem eer verilerimiz veritabanmza kayt oldu ise Kaydnz
Veritabanmza Yapld. Yaplmad bir durumda ise Kaydnz Veritabanmza yaplmad yazs
gsterecektir.
imdi Kontrol.Jsp sayfamz yazalm.
Bu sayfamzda dikkat edilecek husus kayt ol formundaki elementlerin name lerini almak
olacak.
Jsp Sayfamzda import edeceimiz ktphaneleri ekleyelim ncelikle.
1
2
3

<%@ page import="java.io.*" %>


<%@ page language="java" import="java.sql.*"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

Bu kodlarla dil tanmlarmz ve ktphanelerimizi ekledik. imdi yapacamz ilem ise


formdan kontrol.jsp sayfamza gelen verileri almak olacak.
1
2
3

String ADI = request.getParameter("ADI");


String SOYAD = request.getParameter("SOYAD");
String il = request.getParameter("il");

Koddan da anlald zere request.getParameter fonksiyonu dier formdan gelen verileri


almaktadr.
imdi Veritaban balantmz yapalm.
1
2

<%
String driver = "com.mysql.jdbc.Driver";

42 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

String url = "jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=UTF8";


Connection con = null;
int id = 0;
try {
Class.forName(driver);
} catch (Exception e) {
System.exit(0);
}
try {
con = DriverManager.getConnection(url, "root", "root");
} catch (Exception e) {
System.exit(0);
}
%>

Buraya kadar neler yaptk bir bakalm.

Kayt Formu oluturduk.


Kontrol sayfamzdan parametreleri aldk
Mysql balantmz yaptk.
imdi sra geldi bu verileri veritabanmza kayt etmeye.
Verilerimizi
veritabanmza
kayt
etmenin
ben PreparedStatement denilen yntemle yapacam.

bir

ok

yolu

var

ama

Veritabanmza kayt ilemi iin gerekli kodlarmz yazalm. Aklamay ise ardndan.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

<%try {
PreparedStatement preStmt;
preStmt = con.prepareStatement("INSERT INTO KULLANICI(ADI,SOYAD,il) VALUES
(?,?,?)");
preStmt.setString(1, AD);
preStmt.setString(2, SOYAD);
preStmt.setString(3, il);
preStmt.executeUpdate();
preStmt.close();
con.close();
out.println("Kaydnz Veritabanmza Yapld")
}
catch (Exception e) {
out.println("Kaydnz Veritabanmza yaplmad")
}
%>

43 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

PreparedStatement deikenimizi yazdk ve o deikene SQL komutunu yazdk. Values


ksmndaki deikenleri ayn veri tipine gre srasna gre yazdk. preStmt.executeUpdate()
komutu ile veritabanmza gnderdik ve kapattk. En son olarak ise balantmz kapattk.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/jsp-ile-veri-tabanina-kayit-ekleme-mysql.html/

Veri Tabannda Kayt Arama (MySql)


Jsp Derslerimize devam ediyoruz. Bu derse kadar ne yaptk nce bir gzden geirelim.
JSPye giri yaptk Merhaba Dnya dedik.
JSP ve Mysql Balants yaptk.
Jsp ile Veri Tabanna Kayt Ekledik.
Sras ile devam ediyoruz. Jsp ile veritabanmza kayt ekledikten sonra bu kaytlarmzdan bir
arama ilemi gerekletirmek zorunlu bir hal alacaktr. Onlarca kaytl bilgileri ad ya da
soyad na gre arattrp o kullancnn bilgilerini karmza getireceiz.
Arama yaptrmak JSP ile Mysql arasnda ki balantda veri tabanmzdan deer almamz
salar.
Bu arama ilemlerinde aranacak bilginin nemine grea adna, iline veya soyadna gre
arattrma yapabiliriz.
Bizim yapacamz rnekte kullanc adna gre arama yaplacak ve bulunan deere gre
kullanc ad , soyad ve ilini bir tablo ierisinde gstereceiz.
JSP importlarmz oluturalm ilk nce.
1
2
3

<%@ page import="java.io.*" %>


<%@ page language="java" import="java.sql.*" %>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

lk olarak yapacamz ilem arama.jsp sayfasn tasarlamak. Grnm resimdeki gibi


olacaktr.
44 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

JSP Arama Formu

Bu arama formumuzun kodlarn oluturalm.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Balksz Belge</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="<b
style="color:white;background-color:#880000">arama</b>.<b
style="color:black;background-color:#ffff66">jsp</b>">
<p>
<label for="arama_ad">Aranacak Ad</label>
:
<input type="text" name="arama_ad" id="arama_ad" />
<input type="submit" name="ara" id="ara" value="<b
style="color:white;background-color:#880000">Arama</b> Yap" />
</p>
</form>
</body>
</html>

Her zaman yaptmz gibi JDBC srcs ve MySql veritaban balantmz oluturalm.

1
2
3
4
5
6
7
8
9
10
11
12
13

<% request.setCharacterEncoding("UTF-8");
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=UTF8";
Connection con = null;
try {
Class.forName(driver);
} catch (Exception e) {

45 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

14
15
16
17
18
19
20
21
22
23

System.exit(0);
}
try {
con = DriverManager.getConnection(url, "root", "root");
} catch (Exception e) {
System.out.println("Mysql Bilgisi : Balant Kurulamad" + e + "");
System.exit(0);
}
%>

Balantmz oluturduk. Formumuzu tasarladk. Arama Yap butonuna basldnda


formumuzun tekrar geleceiyol arama.jsp sayfasna ynlenecek. Jsp get.parameter yordam
ile gelen ad deerini alacaz. formumuzdan gelen ad deerini alalm ve bir String
deikenine atalm.
1
2
3
4

<%
request.setCharacterEncoding("UTF-8");
String kullanici_adi = request.getParameter("arama_ad");
%>

Kullanc admz formmumuzdan aldk imdi yapacamz ilem Sql komutu ile arama ilemi
yaptrmak.

1
2
3
4

request.setCharacterEncoding("utf-8");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM KULLANICI where ADI='" +
kullanici_adi + "' ;");

Sql sorgusu ilemini yaptkdrdk. Oluan deerler rs adl deikenimizde bu verileri ekmek
iin bir yol var. Bu yol while dngs ierisinde deer next komutu ile devam eder ve deer
bittiinde kar.
1
2
3
4
5
6
7

<&out.print("<table>");
while (rs.next()) {
out.println("<tr><td>" + id + "</td>");
out.println("<td>" + rs.getString("ADI") + "</td>");
out.println("<td>" + rs.getString("SOYADI") + "</td>");
out.println("<td>" + rs.getString("PAROLA") + "</td>");
out.println("<td>" + rs.getString("EMALI") + "</td>");

46 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

8
9

out.println("<td>" + rs.getString("Il") + "</td></tr>");}


out.print("</table>");%>

kan sonular bir tablo ierisinde gsterir. Birden fazla kayt var ise bir alt satra geip
deerleri yazdrmaya devam eder.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/jsp-ile-veri-tabaninda-kayit-arama-mysql.html/

JSP Trke Karakter Sorunu


Java Server Pages Derslerinde bugn oka karlaan bir sorunu zeceiz.Java Server Pages
teknolojisi ile dinamik sayfalarmzdan veritabanmza deerler gnderiyoruz. Bu deerler
veritabannda salkl bir ekilde tutulmak zorunda.
Dinamik sayfamzdan veritabanna deerler gnderdiimizde JSP Trke Karakter Sorunu
yaamaktayz.
Trke karakterler ,,,, gibi harfler veritabanmzda deiik semboller ile gzkmektedir.
JSP Trke Karakter Sorunu nu zmek iin iki farkl yol bulunmaktadr.
Bunlardan ilki
1

<%@page contentType=text/html;charset=ISO-8859-9 pageEncoding=ISO-8859-9


%>
Bu kod sayfamzn karakter kodunu belirtmektedir.
Bu kod hala sorunumuzu zmyor ise ikinci bir yol is udur.
1
request.setCharacterEncoding("utf-8");
Bu kod gelen parametrelerin utf-8 kodunda gzkmesini salamakta.
Eer bu kod da sorunumuzu zmyor ise veritabannzn dil kodunu kontrol etmenizi
neririm.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/jsp-de-turkce-karakter-sorunu-java-server-pages.html/

47 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

Jsp Verileri Dinamik Olarak Sayfalatma


JSP Derslerimizin bu yazsnda Java Server Pages zerinden veritabannda ki tm verileri ya
da istediiniz belirli bir blm dinamik olarak sayfalatma ilemini yapacaz.
*
Bu derste ile beraber geen yazlarn biraz tekrarn yapm olacaz ardndan verilerimizi
sayfa sayfa okumu olacaz. Yapmak istediim eyi biraz daha aklamak istersem;
veritabanmzda 30 tane kayt var diyelim bu 30 kayt bir anda grntlemek istemiyorum.
Bir buton koyup her sayfada bir kayt gstermek istiyorum.
Bunun iin 30 sayfa ve ya kayt saymza gre farkl sayfalar yapmayacaz. Balkta da
grld zere Dinamikten kastm bu idi. Bu ilemi nasl yapacaz biraz dnelim. Her bir
kayt iin sayfa oluturmayacaksak yapacamz ey btn verileri alp tek tek gstermek.
Bunun cevab ise yaznn devamnda.
Bu rnei uygulamak iin bir senaryo oluturalm. Bu senaryo da;

1.
2.
3.
4.

Rehber ad altnda bir veritabanmz olacak.


Bilgi tablosunda,
id (PK,NN)
adi (VARCHAR 45)
soyadi (VARCHAR 45)
numara (VARCHAR 45) kolonlar olsun.
Bu tabloya biraz bilgi girii yapalm ve uygulamamzda dnelim.

Biraz bilgi girdikten sonra verilerimiz bu ekilde;

Bir Java Server Pages sayfas oluturarak balayalm. Bu sayfamz verilere ulamak iin
balant yapmamz salayacak. Bu balanma ilemini daha detayl olarak JSP MySql
Balants Kurmak adl dersimde bulabilirsiniz.
Yapacaklarmz.
1. Veritabanmza balanacaz.
2. Bir verisayacmz olacak. Bu veri sayacmz sayesinde toplamda ka kayt
olduunu reneceiz.
48 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

3. Bir form oluturacaz bu form verisayacmzdan gelen deger ile get metodu ile
ayn sayfaya yani index.jsp ye ynlenerek bir sonraki kayta geecek.
4. Tablo olutaracaz ektiimiz verileri tablomuzda gstereceiz. Formdan gelen
verisayac arttnda Resultset ile gelen deere gre sradaki verileri gsterecek.
Bu methot ise Jsp Query String Kullanmna benzemektedir. Bu yazmda detayl
olarak yazmtm.
zetle yaplacak ilem veritabannda ki verileri toplayp bir sra numaras vererek o sra
numarasna gre oluturduumuz formun butonundan gelen deere gre bir artarak sonraki
kayt gstermek.
Kod sonrasi grnt u ekilde olacak;

index.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

<%@ page import="java.sql.*" %>


<%@ page import="java.io.*" %>
<HTML>
<HEAD>
<TITLE>Burak Kutbay Yazlm Mhendisi </TITLE>
</HEAD>
<br>
<br><center>Tum Kayitlar Tek Tek Listeleniyor...</center>
<% int verisayac = 0;
Connection connection = null;
String connectionURL = "jdbc:mysql://localhost:3306/rehber";
ResultSet rs = null;
%>
<center>
<FORM ACTION="index.jsp" METHOD="get"><%
if (request.getParameter("verigoster") != null) {
verisayac = Integer.parseInt(request.getParameter("verigoster"));
}
Statement statement = null;
try {

49 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55

Class.forName("com.mysql.jdbc.Driver").newInstance();
connection = DriverManager.getConnection(connectionURL, "root", "root");
statement = connection.createStatement();
rs = statement.executeQuery("select * from bilgi");
for (int i = 0; i < verisayac; i++) {
rs.next();
}
if (!rs.next()) {
%>
<%
out.println("Kayit Sonu");
} else {
%>
<TABLE>
<TR><TH>Adi</TH><TD> <%= rs.getString(1)%> </TD></tr>
<TR><TH>Soyadi</TH><TD> <%= rs.getString(2)%> </TD></tr>
<TR><TH>Numara</TH><TD> <%= rs.getString(3)%> </TD></tr>
<TR><TH>id</TH><TD> <%= rs.getInt(4)%> </TD></tr>
</TR>
</TABLE>
<BR>
<INPUT TYPE="hidden" NAME="verigoster" VALUE="<%=verisayac + 1%>">
<INPUT TYPE="submit" VALUE="Sonraki Kayit">
</FORM>
<%
}
}
catch (Exception ex) {
out.println("Veritabanna baglanilamadi.");
}
%>
</FORM>
</center>
</body>
</html>

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/java-server-pages-verileri-dinamik-olaraksayfalatma.html/

50 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

JSP de XML Veri Gsterimi


Java Server Pages Dersleri devam ediyor. imdiye kadar JSP (Java Server Pages) hakknda bir
bilginiz yok ise buradan fikir sahibi olabilirsiniz.Web projelerimizde veriler yer alr. Veriler
belirli bir yerde saklanr bu veriler nerede saklanrsa saklansn bizim ona ulamamz
gerekiyorsa muhakkak almaylz.Daha nceki derslerde verilerimizi bir veri tabanndan alarak
ilemler yapmtk. (1,2)
KISACA XML
Bu sefer verilerimizi XMLden alcaz ve Java Server Pages sayfamzda listeyeleceiz,
grnteleyeceiz. XMLden ksaca bahsedelim ki neyle uratmz bilelim. XML denilen
teknoloji tarayc ile server arasnda verileri tayan arac bir sistem diyebiliriz. XML server
ykn azaltr. Belirli bir format vardr. Bu formata gre XML parse ederek verilerin bir
blmn ya da hepsini kullanabiliriz, gsterebiliriz.
UYGULAMA
Elimizde bir XML dosyas olduunuz varsayalm. Bu XML dosyasndan verileri ekmemiz
gerekiyor ve bu ekilen verileri JSP sayfamzda gstereceiz.
1) XML SAYFASI OLUTURMA
1
2
3
4
5
6
7
8
9
10
11
12

<uyelist>
<uye>
<ad>Burak</ad>
<soyad>Kutbay</soyad>
<yas>24<yas>
</uye>
<uye>
<ad>Karub</ad>
<soyad>Yatba</soyad>
<yas>26<yas>
</uye>
</uyelist>

2) JAVA SERVER PAGES SAYFASI


index.jsp
1
2
3
4
5
6

<%@ page contentType="text/html"%>


<%@ page import="javax.xml.parsers.DocumentBuilderFactory,
javax.xml.parsers.DocumentBuilder,org.w3c.dom.*"
%>
<%
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

51 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse("http://localhost:8080/uye.xml");
NodeList nodel= doc.getElementsByTagName("ad");
NodeList node2= doc.getElementsByTagName("soyad");
NodeList node3= doc.getElementsByTagName("yas");
%>
<html>
<body><center>
<table>
<tr>
<td font-weight:bold;">ADI</td>
<td font-weight:bold;">SOYADI</td>
<td font-weight:bold;">YASI</td>
</tr>
<tr>
<%
for(int i=0;i<2;i++)
{
%>
<td><%= nodel.item(i).getFirstChild().getNodeValue() %></td>
<td><%= node2.item(i).getFirstChild().getNodeValue() %></td>
<td><%= nnode3.item(i).getFirstChild().getNodeValue() %></td>
</tr>
<%
}
%>
</table>
</center>
</body>
</html>

3) NELER YAPTIK?
Bu kodlar satr satr aklayalm.
2-3. satrlarda XML verilerini okumak ve bulunduu konumdan programmzn iine
gndermek iin gerekli ktphaneleri Jsp sayfamza ekledik.
6-7. satrlarda ise gerekli ktphanelerden nesne tretiyoruz. XML dkmann amak ve
okumak iin o nesnenin yetenekleri kullanmamz iin gerekli kod blou.
8. satrda XML dosyamzn yolunu JSP sayfamza sylyorz.
10-12 satrlar aras ise XML balklarn gerekli NodeList deikenlerine atyoruz. Nodelist bir
array diyebiliriz.
27-29 satrlarda bir dng ile Nodelistte ki XML verilerini bir tablo halinde gsteriyoruz.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/java-server-pages-jsp-de-xml-veri-gosterimi.html/

52 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

Java Server Pages Thread Safe


Thread Nedir?
Bu konuyu uzunca ilemek gerek ama ksaca bahsetmek gerekirse Thread dediimiz kavram
yaptmz programlarn bir btn olarak deil blml olarak altrmasn salamaktayz.
Bir Thread ya da birden fazla Thread ile programlarmz ileyebilmekteyiz.
Bu konu ile blogumda iki yaz yazmtm.

Java: Thread Metodlar


Java: Multithreading

Thread Safe Nedir?


Bu kavramda aslnda tek bana incelememiz gerekmekte. Hangi kod bloklarmz Thread
Safe yapmalyz nerelerde ihtiya duyulur bu sorularn cevaplarn baka bir yazda detaylca
aklayacam. Ksaca Thread Safe yaptmz Threadlerimizi gvenli olarak almasn
salamaktadr. Java Server Pageste Threadlerimizin ayn anda almas durumunda bu
Thread bir sraya almamz gerekmektedir(Bu durum sadece JSP iin geerli deildir.
Herhangi bir yazlm dilinde de geerlidir.). Ayn anda alan birden fazla Thread var ise
sorun kartmamas, akmamas iin kullanlan bir yntemdir. Birden fazla ayn anda ayn
Threade gelen istekleri sraya alarak kontroll bir yap salamaktayz. Sayfamza birden fazla
gelen istekleri kontrol etmemize olanak salamaktadr.
Java Server Pageste bu Thread Safeyi salamak iin kullanacamz kod tek satrlk bir
ilemdir.
1

<%@ page isThreadSafe="false" %>

Bu kod bloku ile Thread Safenin zelliini True veya False olarak deitirip kontrol
edebilmekteyiz. Bu ifade False olursa JSPye gelen istekler kontrol altna alnm demektir.
Sayfamzdan isteklerimiz birer birer olarak gidecektir.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/java-server-pages-thread-safe.html/

53 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

Java Server Pages le Java Beans


Kullanm
Java Server Pages Derslerine Java Server Pageste Java Bean kullanm ile devam ediyoruz.
Java Bean denilen kavram uzaktan bakldnda ok afilli bireymi gibi grnsede bu Java
Bean bizim Javadan alk olduumuz snflardr aslnda.
Bu snflarn Java Server Pageste ki zellii basite bu Java Beanlara kolayca erimemizi
salamaktadr. Beanlarn paketleri farkl olmaldr. Get ve Setler ile iletiimi
salayabilmekteyiz.
Java Beanler JSPde taglar yardm ile kolayca ilemler yaplabilmekte. Basit bir Java Bean,
yani Java snf nasl olur ona bir bakalm ardndan ise Java Server Pageste Java Beanlar nasl
kullanlmakta inceleyelim.
Basit bir Java Bean oluturmann baz artlar var. Bu artn bana gre en nemlisi
deikenler private olmak zorunda. Yukarda da sylediim gibi Get-Set kesinlikle olmal.
imdi bir Java Bean oluturalm.
1
2
3
4
5
6
7
8
9
10
11
12

package Bean;
public class Bean_deneme {
private String isim=new String();
public String getisim() {
return isim;
}
public void setisim(String isim) {
this.isim = isim;
}
}

Java Server Pageste kullanacamz Java Beanimizi oluturduk. Bu kod blogunda neler
yaptk biraz bakalm. Javada bir snf olutururken yaptmz ilemlerin ayns aslnda. Get ve
Set metotlarnda oluturduk ve isim adl deikenimiz private olarak kaydettik.
1
2
3
4
5
6
7

<html>
<title>Burak KUTBAY</title>
<head>
</head>
<body>
<jsp:useBean id="Bean_deneme" class="Bean.Bean_deneme" scope="session" >
<jsp:setProperty name="Bean_deneme" property="isim" value=" Burak" />

54 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

8
9
10
11
12

</jsp:useBean>
<h1> <jsp:getProperty name="Bean_deneme" property="isim" /></h1>
</body>
</html>

Java Server Pages sayfamzda yaptklarmza imdi bakalm. Jsp Tag kullanarak Beanimizi
ardk. SetProperty ile isim deikenimize bir deer aktardk ve ardndan getPoroperty ile
isim adl deikenin deerini ekerek kullancya gsteriyoruz.
Java Server Pageste Java Beannn kullanm bu ekilde olmakta. Sorularnz veya eklemek
istedikleriniz iin yorum yapmanz yeterli.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/java-server-pages-ile-javabeans-kullanimi-nedir.html/

ORM Object Relational Mapping Nedir?


Bu yazda ORM nedir Nasl bir alma mant var bu konular iledikten sonra avantajlarn
sizinle paylaacam.
ORM ve ya Object Relational Mapping denilen kavram aslnda bizim kod bloklarmz ile
veritabanmz arasnda oluan bir kprdr. Bu tanm ORMnin en basite indirgenmi hali.
imdi bu tanmdan sonra biraz ii detaylandrarak anlatmaya alacam.
Veritaban derken, ilikisel veritabnndan bahsediyorum. likisel Veritabanmz, bizim
katmanlara ayrdmz programmz arasnda (OOP) veri alveriini salar. ORM
veritabanmzda ki tablolarmz classlara evirir. Bu class yaps ile bizim programlama
ileminde ki veritaban blmlerinde daha az zaman harcamamza olanak salamakta. ORM
ile ilemlerin daha ksalmas ve daha dzenli bir ekilde devam etmesini salamaktadr.
Sql ile uramamza gerek kalmaz ORM sayesinde. Hangi ORM eidini kullanyorsak o ORM
sistemine gre kullanm sistemi ile ileme devam edebiliriz. Kullanm bir programc iin zor
deildir.

55 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

ORM bizim veritabanmz bir harita olarak nmze koyar. Karmak bir veritaban yapsn
daha rahat grmemize olanak salamaktadr.
rnek olarak Hibernate Javada kullanlan bir ORM dir. Hibernatenin sistemine bir bakalm.

Object Relational Mapping veritabanna sadk bir bir para deildir. Yani bamszdr. Bir veri
tabannz iin bir den fazla ORM kullanabilirsiniz. ORM uygulama katmanmzn altnda
bulunmaktadr. Bu durum tam tersi de olabilmektedir. Projenizde MS-SQL kullanyorken
karar deitirdiniz diyelim MySql kullanmaya baladnz. Bu durum sizin ORM nize bir
skntya neden olmaz ayn ekilde kaldnz yerden devam edebilirsiniz.
ORM ile beraber programmz daha da nesneye ynelimli bir hal almakta, veritaban
modelleme ksm iin imkan salamaktadr. ORMler otomatik kod oluturarak bize sadece
gerekli dzenlemeleri yapmak kalmakta.
ORM ile beraber classlar oluuyor demitik bu class lar,

Balanma
Ekleme
Dzeltme
Silme
Kapatma
Kontrol
eklinde olmaktadr.

56 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

Herey elinizin altnda bu sistem yazmay kolaylatrd gibi performans maalesef olumsuz
ynde etkilemektedir. Object Relational Mapping tm programlama dillerinde mevcuttur.
JAVA iin kullanlan ORMler
- Hibernate
- JPA
- EclipseLink
- Apache Cayenne

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/orm-object-relational-mapping-nedir-kullanimi.html/

JSPde ye Kayit Formu rnei


Java Server Pages Dersimizin bu yazsnda rnek yapacaz.
*
ye olacak kiinin bilgilerini alp veritabanmza kayt edeceiz. Satr satr aklamayacam
nk nceki konularda detayl olarak anlatmaya almtm.
index.jsp sayfas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

<%@page contentType="text/html" pageEncoding="UTF-8"%>


<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body><center>

57 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

<br>
<br>
<h3><b style="color:black;background-color:#a0ffff">ye</b> Kayt <b
style="color:black;background-color:#ff9999">Formu</b></h3>
<form action="Kaydet.jsp" method="POST">
<table>
<tr>
<td>TC No:</td>
<td><input type="text" name="tcno" /></td>
</tr>
<tr>
<td>Ad:</td>
<td><input type="text" name="ad"/></td>
</tr>
<tr>
<td>Soyad:</td>
<td><input type="text" name="soyad"/></td>
</tr>
<tr>
<td>Adres:</td>
<td><textarea name="adres" rows="3" cols="16"></textarea></td>
</tr>
<tr>
<td>li:</td>

58 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87

<td><input type="text" name="il"/></td>


</tr>
<tr>
<td>le:</td>
<td><input type="text" name="ilce"/></td>
</tr>
<tr>
<td><input type="submit" value="Kaydet" /></td>
</tr>
</table>
</form></center>
</body>
</html>

Kaydet.jsp Sayfas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

<%@page contentType="text/html" pageEncoding="UTF-8"%>


<%@page import="java.sql.Connection, java.sql.PreparedStatement" %>
<%@page import="java.sql.SQLException,java.sql.DriverManager" %>
&nbsp;
<html>
<head>
<title>JSP Page</title>
</head>
<body>
<%!

59 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66

Connection baglanti=null;
PreparedStatement ifade=null;
String tcNo,ad,soyad,il,ilce,adres;
%>
<%
try{
tcNo=request.getParameter("tcno");
ad=request.getParameter("ad");
soyad=request.getParameter("soyad");
adres=request.getParameter("adres");
il=request.getParameter("il");
ilce=request.getParameter("ilce");
try{
Class.forName("com.mysql.jdbc.Driver");
}catch(ClassNotFoundException e){
out.println("Jdbc Yklenemedi");
}
baglanti=DriverManager.getConnection("jdbc:mysql://localhost/uyeliksistemi?useU
nicode=true&characterEncoding=UTF-8", "root", "root");
ifade=baglanti.prepareStatement("insert into
uyekayit(uyetc,uyead,uyesoyad,uyeadres,uyeil,uyeilce)
values(?,?,?,?,?,?) ");
ifade.setString(1, tcNo);
ifade.setString(2, ad);
ifade.setString(3, soyad);

60 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94

ifade.setString(4, adres);
ifade.setString(5, il);
ifade.setString(6, ilce);
ifade.executeUpdate();
}catch(SQLException e){
out.println("Hata");
}finally{
ifade.close();
baglanti.close();
out.println("Kayt Yapld");
}
%>
</body>
</html>

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/jspde-uye-kayit-formu-ornegi-java-server-pages.html/

JSP Sayfa Sayac Yapm (JSP rnek)


Java Server Pages Derslerinde bu yazda bir rnek yaparak devam edeceim. Java Server
Pages sayfalarmzda kullanmak zere ziyaretci sayac yapacaz. Bu sayac o sayfann
yenilenmesine gre artmaktadr. Her kullancnn o sayfaya girdii sayy saymaktadr.
Saya ile veri tutarak istenilen deeri arttrp azaltabiliriz. Bu rnekteki ama sadece saya
yapmak deil bir nceki cmle de bahsettiim gibi veri saklama ilemini pekitirmek.

61 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

Bu rnek ile rendiklerimizi pekitireceiz. Bu rnekte yapacamz kodlamalarn neredeyse


tamamn nceki Java Server PagesDerslerinde aktarmtm. st menden ulaabilirsiniz.
Java Server Pages rneimiz ise burada. Sorularnz yorum yaparak iletebilirsiniz.
sayac.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

<Html>
<Head>
<Title>Burak Kutbay</Title>
</Head>
<Body>
<%
Integer sayac = (Integer)application.getAttribute("sayac");
if (sayac == null) {
sayac = 1;
} else {
sayac= sayac + 1;
}
application.setAttribute("sayac", sayac);
%>
<br>
Bu sayfaya <%=sayac%> kez geldiniz
</br>
</Body>
</Html>

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/java-server-pages-jsp-sayfa-sayac-yapimi.html/

JSP Java Bean rnei


Java Server Pages Derslerine devam ediyoruz.
nceki JSP derslerimiz Java Server Pages le Java Beans Kullanm hakknda temel bilgi
edinip nasl kullanldna bakmtk. Bu dersimizde ise Java Beanleri kullanarak Basit bir Java
Server Pages rnek yapacaz. Java Server Pages ile programlama yaparken Java Beanleri
kullanmalyz nedenlerinden zaten bahsetmitik. Fazla detaya inmeden 40 ksr derste
grdklerimizi pekitirerek Java Server Pages Java Bean rnei yapalm.
rneimiz basit bir Vize Final sorgulamas yapan bir program olacak.
lk olarak Java Beanimizi oluturalm. (in ksas Java Class yapacaz.)
62 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

hesapla.java
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author http://blog.burakkutbay.com
*/
package bean;
public class hesapla{
private String ad="";
private int vize=0;
private int finall=0;
private int sonuc=0;
public void setAd(String ad){
this.ad=ad;
}
public void setVize(int vize){
this.vize=vize;
}
public void setFinall(int finall){
this.finall=finall;
}
public void setSonuc(int sonuc){
this.sonuc=sonuc;
}
public String getAd(){
return (ad);
}
public int getVize(){
return (vize);
}
public int getFinall(){
return (finall);
}

63 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

47
48
49
50
51
52
53
54
55
56
57

public double getSonuc(){


return (sonuc);
}
public double getHesapla(){
sonuc=(int) ((vize*0.4)+(finall*0.6));
return sonuc;
}
}

Getter ve Setter metodlar bulunan bir Java Class yazdk. Java Bean olarak kullanacamz bu
classmz hazr. imdi ise index sayfamz yapacaz.
Bu sayfamzda bir form olacak ve formda kullancnn ad, vize ve final bilgilerini alacaz.
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

<%-Document : index
Created on : 26.Ara.2013, 18:53:11
Author : http://blog.burakkutbay.com
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>burakkutbay.com</title>
</head>
<body>
<h1>Vize Final Hesapla</h1>
<form name="Form1" method="post" action="sonuc.jsp">
<table>
<tr>
<td>Adn</td>
<td><input type="text" name="ad"> </td>
</tr>
<tr>
<td>Vizen</td>
<td><input type="text" name="vize"> </td>
</tr>
<tr>
<td>Final</td>
<td><input type="text" name="finall"> </td>

64 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

29
30
31
32
33
34
35
36

</tr>
<tr>
<input type="submit" name="Gonder" value="Hesapla">
</tr>
</table>
</form>
</body>
</html>

Anasayfamz hazr ve bu anasayfamzdan verilerimiz sonuc.jsp sayfasna gidecek ve o sayfada


girilen deerler Java Beanimimize ulaacak ve sonu ilemini grebileceiz.
sonuc.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

<%-Document : sonuc
Created on : 26.Ara.2013, 20:37:44
Author : http://blog.burakkutbay.com
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>burakkutbay.com</title>
</head>
<body>
<h1>Vize Final Hesapla</h1>
<jsp:useBean id="hesapla" class="bean.hesapla" scope="request"/>
<jsp:setProperty name="hesapla" property="*"/>
Sayn: <jsp:getProperty name="hesapla" property="ad"/><br>
Vize: <jsp:getProperty name="hesapla" property="vize"/><br>
Finalin: <jsp:getProperty name="hesapla" property="finall"/><br>
Sonu: <jsp:getProperty name="hesapla" property="hesapla"/>
</body>
</html>

Java Server Pages ile Java Bean kullanm hakknda rneimiz bu kadard. Sorularnz iin
yorum yapmanz yeterli.

Bu konu hakknda sorularnz/yorumlarnz iin:


http://blog.burakkutbay.com/java-server-pages-bean-ornek.html/

65 | B u r a k K U T B A Y

Java Server Pages |http://burakkutbay.com

You might also like