Professional Documents
Culture Documents
Java
Java
TEKNOLOJS
http://blog.burakkutbay.com
Burak KUTBAY
1.Yayn Ocak 2014
info@burakkutbay.com
http://burakkutbay.com
http://blog.burakkutbay.com
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.
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
1|Burak KUTBAY
2|Burak KUTBAY
3|Burak KUTBAY
indiriyoruz
ve
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.
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
4.
Scriptlet Tag (Kodlama Tag)
JSP sayfamzda Java kod paralarn yazmak iin kullanlr. Kullanm <% %> eklindedir.
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
7|Burak KUTBAY
8|Burak KUTBAY
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.
Yapmz bu ekilde nceden alk olduumuz dng yapsndadr. Bu yap genelde veri
ekerken kullanlmakta.
<c:out>
1
<c:out value="${degisken_adi}"/><p>
9|Burak KUTBAY
forEach bloklar arasnda ki kodlar dng devam ettii srece almaya devam etmektedir.
Dng sonucu ise out tag ile kullanabilmekteyiz.
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
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
10
11
12
13
14
15
16
17
18
19
kullanicibilgi.jsp?adi=Burak&soyadi=kutbay
String kullaniciadi=request.getParameter("adi");
String kullanicisoyadi=request.getParameter("soyadi");
12 | B u r a k K U T B A Y
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
13 | B u r a k K U T B A Y
15
16
17
</body>
</html>
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. (:
<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>
16 | B u r a k K U T B A Y
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 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
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>
<%
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
Basit bir rnek ile akladm. Java Server Pages ile dizi oluturup, ilemlerinize gre
kullanmanz bu kadar kolay
request.getParameter
<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
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
20 | B u r a k K U T B A Y
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
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.
22 | B u r a k K U T B A Y
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>
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
1
2
3
4
5
6
7
8
9
24 | B u r a k K U T B A Y
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
25 | B u r a k K U T B A Y
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(anasayfa.getValue("kullanici_giris")!="gecerli")
{
response.sendRedirect("index.jsp");
}
26 | B u r a k K U T B A Y
27 | B u r a k K U T B A Y
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.
index.jsp
1
2
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.
28 | B u r a k K U T B A Y
<%
response.setHeader ("Cache-Control", "public");
%>
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
2
3
4
5
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");
response.setDateHeader ("Expires", 0);
%>
31 | B u r a k K U T B A Y
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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.
32 | B u r a k K U T B A Y
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
33 | B u r a k K U T B A Y
locale.getLanguage();
locale.getCountry();
locale.getDisplayCountry();
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
2
3
4
5
6
7
8
9
35 | B u r a k K U T B A Y
4
5
6
7
8
<%
int sayi = 1;
sayi =sayi/ 0;
%>
1
2
3
4
5
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
37 | B u r a k K U T B A Y
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>
38 | B u r a k K U T B A Y
Ardndan karmza kan pencerede Mysql JDBC Driver seeniini bulduktan sonra Add
Library butonuna basarak projemizin ktphanesine eklemi bulunuyoruz.
39 | B u r a k K U T B A Y
2
3
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.
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
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.
<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
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
<%
String driver = "com.mysql.jdbc.Driver";
42 | B u r a k K U T B A Y
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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
<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
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);
}
%>
<%
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
8
9
kan sonular bir tablo ierisinde gsterir. Birden fazla kayt var ise bir alt satra geip
deerleri yazdrmaya devam eder.
47 | B u r a k K U T B A Y
1.
2.
3.
4.
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
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
49 | B u r a k K U T B A Y
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>
50 | B u r a k K U T B A Y
<uyelist>
<uye>
<ad>Burak</ad>
<soyad>Kutbay</soyad>
<yas>24<yas>
</uye>
<uye>
<ad>Karub</ad>
<soyad>Yatba</soyad>
<yas>26<yas>
</uye>
</uyelist>
51 | B u r a k K U T B A Y
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.
52 | B u r a k K U T B A Y
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.
53 | B u r a k K U T B A Y
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
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.
55 | B u r a k K U T B A Y
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
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
57 | B u r a k K U T B A Y
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
Kaydet.jsp Sayfas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
59 | B u r a k K U T B A Y
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
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>
61 | B u r a k K U T B A Y
<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>
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
47
48
49
50
51
52
53
54
55
56
57
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
29
30
31
32
33
34
35
36
</tr>
<tr>
<input type="submit" name="Gonder" value="Hesapla">
</tr>
</table>
</form>
</body>
</html>
<%-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.
65 | B u r a k K U T B A Y