Java Web Uygulama Geliştirme

50 %
50 %
Information about Java Web Uygulama Geliştirme

Published on September 24, 2007

Author: ahmetdemirelli

Source: slideshare.net

Description

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

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

Add a comment

Related pages

Java ile Web Uygulaması Geliştirme 101 - Yusuf Çakmak

Web uygulamaları dinamik web siteleri yapmak için kullanılır. Java, Servlet ve JSP gibi yapılar ile web uygulamaları geliştirilmesine destek sağlıyor.
Read more

Java EE ile Web Uygulamaları Geliştirme - YouTube

Java EE kullanarak Web uygulamaları geliştirmek üzere gereken teknik ve yöntemlerin derlendiği orta-ileri düzey bir eğitim dersidir.
Read more

JavaScript ile uygulama geliştirme . 1- Giriş – YAZILIM ...

JavaScript ile uygulama geliştirme. ... sonradan o dönemler Java çok popüler olduğu için ... Bir web sitesindeki javascript kodlarını ...
Read more

Java programlarını JDK ile geliştirme

Java Geliştirme Seti'ni (JDK) kullanarak Java programları geliştirmeye nasıl başlayabilirim? Daha fazla bilgi edinmek için tıklayın
Read more

Programlamanın Önemi ve Java ile Uygulama Geliştirme ...

Android uygulama geliştirme eğitimi, mobil ortamlarda uygulama geliştirmek isteyenler için oldukça doğru bir tercih ... Java, Mobil, .Net ve Web
Read more

Java teknik bilgisi nereden alınabilir

Java uygulamalarını geliştirmek için Java Geliştirme ... Java EE platformu, çok katmanlı, Web tabanlı ... sağlayarak uygulama gelişimini ...
Read more

NetBeans ile Java 01: NetBeans ile Uygulama Geliştirmeye ...

Görsel Mobil Cihazlara Uygulama geliştirme. ... Java’da bir web uygulaması geliştirmek için JSP (Java server pages) ve Servlet bilmeniz gerekiyor.
Read more

JAVA EĞİTİMİ | veriakademi.com

Java Eğitimi: Açık kaynaklı yazılım dünyasının en popüler yazılım geliştirme teknolojisi olan Java'yı, derinlemesine ele aldığımız bir ...
Read more

Android Uygulama Geliştirme | Android Uygulamalar

Android Yazılım Geliştirme konusunda biraz araştırma yaptıysanız, hazırlanan sayfaların çoğunda “Android Uygulama Geliştirme için Eclipse ...
Read more