- 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? ahmetdemirelli@sabanciuniv.edu www.sabanciuniv.edu/kcenter