Upload
ahmetdemirelli
View
15.988
Download
1
Embed Size (px)
DESCRIPTION
Sabancı Üniversitesinde ve TBD de vermiş olduğum seminerin slaytları.Java ile Web uygulaması nasıl geliştirilir giriş Seviyesi bilgilendirme
Citation preview
www.sabanciuniv.edu/kcenter
Bilişim TeknolojileriYüksek LisansProgramıSeminerleri
Sabancı Üniversitesi
Java ile Web Uygulamaları GeliştirmeAhmet 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ı
GET /downloads/index.html HTTP 1.1Accept : text/htmlAccept-Language: en-usUser-Agent: Mozilla /4.0...........
response
request
www.sabanciuniv.edu/kcenter
Web SiteleriWeb 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.
istemci
Resimler
.js dosalarıhtml
.swf dosyaları
request
response
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.
class Program{
static void Main(string[] args){
Console.WriteLine("Content-Type:text/html\n");Console.WriteLine("Hello World");
}}
Hello.exe
C# ile yazılmış bir windows programı
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.
* . dll* . class
* . php*. asp•...•.....•...
.NET
J2EE
www.sabanciuniv.edu/kcenter
J2EE Uygulama Sunucuları
Web container
J2EE Uygulama Sunucusu
WebComponentsServletjspHtml / xml
BusinessComponentsSessionBean,EntityBean,MessageDrivenBean
EJB container
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örlerBookStore
WEB-INF
classes
web.xml
HTML ve jsp
dosyaları
Uygulama ana klasörü
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
Uygulama konfigürasyon dosyası
( deployment descriptor )
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
Servlet classlarının kaynak kodları(*.java dosyaları )
Servlet classlarının kaynak kodları(*.java dosyaları )
Web içeriği(web.xml, jsp ve htmldosyaları )
Web içeriği(web.xml, jsp ve 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 URLile gönderebilirler<html>
<head></head>
<body>
<form action="index.jsp" method="GET">
İsim :<input type="text" name="isim" /><br>
No :<input type="text" name="id" /><br>
<input type="submit" value="Gonder"/>
</form>
</body></html>
<html>
<head></head>
<body>
<form action="index.jsp" method="GET">
İsim :<input type="text" name="isim" /><br>
No :<input type="text" name="id" /><br>
<input type="submit" value="Gonder"/>
</form>
</body></html>
www.sabanciuniv.edu/kcenter
<html> <head> </head><body> .......
<html> <head> </head><body> .......
HttpRequest & HttpResponse• HttpRequest
– GET
– POST
• HttpResponse
GET /downloads/index.jsp?isim=ahmet&no=447 HTTP 1.1Accept : text/htmlAccept-Language: en-usUser-Agent: Mozilla /4.0
GET /downloads/index.jsp?isim=ahmet&no=447 HTTP 1.1Accept : text/htmlAccept-Language: en-usUser-Agent: Mozilla /4.0
POST /downloads/index.jsp HTTP 1.1Accept : text/htmlAccept-Language: en-usUser-Agent: Mozilla /4.0isim=ahmet&no=447
POST /downloads/index.jsp HTTP 1.1Accept : text/htmlAccept-Language: en-usUser-Agent: Mozilla /4.0isim=ahmet&no=447
HTTP/1.1 200 OKContent-Length: 114Date: Mon, 30 April 2006 11:07:44 GMTContent-Type: text/htmlServer: Apache
HTTP/1.1 200 OKContent-Length: 114Date: Mon, 30 April 2006 11:07:44 GMTContent-Type: text/htmlServer: Apache
HTTP Header
HTTP Body
HTTP Header
HTTP Header
HTTP Body
HTTP Body
www.sabanciuniv.edu/kcenter
Bir Sınıfın Servlet Olabilmesi için import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet
{
public void doGet(HttpServletRequest req,HttpServletResponse res)
throws ServletException, IOException
{
PrintWriter out = res.getWriter();
out.println("Hello World");
}
}
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet
{
public void doGet(HttpServletRequest req,HttpServletResponse res)
throws ServletException, IOException
{
PrintWriter out = res.getWriter();
out.println("Hello World");
}
}
HttpServlet sınıfının alt sınıfı olmak zorundaHttpServlet sınıfının
alt sınıfı olmak zorunda
GET ve POST isteklerini karşılayacak olan doGet() veya doPost() methodların yazılması gerekir. Methodlar yazılmazsa
gelen istekler cevapsız kalır.
GET ve POST isteklerini karşılayacak olan doGet() veya doPost() methodların yazılması gerekir. Methodlar yazılmazsa
gelen istekler cevapsız kalır.
www.sabanciuniv.edu/kcenter
doGet() & doPost() methodları
Browser
HttpResponseHttpResponse
Web ContainerHttpRequestHttpRequest GETGET
HttpRequestHttpRequest POSTPOST
doGet ( HttpRequest req , HttpResponse res )
doPost ( HttpRequest req , HttpResponse res )
HelloWorld.class
service ( HttpRequest req , HttpResponse res )
www.sabanciuniv.edu/kcenter
Başlangıçinit()
Başlangıçinit()
Hizmetservice()
doGet()doPost()
Hizmetservice()
doGet()doPost()
Sonlandırmadestroy()
Sonlandırmadestroy()
Servlet Yaşam DöngüsüServlet classının hafızaya ilk defa
yüklendiğinde çalışması gereken kodlar bu method içerisineyazılır
Servlet classının hafızaya ilk defa yüklendiğinde çalışması gereken kodlar
bu method içerisineyazılır
GET isteklerine cevap veren methodGET isteklerine cevap veren method
İstemciden gelen isteğin ilk karşılandığı methoddur. İsteğin türünü belirleyip ilgili
methoda yönlendirir.
İstemciden gelen isteğin ilk karşılandığı methoddur. İsteğin türünü belirleyip ilgili
methoda yönlendirir.
POST isteklerine cevap veren methodPOST isteklerine cevap veren method
Servlet hafızadan kaldırılırken yapılacak işlemleri bu method içerisine yazılır
Servlet hafızadan kaldırılırken yapılacak işlemleri bu method içerisine yazılır
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
• Scriptlet– <% code %>
• Declaration– <%! code %>– Mevcut jsp sayfasının tamamından ulaşılabilen
değişkenler tanımlamak için kullanılır.
<jsp:expression>code</jsp:expression>
<jsp:scriplet> code</jsp: scriplet>
<jsp:declaration>code</jsp: declaration>
XML Syntax
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