SlideShare ist ein Scribd-Unternehmen logo
1 von 64
Downloaden Sie, um offline zu lesen
Kurumsal Java.com
Özcan Acar © 2009
Web Framework Gökyüzünde
     Yeni bir Yıldız!

              Özcan Acar
             acar@unitedinter.net
         http://www.ozcanacar.com
        http://www.kurumsaljava.com


                                                          Kurumsal Java.com
                                                          Kurumsal Java.com
                                      Özcan Acar © 2009
                                                 © 2009
Wicket‘in Varoluş Nedeni




                                     Kurumsal Java.com
                                     Kurumsal Java.com
                 Özcan Acar © 2009
                            © 2009
Özcan Acar Hakkında
public class OezcanAcar
{
     public static void main(String[] args)
     {
           Acar oezcan = new Acar();
           oezcan.setBirthday(quot;18.07.1974quot;);
           oezcan.setBirthplace(quot;Izmirquot;);
           oezcan.setJob(quot;Bilgisayar Mühendisiquot;);
          oezcan.setPassion(quot;J2EEquot;);
     }
}                                                     Kurumsal Java.com
                                                      Kurumsal Java.com
                                  Özcan Acar © 2009
                                             © 2009
Özcan Acar Hakkında




                                  Kurumsal Java.com
                                  Kurumsal Java.com
              Özcan Acar © 2009
                         © 2009
Kurumsal Java.com
                    Kurumsal Java.com
Özcan Acar © 2009
           © 2009
Kurumsal Java.com
                    Kurumsal Java.com
Özcan Acar © 2009
           © 2009
Sunumun İçeriği
API anlatmaya gelmedim! Wicket‘i anlamak için
web programcılığında gerekli soyut konseptler
üzerine yoğunlaşacağız.
Bir tezim var: 2 boyutlu web programcılığı
yapıyoruz. Neden?
Java ile web programcılığının tarihçesi
Wicket tanıtımı
Wicket ile Web Komponentleri



                                                         Kurumsal Java.com
                                                         Kurumsal Java.com
                                     Özcan Acar © 2009
                                                © 2009
Giriş

Kimler daha önce
Java teknolojilerini
kullanarak web
programcılığı yaptı?

                                    Kurumsal Java.com
                                    Kurumsal Java.com
                Özcan Acar © 2009
                           © 2009
Web Programcılığı
Web programcılıgı klasik maasaüstü
programcılığından farklıdır.
Yazılan kod dinamik olarak web tarayıcısı için
gerekli HTML kodunu oluşturur.
Web aplikasyonu için yazılan kodun aynı anda
birden fazla kullanıcıyı desteklemesi lazım
(Multithreading).
Web aplikasyonun değişik türdeki bilgisayar,
işletim sistemi ve web tarayıcısını desteklemesi
gerekir.


                                                         Kurumsal Java.com
                                                         Kurumsal Java.com
                                     Özcan Acar © 2009
                                                © 2009
Web Aplikasyonu

  HTTP Request


                   HTML Sayfaları
                      (JSP)

   HTTP Response




                                         Kurumsal Java.com
                                         Kurumsal Java.com
                     Özcan Acar © 2009
                                © 2009
Java Web Aplikasyonu



HTML Sayfaları
                   Java Nesneleri
   (JSP)




                                        Kurumsal Java.com
                                        Kurumsal Java.com
                    Özcan Acar © 2009
                               © 2009
Tez: 2 boyutlu web yazılımı
yapıyoruz! 3. boyut neresi?

 2 boyutlu           3 boyutlu
 web programcılığı   web programcılığı
 Controller,
                     Gerçek Java
 Model, View,
                     Komponentleri
 JSTL
                           Komponent




                                           Kurumsal Java.com
                                           Kurumsal Java.com
                       Özcan Acar © 2009
                                  © 2009
Beklentilerimiz
Web programcılığı da olsa nesneye yönelik
programcılığı uygulamak istiyoruz.
Sadece Java dilinde yazılım yapmak istiyoruz. JSTL ya
da EL gibi web‘e özel bir yazılım tekniğini öğrenmek
zorunda kalmak istemiyoruz.
Yazılımcı olarak amacımız bakımı kolay ve her yeni
müşteri gereksinimi ile kolayca genişletilebilir yazılım
sistemleri geliştirmektir. Kullandığımız araçlar bunu
desteklemeli.
Kodun tekrar kullanılabilmesi (reuse) önemlidir. Web
programcılığında, tekrar kullanılabilen Java
komponentleri oluşturmak zor bir iş haline gelmemeli.
                                                          Kurumsal Java.com
                                                          Kurumsal Java.com
                                      Özcan Acar © 2009
                                                 © 2009
Time To Change
Java ile web programcılığı hakkında
bildiklerinizi unutun!
Wicket ile web programcılığına 3.
boyut geliyor!
Wicket web komponentleri




                                               Kurumsal Java.com
                                               Kurumsal Java.com
                           Özcan Acar © 2009
                                      © 2009
Konsept
İdeal bir web projesi mimarisi nasıl
olmalı?
MVC Design Pattern
Komponent nedir?
Web komponent nedir?



                                               Kurumsal Java.com
                                               Kurumsal Java.com
                           Özcan Acar © 2009
                                      © 2009
İdeal Bir Web Proje Mimarisi
               Üç Katmanlı Mimari

Presentation    Business       Persistence

 JSP            Interface           DAO
     Servlet
Struts
                                                               DB
       JSF
               InterfaceImpl    DAOImpl
Wicket




                                                        Kurumsal Java.com
                                                        Kurumsal Java.com
                                    Özcan Acar © 2009
                                               © 2009
MVC Design Pattern
 Gelen                          İsteği
request                      yönlendirme
               Front                             Controller
             Controller             Model

Gönderilen
 response                                             Model
                 Model

                                                    nesnesini
                                                    oluşturma
                          HTML
                          çıktısı
             View


                                                                Kurumsal Java.com
                                                                Kurumsal Java.com
                                            Özcan Acar © 2009
                                                       © 2009
Komponent

             Tekrar kullanılabilir kod
             birimi.
             İç dünyasını gizler.
             Tanımlanmış interface
Komponent    sınıflar üzerinden kullanılır.
             Örneğin Facade.
             Jar dosyasında dağıtılabilir.
             Kullanıldığı ortama göre
             konfigüre edilebilir.

                                      Kurumsal Java.com
                                      Kurumsal Java.com
                  Özcan Acar © 2009
                             © 2009
Web Komponent
Web Aplikasyon

                             Bir web aplikasyonda
                             konfigürasyon yapılarak
                             kullanılan modül.
    Login         Register

                             Diğer komponent
                             özelliklerine sahiptir.
                             Jar dosyası olarak
                 Friends
   Chat
                             aplikasyona dahil edilebilir.




                                                      Kurumsal Java.com
                                                      Kurumsal Java.com
                                  Özcan Acar © 2009
                                             © 2009
Java İle Web Programcılığın
          Tarihçesi
 Servlets
 JSP
 JSTL
 MVC Web Frameworks (Struts, Spring MVC)
 User Interface Component Model Frameworks (JSF)




                                                     Kurumsal Java.com
                                                     Kurumsal Java.com
                                 Özcan Acar © 2009
                                            © 2009
Servlets
Web programcılığı yapılabilen ilk Java teknolojisi.
Sun tarafından tanımlanmış bir standart (API). İhtiva ettiği interface‘ler
Tomcat gibi bir application server tarafından implemente edilir.
Servlet web tarayıcısı üzerinden gelen kullanıcı istediğini cevaplayıp, HTML
sayfası oluşturan bir Java nesnedir.
Aplikasyon serveri (Tomcat, Resin) bünyesinde çalışır. Aplikasyon server
HTTP protokolü ile Servlet sınıfı arasındaki köprüdür.
ja v a x.se r v l e t .h t t p .Ht t p Se r v le t sın ıfın ı g e n işl e t e n he r sın ıf
Se r v le t h a l in e g e l ir .
Se r v le t w e b a p lik a sy o n la r ı UR L t a ba n lıd ır
( h t t p :/ / d o m a in .c o m / se r v le t / So m e Se r v l e t ) . w e b.xm l
k o n f ig ü r a sy o n d o sy a sın d a h a n g i UR L d e n h a n g i Se r v l e t
sın ıfın ın so r u m l u o ld u ğu t a n ım l a n ır .

                                                                                      Kurumsal Java.com
                                                                                      Kurumsal Java.com
                                                                  Özcan Acar © 2009
                                                                             © 2009
Servlet Multithreading
public class HelloWorldServlet extends HttpServlet
{
    private int counter = 0;
    public void service(HttpServletRequest request,
                       HttpServletResponse response)
                      throws ServletException, IOException
    {
        counter ++;
        response.setContentType(quot;text/htmlquot;);
        ServletOutputStream output = response.getOutputStream();
        output.print(quot;<h1>Sayac: quot; + counter +quot;</h1>quot;);
    }
}


                                                                    Kurumsal Java.com
                                                                    Kurumsal Java.com
                                                Özcan Acar © 2009
                                                           © 2009
Servlet Teknolojisinin Dezavantajları
  HTML kodu Servlet sınıfında oluşturulduğundan, Servlet sınıflarının bakımı
  ve geliştirilmesi zordur!
  Geniş kapsamlı Servlet aplikasyonları çok kompleks bir yapıya dönüşebilir.
  Programcıların, aplikasyonun her bölümünü aynı seviyede anlamaları
  zorlaşabilir.
  Her yeni müşteri gereksiniminin getirdiği değişiklikler, bakım ve geliştirme
  sürecini zora sokabilir.
  HTML kodu programcılar tarafından geliştirilmek zorundadır. Web design
  yapan ekibin Java bilgisi olmadan Servlet sınıfları üzerinde modifikasyon
  yapmaları mümkün değildir.
  Servlet aplikasyonlarında HTML kodu da üretildiği için kodun bol olduğu
  sınıflar oluşur.



                                                                          Kurumsal Java.com
                                                                          Kurumsal Java.com
                                                      Özcan Acar © 2009
                                                                 © 2009
JSP – Java Server Pages
Servletler tarafından template olarak kullanılmak üzere
geliştirilmiş web teknolojisi. Bir standart.
Application server JSP sayfalarını compile esnasında Servlet
sınıflarına dönüştürür.
      1. Request                      2. Veriyi ekler
                         Servlet

                                3. Yönlendirir HttpServletRequest

      5. Response                    4. Veriyi okur
                        (JSP)

                                                               Kurumsal Java.com
                                                               Kurumsal Java.com
                                           Özcan Acar © 2009
                                                      © 2009
JSP – Java Server Pages
<html>
<body>
<%
     for(int i=0; i<5; i++)
     {
          out.print(“<h1>Merhaba Dünya</h2>);
     }
%>
</body>
</html>


                                                          Kurumsal Java.com
                                                          Kurumsal Java.com
                                      Özcan Acar © 2009
                                                 © 2009
JSP Teknolojisinin Dezavantajları

 JSP Servlet teknolojisi ile beraber kullanıldığında JSP ve
 Servlet arasında nesnesel bir ilişki yoktur. Oluşturulan HTML
 kodunda yer alan linkler üzerinden ihtiyaç duyulan Servlet
 sınıfları adreslenir. Servlet bir JSP nesne referansına
 erişemediği için HttpServletRequest üzerinden JSP için
 gerekli verileri oluşturur.
 Kompleks JSP sayfalarında Java kodunun kullanılması, JSP
 sayfalarının bakımını güçleştirir.
 JSP sayfalarnda değişiklik yapmak isteyen web design
 ekibinin Java biliyor olması gerekir. Web designcıların
 yaptıkları en ufak bir değişiklik bile web aplikasyonu
 çalışmaz hale getirebilir.
                                                                Kurumsal Java.com
                                                                Kurumsal Java.com
                                            Özcan Acar © 2009
                                                       © 2009
JSP Teknolojisinin Dezavantajları

 Java kodu kullanılan JSP sayfalarının HTML editörlerinde
 gösterim problemi oluşmaktadır.
 JSP sayfalarında Java kodunu kullanılması hata tespit ve
 debugging işlemlerini zorlaştırmaktadır.
 Test güdümlü (Test Driven Development) JSP yazılımı bir
 application server (Tomcat) kullanmadan mümkün değildir
 (HttpUnit).




                                                               Kurumsal Java.com
                                                               Kurumsal Java.com
                                           Özcan Acar © 2009
                                                      © 2009
JSTL – Java Standard Tag Library
  Yeni bir web komponent modelini ihtiva eder.
  JSP sayfasında Java kodu yerine, tag olarak bilinen ve server
  tarafında bir Java sınıfında yer alan koda denk gelen birimler
  kullanılır. Tagler komponenttir.
  Web design ekibi Java ögrenmek zorunda kalmadan JSP
  sayfaları oluşturabilir.
  Tagler XML syntax benzeri bir notasyon ile kullanırlar.
  Verilere ulaşmak için EL (Expression Language)
  kullanılabilir.
  <c:out value=quot;${username}quot;/>
                                                                 Kurumsal Java.com
                                                                 Kurumsal Java.com
                                             Özcan Acar © 2009
                                                        © 2009
JSTL – Java Standard Tag Library
 <%@ taglib prefix=quot;cquot; uri=quot;http://java.sun.com/jstl/corequot; %>
 <p><h1>Müsteri Isimleri</h1></p>
 <c:forEach items=quot;${addresses}quot; var=quot;addressquot;>
   <c:choose>
     <c:when test=quot;${not empty address.lastName}quot; >
       <c:out value=quot;${address.lastName}quot;/><br/>
     </c:when>
   <c:otherwise>
     N/A<br/>
  </c:otherwise>
 </c:choose>
                                                                       Kurumsal Java.com
                                                                       Kurumsal Java.com
                                                   Özcan Acar © 2009
                                                              © 2009
JSTL – Java Standard Tag Library
  JSTL kullanılmış olsa bile JSP teknolojisi ile geniş kapsamlı
  web programları oluşturmak kolay değildir. JSP sayfalarında
  HTML gösterimi yanı sıra navigasyon ve verilerin
  validasyonu (validation) gibi kompleks işlemlerin yapılması
  gerekmektedir. Bu işlemlerin JSP sayfalarında yapılması, JSP
  sayfalarının bakımını ve geliştirilmesini zora sokmaktadır.
  Navigasyon ve validasyon gibi işlemlerin JSP sayfalarının
  dışında, başka bir mekanizma kullanılarak yapılması
  gerekmektedir. Bu ihtiyacı karşılamak amacıyla Struts, Spring
  MVC ve WebWork gibi web frameworkler doğmuştur.




                                                                Kurumsal Java.com
                                                                Kurumsal Java.com
                                            Özcan Acar © 2009
                                                       © 2009
MVC Frameworks
 Gelen                          İsteği
request                      yönlendirme
               Front                             Controller
             Controller             Model

Gönderilen
 response                                             Model
                 Model

                                                    nesnesini
                                                    oluşturma
                          HTML
                          çıktısı
             View


                                                                Kurumsal Java.com
                                                                Kurumsal Java.com
                                            Özcan Acar © 2009
                                                       © 2009
MVC Frameworks




                               Kurumsal Java.com
                               Kurumsal Java.com
           Özcan Acar © 2009
                      © 2009
User Interface Component Model
           Frameworks
 JSF (Java Server Faces), Tapestry gibi web frameworkleri
 komponent modeline sahiptir.
 HTML arayüzü oluşturmak için Java komponentleri
 kullanılır.
 Komponentleri HTML sayfalarında kullanabilmek için
 JSTL, EL tarzı programlama teknikleri kullanılır.




                                                               Kurumsal Java.com
                                                               Kurumsal Java.com
                                           Özcan Acar © 2009
                                                      © 2009
Tez: İki boyutlu web yazılımı
 yapıyoruz! 3. boyut neresi?

  2 boyutlu           3 boyutlu
  web programcılığı   web programcılığı
  Controller,
                      Gerçek Java
  Model, View,
                      Komponentleri
  JSTL
                            Komponent




                                            Kurumsal Java.com
                                            Kurumsal Java.com
                        Özcan Acar © 2009
                                   © 2009
Neden 2. boyutta kalındı?
JSP Sayfası              Controller Sınıfı
<%@ taglib prefix= “c“   public class Controller
  uri=..../>             {
                         }



XML Konfigürasyon        Model Sınıfı
<config>                 public class Model
...                      {
</config>                }

                                                        Kurumsal Java.com
                                                        Kurumsal Java.com
                                    Özcan Acar © 2009
                                               © 2009
Neden 2. boyutta kalındı?

Mevcut web frameworklerde gerçek anlamda Java
komponent oluşturulması ve kullanımı mümkün değil.


Bize komponent modeli olarak satılan bir takım JSTL
tag kütüphaneleri ve JSF den tanıdığımız user interface
komponentleri

Tekrar kullanılanabilir web komponentleri oluşturmak
mümkün değil.


                                                              Kurumsal Java.com
                                                              Kurumsal Java.com
                                          Özcan Acar © 2009
                                                     © 2009
Kısaca Wicket
Açık Kaynaklı (Open Source) web framework
Komponent tabanlı (Component Based)
HTML Markup kodunu ve Java kodunu ayırır.
JSTL ya da EL (Expression Language) gibi bir
progragramlama tekniğini gereksiz kılar. Basit Java
(POJO – Plain Old Java Object) sınıfları kullanır.
Çok az konfigürasyonu gerekli kılar. XML
konfigürasyon dosyası yoktur.
Java ve HTML‘i bilenler kısa zamanda Wicket‘i
ögrenebilir.
Spring ile birebir entegre edilebilir.
                                                             Kurumsal Java.com
                                                             Kurumsal Java.com
                                         Özcan Acar © 2009
                                                    © 2009
Kısaca Wicket
WicketTester sınıfı ile test güdümlü yazılımı ve
akseptans (acceptance – onay/kabul) testlerinin
oluşturulmasını destekler.
Javascript kodu yazmadan Ajax desteği sağlar.




                                                              Kurumsal Java.com
                                                              Kurumsal Java.com
                                          Özcan Acar © 2009
                                                     © 2009
Wicket Konseptleri
Application
Page
Komponentler
Modeller
Paneller




                                      Kurumsal Java.com
                                      Kurumsal Java.com
                  Özcan Acar © 2009
                             © 2009
Application

Web aplikasyonun başlangıç noktasıdır (Main Entry
Point).
Giriş sayfasını (Home Page) tanımlar.
Spring ile entegrasyonun gerçekleştiği
(SpringComponentInjector) yerdir.




                                                            Kurumsal Java.com
                                                            Kurumsal Java.com
                                        Özcan Acar © 2009
                                                   © 2009
Application
                             web.xml konfigürasyonu
<filter>
    <filter-name>wicket</servlet-name>
    <filter-class>
        org.apache.wicket.protocol.http.WicketFilter
    </filter-class>
    <init-param>
        <param-name>applicationClassName</param-name>
        <param-value>
             com.company.MyApplication
        </param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</filter>




                                                               Kurumsal Java.com
                                                               Kurumsal Java.com
                                           Özcan Acar © 2009
                                                      © 2009
Wicket Konseptleri
Application
Page
Komponentler
Modeller
Paneller




                                      Kurumsal Java.com
                                      Kurumsal Java.com
                  Özcan Acar © 2009
                             © 2009
Page
Application


    HomePage    LoginPage   RegisterPage        BlogPage



public abstract class HomePage extends WebPage
{
    public SmartWicketPage()
    {
        super();
        buildGui();
    }

     public abstract void buildGui();
}

                                                               Kurumsal Java.com
                                                               Kurumsal Java.com
                                           Özcan Acar © 2009
                                                      © 2009
Wicket Konseptleri
Application
Page
Komponentler
Modeller
Paneller




                                      Kurumsal Java.com
                                      Kurumsal Java.com
                  Özcan Acar © 2009
                             © 2009
Komponentler
Label            Image          Palette
MultiLineLabel   Link           CheckGroup
Button           Tree           DropDownChoise
SubmitLink       Panel          RadioGroup
TextField        Loop           Select
CheckBox         Border         ImageMap
TextArea         Fragment
ListChoise       PageLink
RadioChoise      ExternalLink
                                                    Kurumsal Java.com
                                                    Kurumsal Java.com
                                Özcan Acar © 2009
                                           © 2009
Komponentler ve Markup
HTML sayfalarında Wicket komponentleri wicket:id ile
kullanılır.
HTML
<h1 wicket:id= msg >
       Komponent tarafından değiştirilir
</h1>
 Java Kodu
 new Label( msg , “Hello, World!”);

 Ekran Çıktısı
 <h1>Hello, World!</h1>

                                                           Kurumsal Java.com
                                                           Kurumsal Java.com
                                       Özcan Acar © 2009
                                                  © 2009
Komponentler ve Markup
Page ve Panel gibi komponentlerin kendi HTML dosyaları
vardır.
Komponentler ve sahip oldukları HTML sayfaları aynı
Java package içinde yer alır.




                                                            Kurumsal Java.com
                                                            Kurumsal Java.com
                                        Özcan Acar © 2009
                                                   © 2009
Merhaba Dünya Örneği




                                  Kurumsal Java.com
                                  Kurumsal Java.com
              Özcan Acar © 2009
                         © 2009
Wicket Konseptleri
Application
Page
Komponentler
Modeller
Paneller




                                      Kurumsal Java.com
                                      Kurumsal Java.com
                  Özcan Acar © 2009
                             © 2009
Modeller
Wicket komponentleri ile veri taşıyıcı Java sınıfları bir araya
getirmek için kullanılırlar.


                                                  Person
 Label(“name“,model)                               (POJO)

                                                + name:String

                      PropertyModel



new TextField(“namequot;,
              new PropertyModel(getPerson(), “namequot;));


                                                                Kurumsal Java.com
                                                                Kurumsal Java.com
                                            Özcan Acar © 2009
                                                       © 2009
Wicket Konseptleri
Application
Page
Komponentler
Modeller
Paneller




                                      Kurumsal Java.com
                                      Kurumsal Java.com
                  Özcan Acar © 2009
                             © 2009
Paneller
Birden fazla wicket komponentini gruplamak için
kullanılır.
Kendi HTML dosyası vardır.
Paneller kullanılarak tekrar kullanılabilir web
komponentleri oluşturulabilir.




                                                             Kurumsal Java.com
                                                             Kurumsal Java.com
                                         Özcan Acar © 2009
                                                    © 2009
Login Web Komponenti




                                  Kurumsal Java.com
                                  Kurumsal Java.com
              Özcan Acar © 2009
                         © 2009
Login Web Komponenti
              LoginPage.java
                    LoginPage.html

                   LoginPanel.java
                   LoginPanel.html


                      LoginForm


                        TextField

                    PropertyModel

                         Account

                                        Kurumsal Java.com
                                        Kurumsal Java.com
                    Özcan Acar © 2009
                               © 2009
Login Web Komponenti
  LoginPage.java
import org.apache.wicket.markup.html.WebPage;

import smart.web.login.presentation.panel.LoginPanel;

public class LoginPage extends WebPage
{
    public LoginPage()
    {
        super();
        add(new LoginPanel(quot;loginpanelquot;));
    }
}




                                                           Kurumsal Java.com
                                                           Kurumsal Java.com
                                       Özcan Acar © 2009
                                                  © 2009
Login Web Komponenti
  LoginPage.html

<html>
<head/>

<body>
<div wicket:id=quot;loginpanelquot;/>

</body>
</html>




                                                    Kurumsal Java.com
                                                    Kurumsal Java.com
                                Özcan Acar © 2009
                                           © 2009
Login Web Komponenti
  LoginPanel.java

import org.apache.wicket.markup.html.panel.Panel;
import smart.web.login.presentation.form.LoginForm;

public class LoginPanel extends Panel
{
    public LoginPanel(final String arg0)
    {
        super(arg0);
        add(new LoginForm(quot;loginformquot;));
    }
}




                                                           Kurumsal Java.com
                                                           Kurumsal Java.com
                                       Özcan Acar © 2009
                                                  © 2009
Login Web Komponenti
                                             LoginPanel.html
<wicket:panel>
<form wicket:id=quot;loginformquot;>
  <table width=quot;100%quot; cellspacing=quot;1quot;>
  <tr>
    <td width=quot;100%quot; class=quot;text11quot; colspan=quot;3quot;>
       <div wicket:id=quot;feedbackquot;></div></td>
  </tr>
  <tr>
    <td width=quot;13%quot; >
       <wicket:messagekey=quot;login.emailquot;>Email</wicket:message>:
    </td>
    <td width=quot;82%quot;>
        <span wicket:id=quot;email.borderquot;>
            <input size=quot;20quot; maxlength=quot;50„ wicket:id=quot;emailquot;
                   class=quot;inputfieldquot; />
         </span>
    </td> ..........
</wicket:panel>

                                                                    Kurumsal Java.com
                                                                    Kurumsal Java.com
                                                Özcan Acar © 2009
                                                           © 2009
Login Web Komponenti
public class LoginForm extends Form
                                                 LoginForm.java
{
    public LoginForm(final String pId)
    {
        super(pId);
        add(new TextField(quot;emailquot;,
               new PropertyModel(getAccount(), quot;emailquot;)).
                         setRequired(true));
        add(new PasswordTextField(quot;passwordquot;,
                new PropertyModel(getAccount(), quot;passwordquot;)).
                          setRequired(true));
    }

    protected final void onSubmit()
    {
        LoginResult result =
                  manager.login(getAccount().getEmail(),
                         getAccount().getPassword());

        // LOGIN OK
        if(result.getStatus() ==
                  LoginManagerStatusCodes.LOGIN_OK.getValue()) .......
}

                                                                       Kurumsal Java.com
                                                                       Kurumsal Java.com
                                                   Özcan Acar © 2009
                                                              © 2009
Login Web Komponenti




                                  Kurumsal Java.com
                                  Kurumsal Java.com
              Özcan Acar © 2009
                         © 2009
Web Komponent
Web Aplikasyon

                             Bir web aplikasyonda
                             konfigürasyon yapılarak
                             kullanılan modül.
    Login         Register

                             Diğer komponent
                             özelliklerine sahiptir.
                             Jar dosyası olarak
                 Friends
   Chat
                             aplikasyona dahil edilebilir.




                                                      Kurumsal Java.com
                                                      Kurumsal Java.com
                                  Özcan Acar © 2009
                                             © 2009
Web Komponent

                Login komponentini bir
                Jar dosyası haline
                getirerek, istediğimiz bir
                projede kullanabiliriz.
Login
             Java
             add(new LoginPanel(quot;loginpanelquot;));


             HTML
             <div wicket:id=quot;loginpanelquot;/>


                                                 Kurumsal Java.com
                                                 Kurumsal Java.com
                             Özcan Acar © 2009
                                        © 2009
SON
İlginiz için teşekkür ederim.




                                                Kurumsal Java.com
                            Özcan Acar © 2009

Weitere ähnliche Inhalte

Was ist angesagt?

Java ee kursu-esenyurt
Java ee kursu-esenyurtJava ee kursu-esenyurt
Java ee kursu-esenyurtsersld60
 
Java ee kursu-umraniye
Java ee kursu-umraniyeJava ee kursu-umraniye
Java ee kursu-umraniyesersld60
 
Java ee kursu-pendik
Java ee kursu-pendikJava ee kursu-pendik
Java ee kursu-pendiksersld60
 
Java ee kursu-zeytinburnu
Java ee kursu-zeytinburnuJava ee kursu-zeytinburnu
Java ee kursu-zeytinburnusersld60
 
Java ee kursu-bursa
Java ee kursu-bursaJava ee kursu-bursa
Java ee kursu-bursasersld60
 
Java ee kursu-gungoren
Java ee kursu-gungorenJava ee kursu-gungoren
Java ee kursu-gungorensersld60
 
Java ee kursu-catalca
Java ee kursu-catalcaJava ee kursu-catalca
Java ee kursu-catalcasersld60
 
Java ee kursu-gaziantep
Java ee kursu-gaziantepJava ee kursu-gaziantep
Java ee kursu-gaziantepsersld60
 
Java ee kursu-silivri
Java ee kursu-silivriJava ee kursu-silivri
Java ee kursu-silivrisersld60
 
Java ee kursu-kagithane
Java ee kursu-kagithaneJava ee kursu-kagithane
Java ee kursu-kagithanesersld60
 
Java ee kursu-ankara
Java ee kursu-ankaraJava ee kursu-ankara
Java ee kursu-ankarasersld60
 
Java ee kursu-kartal
Java ee kursu-kartalJava ee kursu-kartal
Java ee kursu-kartalsersld60
 
Java ee kursu-tuzla
Java ee kursu-tuzlaJava ee kursu-tuzla
Java ee kursu-tuzlasersld60
 
Java ee kursu-maltepe
Java ee kursu-maltepeJava ee kursu-maltepe
Java ee kursu-maltepesersld60
 
Java ee kursu-cekmekoy
Java ee kursu-cekmekoyJava ee kursu-cekmekoy
Java ee kursu-cekmekoysersld60
 
Java ee kursu-samsun
Java ee kursu-samsunJava ee kursu-samsun
Java ee kursu-samsunsersld60
 
Java ee kursu-antalya
Java ee kursu-antalyaJava ee kursu-antalya
Java ee kursu-antalyasersld60
 
Java ee kursu-esenler
Java ee kursu-esenlerJava ee kursu-esenler
Java ee kursu-esenlersersld60
 
Java ee kursu-fatih
Java ee kursu-fatihJava ee kursu-fatih
Java ee kursu-fatihsersld60
 
Java ee kursu-kayseri
Java ee kursu-kayseriJava ee kursu-kayseri
Java ee kursu-kayserisersld60
 

Was ist angesagt? (20)

Java ee kursu-esenyurt
Java ee kursu-esenyurtJava ee kursu-esenyurt
Java ee kursu-esenyurt
 
Java ee kursu-umraniye
Java ee kursu-umraniyeJava ee kursu-umraniye
Java ee kursu-umraniye
 
Java ee kursu-pendik
Java ee kursu-pendikJava ee kursu-pendik
Java ee kursu-pendik
 
Java ee kursu-zeytinburnu
Java ee kursu-zeytinburnuJava ee kursu-zeytinburnu
Java ee kursu-zeytinburnu
 
Java ee kursu-bursa
Java ee kursu-bursaJava ee kursu-bursa
Java ee kursu-bursa
 
Java ee kursu-gungoren
Java ee kursu-gungorenJava ee kursu-gungoren
Java ee kursu-gungoren
 
Java ee kursu-catalca
Java ee kursu-catalcaJava ee kursu-catalca
Java ee kursu-catalca
 
Java ee kursu-gaziantep
Java ee kursu-gaziantepJava ee kursu-gaziantep
Java ee kursu-gaziantep
 
Java ee kursu-silivri
Java ee kursu-silivriJava ee kursu-silivri
Java ee kursu-silivri
 
Java ee kursu-kagithane
Java ee kursu-kagithaneJava ee kursu-kagithane
Java ee kursu-kagithane
 
Java ee kursu-ankara
Java ee kursu-ankaraJava ee kursu-ankara
Java ee kursu-ankara
 
Java ee kursu-kartal
Java ee kursu-kartalJava ee kursu-kartal
Java ee kursu-kartal
 
Java ee kursu-tuzla
Java ee kursu-tuzlaJava ee kursu-tuzla
Java ee kursu-tuzla
 
Java ee kursu-maltepe
Java ee kursu-maltepeJava ee kursu-maltepe
Java ee kursu-maltepe
 
Java ee kursu-cekmekoy
Java ee kursu-cekmekoyJava ee kursu-cekmekoy
Java ee kursu-cekmekoy
 
Java ee kursu-samsun
Java ee kursu-samsunJava ee kursu-samsun
Java ee kursu-samsun
 
Java ee kursu-antalya
Java ee kursu-antalyaJava ee kursu-antalya
Java ee kursu-antalya
 
Java ee kursu-esenler
Java ee kursu-esenlerJava ee kursu-esenler
Java ee kursu-esenler
 
Java ee kursu-fatih
Java ee kursu-fatihJava ee kursu-fatih
Java ee kursu-fatih
 
Java ee kursu-kayseri
Java ee kursu-kayseriJava ee kursu-kayseri
Java ee kursu-kayseri
 

Ähnlich wie Özcan Acar Ankara Cankaya Universitesi Wicket Webframework Sunumu

BizimAlem.com – Java İle Yüksek Performanslı Web Platformu
BizimAlem.com – Java İle Yüksek Performanslı Web Platformu BizimAlem.com – Java İle Yüksek Performanslı Web Platformu
BizimAlem.com – Java İle Yüksek Performanslı Web Platformu Özcan Acar
 
Test Güdümlü Yazılım
Test Güdümlü YazılımTest Güdümlü Yazılım
Test Güdümlü YazılımÖzcan Acar
 
Java Web Uygulama Geliştirme
Java Web Uygulama GeliştirmeJava Web Uygulama Geliştirme
Java Web Uygulama Geliştirmeahmetdemirelli
 
Java ee kursu-bakirkoy
Java ee kursu-bakirkoyJava ee kursu-bakirkoy
Java ee kursu-bakirkoysersld60
 
Java ee kursu-sultanbeyli
Java ee kursu-sultanbeyliJava ee kursu-sultanbeyli
Java ee kursu-sultanbeylisersld60
 
Java ee kursu-bagcilar
Java ee kursu-bagcilarJava ee kursu-bagcilar
Java ee kursu-bagcilarsersld60
 
ASP.Net MVC ile Web Uygulamaları -14(Spark ViewEngine)
ASP.Net MVC ile Web Uygulamaları -14(Spark ViewEngine)ASP.Net MVC ile Web Uygulamaları -14(Spark ViewEngine)
ASP.Net MVC ile Web Uygulamaları -14(Spark ViewEngine)İbrahim ATAY
 
Java ee kursu-sakarya
Java ee kursu-sakaryaJava ee kursu-sakarya
Java ee kursu-sakaryasersld60
 
Java ee kursu-kocaeli
Java ee kursu-kocaeliJava ee kursu-kocaeli
Java ee kursu-kocaelisersld60
 
JavaScript ile Taş Kırmak
JavaScript ile Taş KırmakJavaScript ile Taş Kırmak
JavaScript ile Taş Kırmakİbrahim ATAY
 
Java ee kursu-bahcelievler
Java ee kursu-bahcelievlerJava ee kursu-bahcelievler
Java ee kursu-bahcelievlersersld60
 
Java ee kursu-beyoglu
Java ee kursu-beyogluJava ee kursu-beyoglu
Java ee kursu-beyoglusersld60
 

Ähnlich wie Özcan Acar Ankara Cankaya Universitesi Wicket Webframework Sunumu (13)

BizimAlem.com – Java İle Yüksek Performanslı Web Platformu
BizimAlem.com – Java İle Yüksek Performanslı Web Platformu BizimAlem.com – Java İle Yüksek Performanslı Web Platformu
BizimAlem.com – Java İle Yüksek Performanslı Web Platformu
 
Test Güdümlü Yazılım
Test Güdümlü YazılımTest Güdümlü Yazılım
Test Güdümlü Yazılım
 
Java Web Uygulama Geliştirme
Java Web Uygulama GeliştirmeJava Web Uygulama Geliştirme
Java Web Uygulama Geliştirme
 
Java ee kursu-bakirkoy
Java ee kursu-bakirkoyJava ee kursu-bakirkoy
Java ee kursu-bakirkoy
 
Java ee kursu-sultanbeyli
Java ee kursu-sultanbeyliJava ee kursu-sultanbeyli
Java ee kursu-sultanbeyli
 
Java ee kursu-bagcilar
Java ee kursu-bagcilarJava ee kursu-bagcilar
Java ee kursu-bagcilar
 
ASP.Net MVC ile Web Uygulamaları -14(Spark ViewEngine)
ASP.Net MVC ile Web Uygulamaları -14(Spark ViewEngine)ASP.Net MVC ile Web Uygulamaları -14(Spark ViewEngine)
ASP.Net MVC ile Web Uygulamaları -14(Spark ViewEngine)
 
Java ee kursu-sakarya
Java ee kursu-sakaryaJava ee kursu-sakarya
Java ee kursu-sakarya
 
Java Server Faces
Java Server FacesJava Server Faces
Java Server Faces
 
Java ee kursu-kocaeli
Java ee kursu-kocaeliJava ee kursu-kocaeli
Java ee kursu-kocaeli
 
JavaScript ile Taş Kırmak
JavaScript ile Taş KırmakJavaScript ile Taş Kırmak
JavaScript ile Taş Kırmak
 
Java ee kursu-bahcelievler
Java ee kursu-bahcelievlerJava ee kursu-bahcelievler
Java ee kursu-bahcelievler
 
Java ee kursu-beyoglu
Java ee kursu-beyogluJava ee kursu-beyoglu
Java ee kursu-beyoglu
 

Özcan Acar Ankara Cankaya Universitesi Wicket Webframework Sunumu

  • 2. Web Framework Gökyüzünde Yeni bir Yıldız! Özcan Acar acar@unitedinter.net http://www.ozcanacar.com http://www.kurumsaljava.com Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 3. Wicket‘in Varoluş Nedeni Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 4. Özcan Acar Hakkında public class OezcanAcar { public static void main(String[] args) { Acar oezcan = new Acar(); oezcan.setBirthday(quot;18.07.1974quot;); oezcan.setBirthplace(quot;Izmirquot;); oezcan.setJob(quot;Bilgisayar Mühendisiquot;); oezcan.setPassion(quot;J2EEquot;); } } Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 5. Özcan Acar Hakkında Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 6. Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 7. Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 8. Sunumun İçeriği API anlatmaya gelmedim! Wicket‘i anlamak için web programcılığında gerekli soyut konseptler üzerine yoğunlaşacağız. Bir tezim var: 2 boyutlu web programcılığı yapıyoruz. Neden? Java ile web programcılığının tarihçesi Wicket tanıtımı Wicket ile Web Komponentleri Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 9. Giriş Kimler daha önce Java teknolojilerini kullanarak web programcılığı yaptı? Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 10. Web Programcılığı Web programcılıgı klasik maasaüstü programcılığından farklıdır. Yazılan kod dinamik olarak web tarayıcısı için gerekli HTML kodunu oluşturur. Web aplikasyonu için yazılan kodun aynı anda birden fazla kullanıcıyı desteklemesi lazım (Multithreading). Web aplikasyonun değişik türdeki bilgisayar, işletim sistemi ve web tarayıcısını desteklemesi gerekir. Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 11. Web Aplikasyonu HTTP Request HTML Sayfaları (JSP) HTTP Response Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 12. Java Web Aplikasyonu HTML Sayfaları Java Nesneleri (JSP) Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 13. Tez: 2 boyutlu web yazılımı yapıyoruz! 3. boyut neresi? 2 boyutlu 3 boyutlu web programcılığı web programcılığı Controller, Gerçek Java Model, View, Komponentleri JSTL Komponent Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 14. Beklentilerimiz Web programcılığı da olsa nesneye yönelik programcılığı uygulamak istiyoruz. Sadece Java dilinde yazılım yapmak istiyoruz. JSTL ya da EL gibi web‘e özel bir yazılım tekniğini öğrenmek zorunda kalmak istemiyoruz. Yazılımcı olarak amacımız bakımı kolay ve her yeni müşteri gereksinimi ile kolayca genişletilebilir yazılım sistemleri geliştirmektir. Kullandığımız araçlar bunu desteklemeli. Kodun tekrar kullanılabilmesi (reuse) önemlidir. Web programcılığında, tekrar kullanılabilen Java komponentleri oluşturmak zor bir iş haline gelmemeli. Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 15. Time To Change Java ile web programcılığı hakkında bildiklerinizi unutun! Wicket ile web programcılığına 3. boyut geliyor! Wicket web komponentleri Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 16. Konsept İdeal bir web projesi mimarisi nasıl olmalı? MVC Design Pattern Komponent nedir? Web komponent nedir? Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 17. İdeal Bir Web Proje Mimarisi Üç Katmanlı Mimari Presentation Business Persistence JSP Interface DAO Servlet Struts DB JSF InterfaceImpl DAOImpl Wicket Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 18. MVC Design Pattern Gelen İsteği request yönlendirme Front Controller Controller Model Gönderilen response Model Model nesnesini oluşturma HTML çıktısı View Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 19. Komponent Tekrar kullanılabilir kod birimi. İç dünyasını gizler. Tanımlanmış interface Komponent sınıflar üzerinden kullanılır. Örneğin Facade. Jar dosyasında dağıtılabilir. Kullanıldığı ortama göre konfigüre edilebilir. Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 20. Web Komponent Web Aplikasyon Bir web aplikasyonda konfigürasyon yapılarak kullanılan modül. Login Register Diğer komponent özelliklerine sahiptir. Jar dosyası olarak Friends Chat aplikasyona dahil edilebilir. Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 21. Java İle Web Programcılığın Tarihçesi Servlets JSP JSTL MVC Web Frameworks (Struts, Spring MVC) User Interface Component Model Frameworks (JSF) Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 22. Servlets Web programcılığı yapılabilen ilk Java teknolojisi. Sun tarafından tanımlanmış bir standart (API). İhtiva ettiği interface‘ler Tomcat gibi bir application server tarafından implemente edilir. Servlet web tarayıcısı üzerinden gelen kullanıcı istediğini cevaplayıp, HTML sayfası oluşturan bir Java nesnedir. Aplikasyon serveri (Tomcat, Resin) bünyesinde çalışır. Aplikasyon server HTTP protokolü ile Servlet sınıfı arasındaki köprüdür. ja v a x.se r v l e t .h t t p .Ht t p Se r v le t sın ıfın ı g e n işl e t e n he r sın ıf Se r v le t h a l in e g e l ir . Se r v le t w e b a p lik a sy o n la r ı UR L t a ba n lıd ır ( h t t p :/ / d o m a in .c o m / se r v le t / So m e Se r v l e t ) . w e b.xm l k o n f ig ü r a sy o n d o sy a sın d a h a n g i UR L d e n h a n g i Se r v l e t sın ıfın ın so r u m l u o ld u ğu t a n ım l a n ır . Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 23. Servlet Multithreading public class HelloWorldServlet extends HttpServlet { private int counter = 0; public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { counter ++; response.setContentType(quot;text/htmlquot;); ServletOutputStream output = response.getOutputStream(); output.print(quot;<h1>Sayac: quot; + counter +quot;</h1>quot;); } } Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 24. Servlet Teknolojisinin Dezavantajları HTML kodu Servlet sınıfında oluşturulduğundan, Servlet sınıflarının bakımı ve geliştirilmesi zordur! Geniş kapsamlı Servlet aplikasyonları çok kompleks bir yapıya dönüşebilir. Programcıların, aplikasyonun her bölümünü aynı seviyede anlamaları zorlaşabilir. Her yeni müşteri gereksiniminin getirdiği değişiklikler, bakım ve geliştirme sürecini zora sokabilir. HTML kodu programcılar tarafından geliştirilmek zorundadır. Web design yapan ekibin Java bilgisi olmadan Servlet sınıfları üzerinde modifikasyon yapmaları mümkün değildir. Servlet aplikasyonlarında HTML kodu da üretildiği için kodun bol olduğu sınıflar oluşur. Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 25. JSP – Java Server Pages Servletler tarafından template olarak kullanılmak üzere geliştirilmiş web teknolojisi. Bir standart. Application server JSP sayfalarını compile esnasında Servlet sınıflarına dönüştürür. 1. Request 2. Veriyi ekler Servlet 3. Yönlendirir HttpServletRequest 5. Response 4. Veriyi okur (JSP) Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 26. JSP – Java Server Pages <html> <body> <% for(int i=0; i<5; i++) { out.print(“<h1>Merhaba Dünya</h2>); } %> </body> </html> Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 27. JSP Teknolojisinin Dezavantajları JSP Servlet teknolojisi ile beraber kullanıldığında JSP ve Servlet arasında nesnesel bir ilişki yoktur. Oluşturulan HTML kodunda yer alan linkler üzerinden ihtiyaç duyulan Servlet sınıfları adreslenir. Servlet bir JSP nesne referansına erişemediği için HttpServletRequest üzerinden JSP için gerekli verileri oluşturur. Kompleks JSP sayfalarında Java kodunun kullanılması, JSP sayfalarının bakımını güçleştirir. JSP sayfalarnda değişiklik yapmak isteyen web design ekibinin Java biliyor olması gerekir. Web designcıların yaptıkları en ufak bir değişiklik bile web aplikasyonu çalışmaz hale getirebilir. Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 28. JSP Teknolojisinin Dezavantajları Java kodu kullanılan JSP sayfalarının HTML editörlerinde gösterim problemi oluşmaktadır. JSP sayfalarında Java kodunu kullanılması hata tespit ve debugging işlemlerini zorlaştırmaktadır. Test güdümlü (Test Driven Development) JSP yazılımı bir application server (Tomcat) kullanmadan mümkün değildir (HttpUnit). Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 29. JSTL – Java Standard Tag Library Yeni bir web komponent modelini ihtiva eder. JSP sayfasında Java kodu yerine, tag olarak bilinen ve server tarafında bir Java sınıfında yer alan koda denk gelen birimler kullanılır. Tagler komponenttir. Web design ekibi Java ögrenmek zorunda kalmadan JSP sayfaları oluşturabilir. Tagler XML syntax benzeri bir notasyon ile kullanırlar. Verilere ulaşmak için EL (Expression Language) kullanılabilir. <c:out value=quot;${username}quot;/> Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 30. JSTL – Java Standard Tag Library <%@ taglib prefix=quot;cquot; uri=quot;http://java.sun.com/jstl/corequot; %> <p><h1>Müsteri Isimleri</h1></p> <c:forEach items=quot;${addresses}quot; var=quot;addressquot;> <c:choose> <c:when test=quot;${not empty address.lastName}quot; > <c:out value=quot;${address.lastName}quot;/><br/> </c:when> <c:otherwise> N/A<br/> </c:otherwise> </c:choose> Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 31. JSTL – Java Standard Tag Library JSTL kullanılmış olsa bile JSP teknolojisi ile geniş kapsamlı web programları oluşturmak kolay değildir. JSP sayfalarında HTML gösterimi yanı sıra navigasyon ve verilerin validasyonu (validation) gibi kompleks işlemlerin yapılması gerekmektedir. Bu işlemlerin JSP sayfalarında yapılması, JSP sayfalarının bakımını ve geliştirilmesini zora sokmaktadır. Navigasyon ve validasyon gibi işlemlerin JSP sayfalarının dışında, başka bir mekanizma kullanılarak yapılması gerekmektedir. Bu ihtiyacı karşılamak amacıyla Struts, Spring MVC ve WebWork gibi web frameworkler doğmuştur. Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 32. MVC Frameworks Gelen İsteği request yönlendirme Front Controller Controller Model Gönderilen response Model Model nesnesini oluşturma HTML çıktısı View Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 33. MVC Frameworks Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 34. User Interface Component Model Frameworks JSF (Java Server Faces), Tapestry gibi web frameworkleri komponent modeline sahiptir. HTML arayüzü oluşturmak için Java komponentleri kullanılır. Komponentleri HTML sayfalarında kullanabilmek için JSTL, EL tarzı programlama teknikleri kullanılır. Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 35. Tez: İki boyutlu web yazılımı yapıyoruz! 3. boyut neresi? 2 boyutlu 3 boyutlu web programcılığı web programcılığı Controller, Gerçek Java Model, View, Komponentleri JSTL Komponent Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 36. Neden 2. boyutta kalındı? JSP Sayfası Controller Sınıfı <%@ taglib prefix= “c“ public class Controller uri=..../> { } XML Konfigürasyon Model Sınıfı <config> public class Model ... { </config> } Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 37. Neden 2. boyutta kalındı? Mevcut web frameworklerde gerçek anlamda Java komponent oluşturulması ve kullanımı mümkün değil. Bize komponent modeli olarak satılan bir takım JSTL tag kütüphaneleri ve JSF den tanıdığımız user interface komponentleri Tekrar kullanılanabilir web komponentleri oluşturmak mümkün değil. Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 38. Kısaca Wicket Açık Kaynaklı (Open Source) web framework Komponent tabanlı (Component Based) HTML Markup kodunu ve Java kodunu ayırır. JSTL ya da EL (Expression Language) gibi bir progragramlama tekniğini gereksiz kılar. Basit Java (POJO – Plain Old Java Object) sınıfları kullanır. Çok az konfigürasyonu gerekli kılar. XML konfigürasyon dosyası yoktur. Java ve HTML‘i bilenler kısa zamanda Wicket‘i ögrenebilir. Spring ile birebir entegre edilebilir. Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 39. Kısaca Wicket WicketTester sınıfı ile test güdümlü yazılımı ve akseptans (acceptance – onay/kabul) testlerinin oluşturulmasını destekler. Javascript kodu yazmadan Ajax desteği sağlar. Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 40. Wicket Konseptleri Application Page Komponentler Modeller Paneller Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 41. Application Web aplikasyonun başlangıç noktasıdır (Main Entry Point). Giriş sayfasını (Home Page) tanımlar. Spring ile entegrasyonun gerçekleştiği (SpringComponentInjector) yerdir. Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 42. Application web.xml konfigürasyonu <filter> <filter-name>wicket</servlet-name> <filter-class> org.apache.wicket.protocol.http.WicketFilter </filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value> com.company.MyApplication </param-value> </init-param> <load-on-startup>1</load-on-startup> </filter> Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 43. Wicket Konseptleri Application Page Komponentler Modeller Paneller Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 44. Page Application HomePage LoginPage RegisterPage BlogPage public abstract class HomePage extends WebPage { public SmartWicketPage() { super(); buildGui(); } public abstract void buildGui(); } Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 45. Wicket Konseptleri Application Page Komponentler Modeller Paneller Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 46. Komponentler Label Image Palette MultiLineLabel Link CheckGroup Button Tree DropDownChoise SubmitLink Panel RadioGroup TextField Loop Select CheckBox Border ImageMap TextArea Fragment ListChoise PageLink RadioChoise ExternalLink Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 47. Komponentler ve Markup HTML sayfalarında Wicket komponentleri wicket:id ile kullanılır. HTML <h1 wicket:id= msg > Komponent tarafından değiştirilir </h1> Java Kodu new Label( msg , “Hello, World!”); Ekran Çıktısı <h1>Hello, World!</h1> Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 48. Komponentler ve Markup Page ve Panel gibi komponentlerin kendi HTML dosyaları vardır. Komponentler ve sahip oldukları HTML sayfaları aynı Java package içinde yer alır. Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 49. Merhaba Dünya Örneği Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 50. Wicket Konseptleri Application Page Komponentler Modeller Paneller Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 51. Modeller Wicket komponentleri ile veri taşıyıcı Java sınıfları bir araya getirmek için kullanılırlar. Person Label(“name“,model) (POJO) + name:String PropertyModel new TextField(“namequot;, new PropertyModel(getPerson(), “namequot;)); Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 52. Wicket Konseptleri Application Page Komponentler Modeller Paneller Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 53. Paneller Birden fazla wicket komponentini gruplamak için kullanılır. Kendi HTML dosyası vardır. Paneller kullanılarak tekrar kullanılabilir web komponentleri oluşturulabilir. Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 54. Login Web Komponenti Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 55. Login Web Komponenti LoginPage.java LoginPage.html LoginPanel.java LoginPanel.html LoginForm TextField PropertyModel Account Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 56. Login Web Komponenti LoginPage.java import org.apache.wicket.markup.html.WebPage; import smart.web.login.presentation.panel.LoginPanel; public class LoginPage extends WebPage { public LoginPage() { super(); add(new LoginPanel(quot;loginpanelquot;)); } } Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 57. Login Web Komponenti LoginPage.html <html> <head/> <body> <div wicket:id=quot;loginpanelquot;/> </body> </html> Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 58. Login Web Komponenti LoginPanel.java import org.apache.wicket.markup.html.panel.Panel; import smart.web.login.presentation.form.LoginForm; public class LoginPanel extends Panel { public LoginPanel(final String arg0) { super(arg0); add(new LoginForm(quot;loginformquot;)); } } Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 59. Login Web Komponenti LoginPanel.html <wicket:panel> <form wicket:id=quot;loginformquot;> <table width=quot;100%quot; cellspacing=quot;1quot;> <tr> <td width=quot;100%quot; class=quot;text11quot; colspan=quot;3quot;> <div wicket:id=quot;feedbackquot;></div></td> </tr> <tr> <td width=quot;13%quot; > <wicket:messagekey=quot;login.emailquot;>Email</wicket:message>: </td> <td width=quot;82%quot;> <span wicket:id=quot;email.borderquot;> <input size=quot;20quot; maxlength=quot;50„ wicket:id=quot;emailquot; class=quot;inputfieldquot; /> </span> </td> .......... </wicket:panel> Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 60. Login Web Komponenti public class LoginForm extends Form LoginForm.java { public LoginForm(final String pId) { super(pId); add(new TextField(quot;emailquot;, new PropertyModel(getAccount(), quot;emailquot;)). setRequired(true)); add(new PasswordTextField(quot;passwordquot;, new PropertyModel(getAccount(), quot;passwordquot;)). setRequired(true)); } protected final void onSubmit() { LoginResult result = manager.login(getAccount().getEmail(), getAccount().getPassword()); // LOGIN OK if(result.getStatus() == LoginManagerStatusCodes.LOGIN_OK.getValue()) ....... } Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 61. Login Web Komponenti Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 62. Web Komponent Web Aplikasyon Bir web aplikasyonda konfigürasyon yapılarak kullanılan modül. Login Register Diğer komponent özelliklerine sahiptir. Jar dosyası olarak Friends Chat aplikasyona dahil edilebilir. Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 63. Web Komponent Login komponentini bir Jar dosyası haline getirerek, istediğimiz bir projede kullanabiliriz. Login Java add(new LoginPanel(quot;loginpanelquot;)); HTML <div wicket:id=quot;loginpanelquot;/> Kurumsal Java.com Kurumsal Java.com Özcan Acar © 2009 © 2009
  • 64. SON İlginiz için teşekkür ederim. Kurumsal Java.com Özcan Acar © 2009