SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
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                             .js dosaları
                                                 html
   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.
                                       class Program
          Hello.exe                      {
                                           static void Main(string[] args)
C# ile yazılmış bir windows programı       {
                                              Console.WriteLine(quot;Content-Type:text/htmlnquot;);
                                              Console.WriteLine(quot;Hello Worldquot;);
                                           }
                                         }



                                                                                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.


                                                .NET
* . php
*. asp                            * . dll
•...                              * . class
•.....
•...                                            J2EE




                                                       www.sabanciuniv.edu/kcenter
J2EE Uygulama Sunucuları
       J2EE Uygulama Sunucusu
                       EJB container
    Web container

   WebComponents    BusinessComponents
   Servlet          SessionBean,
   jsp              EntityBean,
   Html / xml       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


                                   Özel klasör
          WEB-INF           (dışarıdan erişime kapalı)


                classes       Servlet class larınınn
                               bulunacağı klasör


                 lib        Projede kullanılan extra
                                 kütüphaneler

                 tlds           Tag kütüphaneleri


                             Uygulama konfigürasyon
                 web.xml
                                     dosyası
                             ( deployment descriptor )



                HTML ve        Uygulamada kullanılan
                  jsp             diğer dosyalar
                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ı
                    Servlet classlarının kaynak kodları
                             (*.java dosyaları ) )
                              (*.java dosyaları




                                   Web içeriği
                                  Web içeriği
                                (web.xml, jsp ve
                               (web.xml, jsp ve
                                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>
 <form action=quot;index.jspquot; method=quot;GETquot;>
 <form action=quot;index.jspquot; method=quot;GETquot;>
   sim :<input type=quot;textquot; name=quot;isimquot; /><br>
  sim :<input type=quot;textquot; name=quot;isimquot; /><br>
 No :<input type=quot;textquot; name=quot;idquot; /><br>
 No :<input type=quot;textquot; name=quot;idquot; /><br>
 <input type=quot;submitquot; value=quot;Gonderquot;/>
 <input type=quot;submitquot; value=quot;Gonderquot;/>
 </form>
 </form>
 </body></html>
 </body></html>



                                                www.sabanciuniv.edu/kcenter
HttpRequest & HttpResponse
                 GET /downloads/index.jsp?isim=ahmet&no=447 HTTP 1.1
• HttpRequest    GET /downloads/index.jsp?isim=ahmet&no=447 HTTP 1.1
                 Accept : : text/html
                  Accept text/html
                  Accept-Language: en-us
  – GET          Accept-Language: en-us
                  User-Agent: Mozilla /4.0                      HTTP Header
                 User-Agent: Mozilla /4.0
  – POST
                                                                 HTTP Body

                  POST /downloads/index.jsp HTTP 1.1
                 POST /downloads/index.jsp HTTP 1.1
                  Accept : text/html
                 Accept : text/html
                  Accept-Language: en-us
                 Accept-Language: en-us
                  User-Agent: Mozilla /4.0
                 User-Agent: Mozilla /4.0
                  isim=ahmet&no=447                             HTTP Header
                 isim=ahmet&no=447
                                                                 HTTP Body

• HttpResponse    HTTP/1.1 200 OK
                 HTTP/1.1 200 OK
                  Content-Length: 114
                 Content-Length: 114
                  Date: Mon, 30 April 2006 11:07:44 GMT
                 Date: Mon, 30 April 2006 11:07:44 GMT
                  Content-Type: text/html
                 Content-Type: text/html
                  Server: Apache                                HTTP Header
                 Server: Apache
                  <html>
                 <html>
                                                                  HTTP Body
                  <head> </head><body> .......
                 <head> </head><body> .......



                                                          www.sabanciuniv.edu/kcenter
Bir Sınıfın Servlet Olabilmesi için
 import java.io.*;
import java.io.*;                         HttpServlet sınıfının
                                         HttpServlet sınıfının
 import javax.servlet.*;
import javax.servlet.*;                 alt sınıfı olmak zorunda
                                       alt sınıfı olmak zorunda
 import javax.servlet.http.*;
import javax.servlet.http.*;

 public class HelloWorld extends HttpServlet
public class HelloWorld extends HttpServlet
 {
{
   public void doGet(HttpServletRequest req,HttpServletResponse res)
  public void doGet(HttpServletRequest req,HttpServletResponse res)
                          throws ServletException, IOException
                         throws ServletException, IOException
     {
    {
       PrintWriter out = res.getWriter();
      PrintWriter out = res.getWriter();
       out.println(quot;Hello Worldquot;);
      out.println(quot;Hello Worldquot;);
     }
    }
                                   GET ve POST isteklerini karşılayacak
                                  GET ve POST isteklerini karşılayacak
 }
}
                                  olan doGet() veya doPost() methodların
                                 olan doGet() veya doPost() methodların
                                  yazılması gerekir. Methodlar yazılmazsa
                                 yazılması gerekir. Methodlar yazılmazsa
                                  gelen istekler cevapsız kalır.
                                 gelen istekler cevapsız kalır.

                                                          www.sabanciuniv.edu/kcenter
doGet() & doPost() methodları

                                              Web Container
                HttpRequest GET
               HttpRequest GET
                                                 HelloWorld.class
                HttpRequest POST
Browser        HttpRequest POST
                                   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ü
                    Servlet classının hafızaya ilk defa
  Başlangıç        Servlet classının hafızaya ilk defa
  Başlangıç      yüklendiğinde çalışması gereken kodlar
                yüklendiğinde çalışması gereken kodlar
      init()
     init()             bu method içerisineyazılır
                       bu method içerisineyazılır


                  stemciden gelen isteğin ilk karşılandığı
                 stemciden gelen isteğin ilk karşılandığı
   Hizmet
   Hizmet       methoddur. steğin türünü belirleyip ilgili
                methoddur. steğin türünü belirleyip ilgili
    service()             methoda yönlendirir.
   service()             methoda yönlendirir.
    doGet()
   doGet()         GET isteklerine cevap veren method
    doPost()      GET isteklerine cevap veren method
   doPost()

                  POST isteklerine cevap veren method
                 POST isteklerine cevap veren method



  Sonlandırma     Servlet hafızadan kaldırılırken yapılacak
 Sonlandırma     Servlet hafızadan kaldırılırken yapılacak
                    işlemleri bu method içerisine yazılır
    destroy()      işlemleri bu method içerisine yazılır
   destroy()




                                               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                                     XML Syntax
   – <%= expression %>              <jsp:expression>code</jsp:expression>
   – out.Println() yazmak yerine
• 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?
ahmetdemirelli@sabanciuniv.edu




                                 www.sabanciuniv.edu/kcenter

Weitere ähnliche Inhalte

Was ist angesagt?

Core java concepts
Core java  conceptsCore java  concepts
Core java conceptsRam132
 
JUnit & Mockito, first steps
JUnit & Mockito, first stepsJUnit & Mockito, first steps
JUnit & Mockito, first stepsRenato Primavera
 
JavaScript Control Statements II
JavaScript Control Statements IIJavaScript Control Statements II
JavaScript Control Statements IIReem Alattas
 
Angular 7 Firebase5 CRUD Operations with Reactive Forms
Angular 7 Firebase5 CRUD Operations with Reactive FormsAngular 7 Firebase5 CRUD Operations with Reactive Forms
Angular 7 Firebase5 CRUD Operations with Reactive FormsDigamber Singh
 
Regular Expressions in Java
Regular Expressions in JavaRegular Expressions in Java
Regular Expressions in JavaOblivionWalker
 
Grails 4: Upgrade your Game!
Grails 4: Upgrade your Game!Grails 4: Upgrade your Game!
Grails 4: Upgrade your Game!Zachary Klein
 
Java Annotation Processing: A Beginner Walkthrough
Java Annotation Processing: A Beginner WalkthroughJava Annotation Processing: A Beginner Walkthrough
Java Annotation Processing: A Beginner WalkthroughMahfuz Islam Bhuiyan
 
Making Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVMMaking Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVMRafael Winterhalter
 
MongoDB for Java Developers with Spring Data
MongoDB for Java Developers with Spring DataMongoDB for Java Developers with Spring Data
MongoDB for Java Developers with Spring DataChris Richardson
 
Regular Expressions Cheat Sheet
Regular Expressions Cheat SheetRegular Expressions Cheat Sheet
Regular Expressions Cheat SheetAkash Bisariya
 
Jetpack Compose a nova forma de implementar UI no Android
Jetpack Compose a nova forma de implementar UI no AndroidJetpack Compose a nova forma de implementar UI no Android
Jetpack Compose a nova forma de implementar UI no AndroidNelson Glauber Leal
 

Was ist angesagt? (20)

GMock framework
GMock frameworkGMock framework
GMock framework
 
Core java concepts
Core java  conceptsCore java  concepts
Core java concepts
 
Java Generics - by Example
Java Generics - by ExampleJava Generics - by Example
Java Generics - by Example
 
JUnit & Mockito, first steps
JUnit & Mockito, first stepsJUnit & Mockito, first steps
JUnit & Mockito, first steps
 
JavaScript Control Statements II
JavaScript Control Statements IIJavaScript Control Statements II
JavaScript Control Statements II
 
Angular 7 Firebase5 CRUD Operations with Reactive Forms
Angular 7 Firebase5 CRUD Operations with Reactive FormsAngular 7 Firebase5 CRUD Operations with Reactive Forms
Angular 7 Firebase5 CRUD Operations with Reactive Forms
 
Regular Expressions in Java
Regular Expressions in JavaRegular Expressions in Java
Regular Expressions in Java
 
Javascript essentials
Javascript essentialsJavascript essentials
Javascript essentials
 
Grails 4: Upgrade your Game!
Grails 4: Upgrade your Game!Grails 4: Upgrade your Game!
Grails 4: Upgrade your Game!
 
Java modules
Java modulesJava modules
Java modules
 
Java Annotation Processing: A Beginner Walkthrough
Java Annotation Processing: A Beginner WalkthroughJava Annotation Processing: A Beginner Walkthrough
Java Annotation Processing: A Beginner Walkthrough
 
Making Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVMMaking Java more dynamic: runtime code generation for the JVM
Making Java more dynamic: runtime code generation for the JVM
 
Vue js for beginner
Vue js for beginner Vue js for beginner
Vue js for beginner
 
MongoDB for Java Developers with Spring Data
MongoDB for Java Developers with Spring DataMongoDB for Java Developers with Spring Data
MongoDB for Java Developers with Spring Data
 
Regular Expressions Cheat Sheet
Regular Expressions Cheat SheetRegular Expressions Cheat Sheet
Regular Expressions Cheat Sheet
 
Introduction to gradle
Introduction to gradleIntroduction to gradle
Introduction to gradle
 
Second Level Cache in JPA Explained
Second Level Cache in JPA ExplainedSecond Level Cache in JPA Explained
Second Level Cache in JPA Explained
 
Angular 2
Angular 2Angular 2
Angular 2
 
Habilitar Korn Shell Linux
Habilitar Korn Shell LinuxHabilitar Korn Shell Linux
Habilitar Korn Shell Linux
 
Jetpack Compose a nova forma de implementar UI no Android
Jetpack Compose a nova forma de implementar UI no AndroidJetpack Compose a nova forma de implementar UI no Android
Jetpack Compose a nova forma de implementar UI no Android
 

Andere mochten auch

Kurumsal Java & Web Teknolojileri
Kurumsal Java & Web Teknolojileri Kurumsal Java & Web Teknolojileri
Kurumsal Java & Web Teknolojileri Ömer ÖZKAN
 
Gradle ile Proje Insası
Gradle ile Proje InsasıGradle ile Proje Insası
Gradle ile Proje InsasıÖmer ÖZKAN
 
Go ile Hızlı Web Uygulamaları
Go ile Hızlı Web UygulamalarıGo ile Hızlı Web Uygulamaları
Go ile Hızlı Web UygulamalarıEylem Ozekin
 
Challenges in Large-Scale Web Crawling
Challenges in Large-Scale Web CrawlingChallenges in Large-Scale Web Crawling
Challenges in Large-Scale Web CrawlingNate Murray
 
Kocaeli Üniversitesi - (JavaServer Faces) JSF
Kocaeli Üniversitesi -  (JavaServer Faces) JSFKocaeli Üniversitesi -  (JavaServer Faces) JSF
Kocaeli Üniversitesi - (JavaServer Faces) JSFMimar Aslan
 
Angularjs ve Angularjs 2 nedir?
Angularjs ve Angularjs 2 nedir?Angularjs ve Angularjs 2 nedir?
Angularjs ve Angularjs 2 nedir?Engin Polat
 
Current challenges in web crawling
Current challenges in web crawlingCurrent challenges in web crawling
Current challenges in web crawlingDenis Shestakov
 
AspNet MVC ile metin resim sifreleme (Steganography)
AspNet MVC ile metin resim sifreleme (Steganography)AspNet MVC ile metin resim sifreleme (Steganography)
AspNet MVC ile metin resim sifreleme (Steganography)Engin Polat
 

Andere mochten auch (11)

Kurumsal Java & Web Teknolojileri
Kurumsal Java & Web Teknolojileri Kurumsal Java & Web Teknolojileri
Kurumsal Java & Web Teknolojileri
 
XML
XMLXML
XML
 
Java Server Faces
Java Server FacesJava Server Faces
Java Server Faces
 
Gradle ile Proje Insası
Gradle ile Proje InsasıGradle ile Proje Insası
Gradle ile Proje Insası
 
Go ile Hızlı Web Uygulamaları
Go ile Hızlı Web UygulamalarıGo ile Hızlı Web Uygulamaları
Go ile Hızlı Web Uygulamaları
 
Challenges in Large-Scale Web Crawling
Challenges in Large-Scale Web CrawlingChallenges in Large-Scale Web Crawling
Challenges in Large-Scale Web Crawling
 
Kocaeli Üniversitesi - (JavaServer Faces) JSF
Kocaeli Üniversitesi -  (JavaServer Faces) JSFKocaeli Üniversitesi -  (JavaServer Faces) JSF
Kocaeli Üniversitesi - (JavaServer Faces) JSF
 
Web Crawlers
Web CrawlersWeb Crawlers
Web Crawlers
 
Angularjs ve Angularjs 2 nedir?
Angularjs ve Angularjs 2 nedir?Angularjs ve Angularjs 2 nedir?
Angularjs ve Angularjs 2 nedir?
 
Current challenges in web crawling
Current challenges in web crawlingCurrent challenges in web crawling
Current challenges in web crawling
 
AspNet MVC ile metin resim sifreleme (Steganography)
AspNet MVC ile metin resim sifreleme (Steganography)AspNet MVC ile metin resim sifreleme (Steganography)
AspNet MVC ile metin resim sifreleme (Steganography)
 

Ähnlich wie Java Web Uygulama Geliştirme

Java ee kursu-cekmekoy
Java ee kursu-cekmekoyJava ee kursu-cekmekoy
Java ee kursu-cekmekoysersld60
 
Mobil Cihaz Uygulamalarında Sql Server Ce Kullanımı
Mobil Cihaz Uygulamalarında Sql Server Ce KullanımıMobil Cihaz Uygulamalarında Sql Server Ce Kullanımı
Mobil Cihaz Uygulamalarında Sql Server Ce Kullanımıekinozcicekciler
 
Java ee kursu-bagcilar
Java ee kursu-bagcilarJava ee kursu-bagcilar
Java ee kursu-bagcilarsersld60
 
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş SüreciASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş SüreciSinan Bozkuş
 
Java ee kursu-atasehir
Java ee kursu-atasehirJava ee kursu-atasehir
Java ee kursu-atasehirsersld60
 
Neden Backbone.js'ten AngularJS'e Geçtik?
Neden Backbone.js'ten AngularJS'e Geçtik?Neden Backbone.js'ten AngularJS'e Geçtik?
Neden Backbone.js'ten AngularJS'e Geçtik?Omer Buyukoglu
 
Java ee kursu-catalca
Java ee kursu-catalcaJava ee kursu-catalca
Java ee kursu-catalcasersld60
 
Java ee kursu-umraniye
Java ee kursu-umraniyeJava ee kursu-umraniye
Java ee kursu-umraniyesersld60
 
Java ee kursu-gungoren
Java ee kursu-gungorenJava ee kursu-gungoren
Java ee kursu-gungorensersld60
 
Java ee kursu-gaziantep
Java ee kursu-gaziantepJava ee kursu-gaziantep
Java ee kursu-gaziantepsersld60
 
Java ee kursu-kagithane
Java ee kursu-kagithaneJava ee kursu-kagithane
Java ee kursu-kagithanesersld60
 
Solarwinds SAM ve Patch Manager
Solarwinds SAM ve Patch ManagerSolarwinds SAM ve Patch Manager
Solarwinds SAM ve Patch ManagerKavi International
 
Java ee kursu-zeytinburnu
Java ee kursu-zeytinburnuJava ee kursu-zeytinburnu
Java ee kursu-zeytinburnusersld60
 
Özcan Acar Ankara Cankaya Universitesi Wicket Webframework Sunumu
Özcan Acar  Ankara Cankaya Universitesi Wicket Webframework SunumuÖzcan Acar  Ankara Cankaya Universitesi Wicket Webframework Sunumu
Özcan Acar Ankara Cankaya Universitesi Wicket Webframework SunumuÖzcan Acar
 
Java ee kursu-esenyurt
Java ee kursu-esenyurtJava ee kursu-esenyurt
Java ee kursu-esenyurtsersld60
 
Java ee kursu-pendik
Java ee kursu-pendikJava ee kursu-pendik
Java ee kursu-pendiksersld60
 
Java ee kursu-avcilar
Java ee kursu-avcilarJava ee kursu-avcilar
Java ee kursu-avcilarsersld60
 

Ähnlich wie Java Web Uygulama Geliştirme (20)

Java ee kursu-cekmekoy
Java ee kursu-cekmekoyJava ee kursu-cekmekoy
Java ee kursu-cekmekoy
 
Mobil Cihaz Uygulamalarında Sql Server Ce Kullanımı
Mobil Cihaz Uygulamalarında Sql Server Ce KullanımıMobil Cihaz Uygulamalarında Sql Server Ce Kullanımı
Mobil Cihaz Uygulamalarında Sql Server Ce Kullanımı
 
Spring Framework
Spring FrameworkSpring Framework
Spring Framework
 
Java ee kursu-bagcilar
Java ee kursu-bagcilarJava ee kursu-bagcilar
Java ee kursu-bagcilar
 
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş SüreciASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
 
Java ee kursu-atasehir
Java ee kursu-atasehirJava ee kursu-atasehir
Java ee kursu-atasehir
 
Neden Backbone.js'ten AngularJS'e Geçtik?
Neden Backbone.js'ten AngularJS'e Geçtik?Neden Backbone.js'ten AngularJS'e Geçtik?
Neden Backbone.js'ten AngularJS'e Geçtik?
 
Web Application Testing
Web Application Testing Web Application Testing
Web Application Testing
 
Java ee kursu-catalca
Java ee kursu-catalcaJava ee kursu-catalca
Java ee kursu-catalca
 
Java ee kursu-umraniye
Java ee kursu-umraniyeJava ee kursu-umraniye
Java ee kursu-umraniye
 
Java ee kursu-gungoren
Java ee kursu-gungorenJava ee kursu-gungoren
Java ee kursu-gungoren
 
Java ee kursu-gaziantep
Java ee kursu-gaziantepJava ee kursu-gaziantep
Java ee kursu-gaziantep
 
Java ee kursu-kagithane
Java ee kursu-kagithaneJava ee kursu-kagithane
Java ee kursu-kagithane
 
Solarwinds SAM ve Patch Manager
Solarwinds SAM ve Patch ManagerSolarwinds SAM ve Patch Manager
Solarwinds SAM ve Patch Manager
 
Java ee kursu-zeytinburnu
Java ee kursu-zeytinburnuJava ee kursu-zeytinburnu
Java ee kursu-zeytinburnu
 
Özcan Acar Ankara Cankaya Universitesi Wicket Webframework Sunumu
Özcan Acar  Ankara Cankaya Universitesi Wicket Webframework SunumuÖzcan Acar  Ankara Cankaya Universitesi Wicket Webframework Sunumu
Özcan Acar Ankara Cankaya Universitesi Wicket Webframework Sunumu
 
Java ee kursu-esenyurt
Java ee kursu-esenyurtJava ee kursu-esenyurt
Java ee kursu-esenyurt
 
Ajax
Ajax Ajax
Ajax
 
Java ee kursu-pendik
Java ee kursu-pendikJava ee kursu-pendik
Java ee kursu-pendik
 
Java ee kursu-avcilar
Java ee kursu-avcilarJava ee kursu-avcilar
Java ee kursu-avcilar
 

Java Web Uygulama Geliştirme

  • 1. 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
  • 2. 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
  • 3. 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
  • 4. 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 .js dosaları html istemci response Resimler .swf dosyaları www.sabanciuniv.edu/kcenter
  • 5. 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
  • 6. Web Uygulamaları ( CGI ) CGI Programları *.exe,*.cgi... etc www.sabanciuniv.edu/kcenter
  • 7. 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 Hello.exe { static void Main(string[] args) C# ile yazılmış bir windows programı { Console.WriteLine(quot;Content-Type:text/htmlnquot;); Console.WriteLine(quot;Hello Worldquot;); } } www.sabanciuniv.edu/kcenter
  • 8. 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. .NET * . php *. asp * . dll •... * . class •..... •... J2EE www.sabanciuniv.edu/kcenter
  • 9. J2EE Uygulama Sunucuları J2EE Uygulama Sunucusu EJB container Web container WebComponents BusinessComponents Servlet SessionBean, jsp EntityBean, Html / xml MessageDrivenBean www.sabanciuniv.edu/kcenter
  • 10. 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
  • 11. 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
  • 12. Gerekli dosya ve klasörler Uygulama ana klasörü BookStore Özel klasör WEB-INF (dışarıdan erişime kapalı) classes Servlet class larınınn bulunacağı klasör lib Projede kullanılan extra kütüphaneler tlds Tag kütüphaneleri Uygulama konfigürasyon web.xml dosyası ( deployment descriptor ) HTML ve Uygulamada kullanılan jsp diğer dosyalar dosyaları www.sabanciuniv.edu/kcenter
  • 13. 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
  • 14. 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
  • 15. Web Tools Platform Ayarları-1 • Windows -> Preferences -> Server -> Installed JREs www.sabanciuniv.edu/kcenter
  • 16. Web Tools Platform Ayarları-2 www.sabanciuniv.edu/kcenter
  • 17. Web Tools Platform Ayarları-3 www.sabanciuniv.edu/kcenter
  • 18. Web Tools Platform Ayarları-4 • Servers -> Right Click -> New Server www.sabanciuniv.edu/kcenter
  • 19. Web Tools Platform Ayarları-5 www.sabanciuniv.edu/kcenter
  • 20. WTP - Yeni Proje Oluşturma-1 • Project Explorer -> Dynamic Web Projects -> New -> Dynamic Web Project www.sabanciuniv.edu/kcenter
  • 21. WTP - Yeni Proje Oluşturma-2 Servlet classlarının kaynak kodları Servlet classlarının kaynak kodları (*.java dosyaları ) ) (*.java dosyaları Web içeriği Web içeriği (web.xml, jsp ve (web.xml, jsp ve htmldosyaları ) ) htmldosyaları www.sabanciuniv.edu/kcenter
  • 22. Projeyi Sunucuda Çalıştırma-1 www.sabanciuniv.edu/kcenter
  • 23. Projeyi Sunucuda Çalıştırma-2 www.sabanciuniv.edu/kcenter
  • 24. 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
  • 25. 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> <form action=quot;index.jspquot; method=quot;GETquot;> <form action=quot;index.jspquot; method=quot;GETquot;> sim :<input type=quot;textquot; name=quot;isimquot; /><br> sim :<input type=quot;textquot; name=quot;isimquot; /><br> No :<input type=quot;textquot; name=quot;idquot; /><br> No :<input type=quot;textquot; name=quot;idquot; /><br> <input type=quot;submitquot; value=quot;Gonderquot;/> <input type=quot;submitquot; value=quot;Gonderquot;/> </form> </form> </body></html> </body></html> www.sabanciuniv.edu/kcenter
  • 26. HttpRequest & HttpResponse GET /downloads/index.jsp?isim=ahmet&no=447 HTTP 1.1 • HttpRequest GET /downloads/index.jsp?isim=ahmet&no=447 HTTP 1.1 Accept : : text/html Accept text/html Accept-Language: en-us – GET Accept-Language: en-us User-Agent: Mozilla /4.0 HTTP Header User-Agent: Mozilla /4.0 – POST HTTP Body POST /downloads/index.jsp HTTP 1.1 POST /downloads/index.jsp HTTP 1.1 Accept : text/html Accept : text/html Accept-Language: en-us Accept-Language: en-us User-Agent: Mozilla /4.0 User-Agent: Mozilla /4.0 isim=ahmet&no=447 HTTP Header isim=ahmet&no=447 HTTP Body • HttpResponse HTTP/1.1 200 OK HTTP/1.1 200 OK Content-Length: 114 Content-Length: 114 Date: Mon, 30 April 2006 11:07:44 GMT Date: Mon, 30 April 2006 11:07:44 GMT Content-Type: text/html Content-Type: text/html Server: Apache HTTP Header Server: Apache <html> <html> HTTP Body <head> </head><body> ....... <head> </head><body> ....... www.sabanciuniv.edu/kcenter
  • 27. Bir Sınıfın Servlet Olabilmesi için import java.io.*; import java.io.*; HttpServlet sınıfının HttpServlet sınıfının import javax.servlet.*; import javax.servlet.*; alt sınıfı olmak zorunda alt sınıfı olmak zorunda import javax.servlet.http.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet public class HelloWorld extends HttpServlet { { public void doGet(HttpServletRequest req,HttpServletResponse res) public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException throws ServletException, IOException { { PrintWriter out = res.getWriter(); PrintWriter out = res.getWriter(); out.println(quot;Hello Worldquot;); out.println(quot;Hello Worldquot;); } } GET ve POST isteklerini karşılayacak GET ve POST isteklerini karşılayacak } } olan doGet() veya doPost() methodların olan doGet() veya doPost() methodların yazılması gerekir. Methodlar yazılmazsa yazılması gerekir. Methodlar yazılmazsa gelen istekler cevapsız kalır. gelen istekler cevapsız kalır. www.sabanciuniv.edu/kcenter
  • 28. doGet() & doPost() methodları Web Container HttpRequest GET HttpRequest GET HelloWorld.class HttpRequest POST Browser HttpRequest POST service ( HttpRequest req , HttpResponse res ) doGet ( HttpRequest req , HttpResponse res ) doPost ( HttpRequest req , HttpResponse res ) HttpResponse HttpResponse www.sabanciuniv.edu/kcenter
  • 29. Servlet Yaşam Döngüsü Servlet classının hafızaya ilk defa Başlangıç Servlet classının hafızaya ilk defa Başlangıç yüklendiğinde çalışması gereken kodlar yüklendiğinde çalışması gereken kodlar init() init() bu method içerisineyazılır bu method içerisineyazılır stemciden gelen isteğin ilk karşılandığı stemciden gelen isteğin ilk karşılandığı Hizmet Hizmet methoddur. steğin türünü belirleyip ilgili methoddur. steğin türünü belirleyip ilgili service() methoda yönlendirir. service() methoda yönlendirir. doGet() doGet() GET isteklerine cevap veren method doPost() GET isteklerine cevap veren method doPost() POST isteklerine cevap veren method POST isteklerine cevap veren method Sonlandırma Servlet hafızadan kaldırılırken yapılacak Sonlandırma Servlet hafızadan kaldırılırken yapılacak işlemleri bu method içerisine yazılır destroy() işlemleri bu method içerisine yazılır destroy() www.sabanciuniv.edu/kcenter
  • 30. 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
  • 31. 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
  • 32. 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
  • 33. Çö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
  • 34. 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
  • 35. JSP ifadeleri • Expression XML Syntax – <%= expression %> <jsp:expression>code</jsp:expression> – out.Println() yazmak yerine • 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
  • 36. 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
  • 37. 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
  • 38. 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
  • 39. Sorular? ahmetdemirelli@sabanciuniv.edu www.sabanciuniv.edu/kcenter