Java Web Uygulama Geliştirme

17,132
-1

Published on

Sabancı Üniversitesinde ve TBD de vermiş olduğum seminerin slaytları.Java ile Web uygulaması nasıl geliştirilir giriş Seviyesi bilgilendirme

Published in: Technology

Java Web Uygulama Geliştirme

  1. 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. 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. 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. 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. 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. 6. Web Uygulamaları ( CGI ) CGI Programları *.exe,*.cgi... etc www.sabanciuniv.edu/kcenter
  7. 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. 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. 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. 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. 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. 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. 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. 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. 15. Web Tools Platform Ayarları-1 • Windows -> Preferences -> Server -> Installed JREs www.sabanciuniv.edu/kcenter
  16. 16. Web Tools Platform Ayarları-2 www.sabanciuniv.edu/kcenter
  17. 17. Web Tools Platform Ayarları-3 www.sabanciuniv.edu/kcenter
  18. 18. Web Tools Platform Ayarları-4 • Servers -> Right Click -> New Server www.sabanciuniv.edu/kcenter
  19. 19. Web Tools Platform Ayarları-5 www.sabanciuniv.edu/kcenter
  20. 20. WTP - Yeni Proje Oluşturma-1 • Project Explorer -> Dynamic Web Projects -> New -> Dynamic Web Project www.sabanciuniv.edu/kcenter
  21. 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. 22. Projeyi Sunucuda Çalıştırma-1 www.sabanciuniv.edu/kcenter
  23. 23. Projeyi Sunucuda Çalıştırma-2 www.sabanciuniv.edu/kcenter
  24. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 39. Sorular? ahmetdemirelli@sabanciuniv.edu www.sabanciuniv.edu/kcenter

×