- Sabancı Üniversitesi Çalışanlarına ait Kişisel Web

Transkript

- Sabancı Üniversitesi Çalışanlarına ait Kişisel Web
Sabancı Üniversitesi
Bilişim Teknolojileri
Yüksek Lisans
Programı
Seminerleri
Java ile Web Uygulamaları
Geliştirme
Ahmet Demirelli
SCJP 5.0 - SCWCD 1.4
www.sabanciuniv.edu/kcenter
Ajanda
•
•
•
•
•
•
•
•
•
Web uygulaması nedir
Basit bir CGI örneği
Uygulama Sunucuları
Bir Java Web Uygulaması için neler gerekli
Web Tools Platform
Servlet
doGet() ve doPost() methodları
JSP
JSP sayfalarında önceden tanımlı nesneler
www.sabanciuniv.edu/kcenter
Web Sayfaları
request
response
GET /downloads/index.html HTTP 1.1
Accept : text/html
Accept-Language: en-us
User-Agent: Mozilla /4.0
...........
www.sabanciuniv.edu/kcenter
Web Siteleri
Web sitesi ;
– Birbirleri ile ilişkili web sayfaları topluluğudur.
• Eğer web sitesi sadece tanıtım amaçlı ise ;
• Kullanıcı ile etkileşimi yoksa ;
• Sadece html sayfalarından ve o sayfalardaki
text,resim,flash animasyon ve javascript kodları
yeterlidir.
request
html
.js dosaları
istemci
response
Resimler
.swf dosyaları
www.sabanciuniv.edu/kcenter
Web Uygulamaları
•
•
•
•
•
•
Kullanıcı etkileşimi (kullanıcıdan bilgi alma...vb)
Kullanıcı şifre onaylama (login işlemleri )
Arama işlemleri
Oturum açma (alışveriş sepeti ..vb )
Her kullanıcıya farklı arayüz
.....vb gibi
gereksinimlerimiz varsa sunucu tarafında
çalışan programlara ihtiyacımız var.
www.sabanciuniv.edu/kcenter
Web Uygulamaları ( CGI )
CGI Programları
*.exe,*.cgi... etc
www.sabanciuniv.edu/kcenter
Basit CGI örneği
• Herhangi bir exe dosyasını Apache web server
da /cgi-bin/ klasörü altına kopyalayıp.
• Browser adres satırına ;
http://localhost/cgi-bin/hello.exe
yazıp web sunucusundan bu programı
çalıştırmasını istiyoruz.
Hello.exe
C# ile yazılmış bir windows programı
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Content-Type:text/html\n");
Console.WriteLine("Hello World");
}
}
www.sabanciuniv.edu/kcenter
Uygulama Sunucusu
Sunucu tarafında çalışacak uygulamaları
yorumlayıp veya çalıştırıp ortaya çıkan
sonuçları tekrar istemciye göndermekle
görevli olan sunuculardır.
* . php
*. asp
•...
•.....
•...
.NET
* . dll
* . class
J2EE
www.sabanciuniv.edu/kcenter
J2EE Uygulama Sunucuları
J2EE Uygulama Sunucusu
Web container
WebComponents
Servlet
jsp
Html / xml
EJB container
BusinessComponents
SessionBean,
EntityBean,
MessageDrivenBean
www.sabanciuniv.edu/kcenter
J2EE Uygulama Sunucuları
•
•
•
•
•
•
Tomcat Web Container ****
JBoss Web + EJB container
BEA WebLogic Web + EJB container
IBM WebSphere Web + EJB container
Oracle 10g Web + EJB container
Sun ONE Web + EJB container
www.sabanciuniv.edu/kcenter
J2EE Web Uygulaması için
• Web Container (Tomcat 5.5)
• http://tomcat.apache.org/
• J2EE Uygulama geliştirme ortamı (Web Tools
Platform)
• http://download.eclipse.org/webtools/
***Uygulamanın J2EE belirtimlerine uygun bir şekilde
dosyalanmış olması gerekir.
www.sabanciuniv.edu/kcenter
Gerekli dosya ve klasörler
Uygulama ana klasörü
BookStore
WEB-INF
classes
lib
tlds
Özel klasör
(dışarıdan erişime kapalı)
Servlet class larınınn
bulunacağı klasör
Projede kullanılan extra
kütüphaneler
Tag kütüphaneleri
web.xml
Uygulama konfigürasyon
dosyası
( deployment descriptor )
HTML ve
jsp
dosyaları
Uygulamada kullanılan
diğer dosyalar
www.sabanciuniv.edu/kcenter
Web Tools Platform
• Java ile J2EE uygulamaları geliştirmeyi
kolaylaştırmak için yazılmış bir eclipse eklentiler
bütünüdür.
• http://download.eclipse.org/webtools/
..........................Kurulum ve Ayarlar..........................
• Web Tools Platformu indirip herhangi bir klasöre
açıyoruz.
www.sabanciuniv.edu/kcenter
Web Tools Platform
• Web Tool Platform da uygulama geliştirmeye
başlamadan önce perspective ayarlarını
değiştirmeniz gerekmektedir.
• Bunun için ;
Windwow Open Perspective Other .. J2EE seçiyoruz
www.sabanciuniv.edu/kcenter
Web Tools Platform Ayarları-1
•
Windows -> Preferences -> Server -> Installed JREs
www.sabanciuniv.edu/kcenter
Web Tools Platform Ayarları-2
www.sabanciuniv.edu/kcenter
Web Tools Platform Ayarları-3
www.sabanciuniv.edu/kcenter
Web Tools Platform Ayarları-4
•
Servers -> Right Click -> New Server
www.sabanciuniv.edu/kcenter
Web Tools Platform Ayarları-5
www.sabanciuniv.edu/kcenter
WTP - Yeni Proje Oluşturma-1
•
Project Explorer -> Dynamic Web Projects -> New -> Dynamic Web Project
www.sabanciuniv.edu/kcenter
WTP - Yeni Proje Oluşturma-2
Servletclasslarının
classlarınınkaynak
kaynakkodları
kodları
Servlet
(*.javadosyaları
dosyaları) )
(*.java
Webiçeriği
içeriği
Web
(web.xml,jsp
jspve
ve
(web.xml,
htmldosyaları) )
htmldosyaları
www.sabanciuniv.edu/kcenter
Projeyi Sunucuda Çalıştırma-1
www.sabanciuniv.edu/kcenter
Projeyi Sunucuda Çalıştırma-2
www.sabanciuniv.edu/kcenter
Servlet
• Sunucu tarafında çalışan derlenmiş özel java class
ları.
• Görevleri
–
–
–
–
–
–
Kullanıcıdan gelen açık ( explicit ) bilgileri almak (Form bilgileri)
Kullanıcıdan gelen kapalı (implicit) bilgileri almak (Request Header)
Bu bilgilerle işlemler yapmak
HTML çıktısı üretmek
Açık bilgileri kullanıcıya göndermek ( HTML )
Kapalı bilgileri kullanıcıya göndermek (Response header)
Kullanıcılar ile nasıl bilgi alışverişinde bulunacağız.?
www.sabanciuniv.edu/kcenter
Kullanıcılardan bilgi almak
• Sunucu tarafında çalışan uygulamalara
kullanıcılar bilgiyi HTML-Formları ile veya URL
ile gönderebilirler
<html>
<html>
<head></head>
<head></head>
<body>
<body>
<formaction="index.jsp"
action="index.jsp"method="GET">
method="GET">
<form
İsim:<input
:<inputtype="text"
type="text"name="isim"
name="isim"/><br>
/><br>
İsim
No:<input
:<inputtype="text"
type="text"name="id"
name="id"/><br>
/><br>
No
<inputtype="submit"
type="submit"value="Gonder"/>
value="Gonder"/>
<input
</form>
</form>
</body></html>
</body></html>
www.sabanciuniv.edu/kcenter
HttpRequest & HttpResponse
• HttpRequest
– GET
– POST
GET/downloads/index.jsp?isim=ahmet&no=447
/downloads/index.jsp?isim=ahmet&no=447HTTP
HTTP1.1
1.1
GET
Accept: :text/html
text/html
Accept
Accept-Language:
en-us
Accept-Language: en-us
User-Agent:Mozilla
Mozilla/4.0
/4.0
User-Agent:
HTTP Header
HTTP Body
POST/downloads/index.jsp
/downloads/index.jspHTTP
HTTP1.1
1.1
POST
Accept : text/html
Accept : text/html
Accept-Language: en-us
Accept-Language: en-us
User-Agent:Mozilla
Mozilla/4.0
/4.0
User-Agent:
isim=ahmet&no=447
isim=ahmet&no=447
HTTP Header
HTTP Body
• HttpResponse
HTTP/1.1200
200OK
OK
HTTP/1.1
Content-Length:114
114
Content-Length:
Date:
Mon,
30
April
200611:07:44
11:07:44GMT
GMT
Date: Mon, 30 April 2006
Content-Type:text/html
text/html
Content-Type:
Server:Apache
Apache
Server:
<html>
<html>
<head></head><body>
</head><body>.......
.......
<head>
HTTP Header
HTTP Body
www.sabanciuniv.edu/kcenter
Bir Sınıfın Servlet Olabilmesi için
import java.io.*;
java.io.*;
import
import javax.servlet.*;
javax.servlet.*;
import
import javax.servlet.http.*;
javax.servlet.http.*;
import
HttpServletsınıfının
sınıfının
HttpServlet
altsınıfı
sınıfıolmak
olmakzorunda
zorunda
alt
public class
class HelloWorld
HelloWorld extends
extends HttpServlet
HttpServlet
public
{{
public void
void doGet(HttpServletRequest
doGet(HttpServletRequest req,HttpServletResponse
req,HttpServletResponse res)
res)
public
throws ServletException,
ServletException, IOException
IOException
throws
{{
PrintWriter out
out == res.getWriter();
res.getWriter();
PrintWriter
out.println("Hello World");
World");
out.println("Hello
}}
GETve
vePOST
POSTisteklerini
isteklerinikarşılayacak
karşılayacak
GET
}
}
olandoGet()
doGet()veya
veyadoPost()
doPost()methodların
methodların
olan
yazılmasıgerekir.
gerekir.Methodlar
Methodlaryazılmazsa
yazılmazsa
yazılması
gelenistekler
isteklercevapsız
cevapsızkalır.
kalır.
gelen
www.sabanciuniv.edu/kcenter
doGet() & doPost() methodları
Web Container
HttpRequest GET
GET
HttpRequest
Browser
HelloWorld.class
HttpRequest POST
POST
HttpRequest
service ( HttpRequest req , HttpResponse res )
doGet ( HttpRequest req , HttpResponse res )
doPost ( HttpRequest req , HttpResponse res )
HttpResponse
HttpResponse
www.sabanciuniv.edu/kcenter
Servlet Yaşam Döngüsü
Başlangıç
Başlangıç
init()
init()
Servletclassının
classınınhafızaya
hafızayailk
ilkdefa
defa
Servlet
yüklendiğindeçalışması
çalışmasıgereken
gerekenkodlar
kodlar
yüklendiğinde
bumethod
methodiçerisineyazılır
içerisineyazılır
bu
Hizmet
Hizmet
service()
service()
İstemcidengelen
gelenisteğin
isteğinilk
ilkkarşılandığı
karşılandığı
İstemciden
methoddur.İsteğin
İsteğintürünü
türünübelirleyip
belirleyipilgili
ilgili
methoddur.
methodayönlendirir.
yönlendirir.
methoda
doGet()
doGet()
doPost()
doPost()
GETisteklerine
isteklerinecevap
cevapveren
verenmethod
method
GET
POSTisteklerine
isteklerinecevap
cevapveren
verenmethod
method
POST
Sonlandırma
Sonlandırma
destroy()
destroy()
Servlethafızadan
hafızadankaldırılırken
kaldırılırkenyapılacak
yapılacak
Servlet
işlemleribu
bumethod
methodiçerisine
içerisineyazılır
yazılır
işlemleri
www.sabanciuniv.edu/kcenter
DEMO - Servlet Örneği
• Web Tools Platform da oluşturduğmuz yeni
projeye servlet eklemek
• doGet() ve doPost() methodlarını yazmak
• Kullanıcıdan gelen bilgileri request nesnesinden
almak ( request.GetParameter() )
• Kullanıcıya gönderilecek bilgileri response
nesnesine yazmak.
• web.xml dosyası
www.sabanciuniv.edu/kcenter
web.xml (Deployment descriptor)
• Uygulamada hangi servletler var, bu servletlere
URL ile nasıl ulaşılabilir.
• Authentication
• User roles
• Filters
• Güvenlik kısıtlamaları
• ....... etc
www.sabanciuniv.edu/kcenter
Problemler
• Eğer uygulamamızda yalnız servlet kullanarak
yazarsak;
– Java Programcıları HTML bilmek zorunda
– HTML çıktısı verebilmek için sürekli print() fonksiyonu
kullanılmak zorunda
– Yapılan küçük bir değişiklik için kod tekrar derlenmek
zorunda
– Arayüz ile java kodları iç içe (spaghetti code) bulunmak
zorunda
www.sabanciuniv.edu/kcenter
Çözüm
• Servlet Kod + İş Kuralları
– Sadece java kodu bulunmalı, mümkünse hiç HTML
yazdırılmamalı.
– Görevini tamamladıktan sonra bir jsp sayfasına
yönlendirilmeli.
• JSP (Java Server Pages) Arayüz
– Jsp bir HTML dizayn aracı kullanılarak düzenlenebilir
(DreamWeaver,Frontpage..etc)
– Minimum java kodu bulunmalı.
– Sadece servletlerden dönen sonuçları ekrara bastırmak için
kullanılmalı.
– JSTL kullanılmalı.
www.sabanciuniv.edu/kcenter
JSP (Java Server Pages)
• İçerisinde java kodu yazılabilen html sayfası.
<HTML>
<HEAD><TITLE>Deneme Sayfası</TITLE></HEAD>
<BODY>
<H2>JSP Sayfası </H2><br>
Şu An : <%=new java.util.Date() %>
<table align=“center”>
<tr><td>
<% out.Prinln(“Hello JSP”) %>
</td></tr>
</table>
</BODY></HTML>
www.sabanciuniv.edu/kcenter
JSP ifadeleri
• Expression
– <%= expression %>
– out.Println() yazmak yerine
XML Syntax
<jsp:expression>code</jsp:expression>
• Scriptlet
– <% code %>
<jsp:scriplet> code</jsp: scriplet>
• Declaration
– <%! code %>
<jsp:declaration>code</jsp: declaration>
– Mevcut jsp sayfasının tamamından ulaşılabilen
değişkenler tanımlamak için kullanılır.
www.sabanciuniv.edu/kcenter
JSP Önceden tanımlanmış nesneler
• request ( HttpRequest )
• response ( HttpResponse )
• out ( PrintWriter )
– Response nesnesine birşeyler yazabilmek için kullanılır.
• session ( HttpSession )
– Kullanıcıların oturum işlemleri için kullanılan nesnedir
• application ( ServletContext )
– Tüm genel bilgilerin tutulabileceği nesne
www.sabanciuniv.edu/kcenter
JSP- Yaşam Döngüsü
• JSP sayfaları Web container tarafından servlet
koduna dönüştürülür.
• Servlete dönüştürülen JSP compile edilir.
• Oluşan .class dosyası hafızaya yüklenip aşağıdaki
methodlar sırasıyla çalıştırılır.
– jspInit()
– jspService() – JSP sayfsının body bölümü
– jspDestroy()
www.sabanciuniv.edu/kcenter
DEMO – (Jsp-Servlet Uygulaması)
• Web Tools Platform da oluşturduğmuz yeni projeye
jsp sayfası eklemek
• Scriplet ,expression ve declaration taglari kullanmak
• Servletten response nesnesine request.setAttribute()
methodu ile eklenen bir değişkeni
request.getAttribute() methodu ile almak.
• JDBC ile MySQL veritabanından bilgi çekmek.
www.sabanciuniv.edu/kcenter
Sorular?
[email protected]
www.sabanciuniv.edu/kcenter

Benzer belgeler