SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
Framework & W eb M VC


         M uharrem TAÇ
          M artı Bilişim
        www.martisoft.com
Spring Framework Nedir


2004 yılından itibaren Rod Johnson tarafından geliştirilen, topluluk
desteğiyle hızla büyüyen Java ve J2EE Frameworküdür,

Tüm Java Teknolojilerine doğal destek vermektedir,

Yeni nesil yazılım mimarilerini desteklemektedir,(AOP, IoC…)

Çok büyük projelerde rüştünü ispatlamıştır,

Interface driven development önermektedir.
Spring Framework Nedir
Neden Spring MVC ?


•Web uygulamalarında modern tasarım desenleri (design patterns)
kullanmaktadır,

•Veri bindirme (data bindings) kolayca gerçekleştirilmektedir,

•Form nesnesi sayesinde denetim (form validation) ve hata yakalama
(error handling) basitleştirilmiştir,

•Çeşitli gösterim (view) teklolojilerini desteklemektedir,
          JSP, Apache Velocity…
IoC
    (Inversion of Control)
              ve
Interface Driven Development
IoC Inversion of Control


Uygulamalarda new çağrısı ile yaratılan nesneler 2 temel soruna neden
  olmaktadır:

1. Her seferinde yeniden yaratılmakta ve yeniden GC tarafından
   sonlandırılmaktadır. Bu bir işlem maliyetidir.

1. Proje sürerken olası değişiklikler için kodun içinde refactoring
   gerektirmektedir.
IoC Inversion of Control


Örneğin bir dao için

UserDao userDao = new UserDao();

Şeklinde bir tanımlama ile projede oluşacak veritabanı değişmeleri
(Oracle, MySQL…) için ayrı ayrı dao’lar çağırmak zorunda
kalınacaktır.

OracleUserDao oracleUserDao = new OracleUserDao();
MySqlUserDao dbUserDao = new MySqlUserDao();
..
..
IoC Inversion of Control


Oysa elimizde sadece metotların olduğu bir interface olsa ve bu
interface’ten türeyecek sınıfları ayrı bir konfigürasyonda tutsak sorun
ortadan kalkacak. interface’i bu methodları kullanacak sınıfa dahil
ederken de klasik POJO mantığıyla ekleyebiliriz.

  UserDao userDao;

  public UserDao getUserDao() {
         return userDao;
  }

  public void setUserDao(UserDao userDao) {
         this.userDao = userDao;
  }
IoC Inversion of Control


Peki bu interface ne zaman ve nasıl kullanılacak?

İşte Spring’in büyüsü burada başlıyor…
Konfigürasyonda hangi interface’e hangi class’ın karşılık geldiğini
yazarak UYGULAMA BAŞLADIĞI ZAMAN classların birer sigleton
olarak yaratılmasını sağlıyoruz.

    <bean id=quot;userDaoquot; class=quot;com.marti.UserDaoImpl” />


  <bean id=quot;userDaoquot; class=quot;com.marti.OracleUserDaoImpl” />
Spring Web MVC
Spring Web MVC Genel Akış

Yönetimi Spring Framework’e burakılmış web uygulamalarında tüm
request ve response’lar öncelikle DispatcherServlet tarafından
karşılanır.

DispatcherServlet kendisine gelen talebe göre ve set edilmiş Controller’ı
çağırır.

Controller iş mantığını uygulayacak manager’ları ve/veya model
objelerini kullanarak sonuçta ModelAndView nesnesi döndürür.

ViewResolver set edilmiş olan view objesine yönlenir ve sayfa
görüntülenir.
Spring Web MVC



Dispatcher
 Servlet
Spring Web MVC Kurulum

  web.xml içerisinde tanımlama:
<servlet>
  <servlet-name>servlet adı   </servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
  <servlet-name>servlet adı</servlet-name>
  <url-pattern>*.uzantı</url-pattern>
</servlet-mapping>

Spring konfigürasyom dosyası adı:

/WEB-INF/[servlet adı]-servlet.xml
Spring Web MVC Kurulum

Spring 2.0’a kadar olan dönemde tek bir spring.jar var iken Spring
2.5’den sonra jarlar aşağıdaki gibi ayrılmıştır:

    -spring.jar
    -spring-web.jar
    -spring-webmvc.jar
ModelAndView nesnesine bindirilecek dataların gösterimi için yaygın
olarak kullanılan JSTL ve Displaytag jarları:
   -jstl.jar
   -standard.jar
   -displaytag.jar
  Ve neredeyse tüm librarylerin gereksinim duyduğu
  jakarta-commons jarları…
Controller
Controller

Controller mekanizması DispatcherServlet araclığıyla gelen requestler
ile iş katmanı (business tier) arasında bulunur,

İş katmanından dönen sonuçları bir ModelAndView nesnesine bindirir,

AbstractConroller
    BaseCommandController
        AbstractCommandController
        AbstractFormController
          SimpleFormController
          AbstractWizardController
    MultiActionController
    ParameterizableViewController
Controller - SimpleFormController
org.springframework.web.servlet.mvc.SimpleFormController

Spring form nesnesi ile gelen datayı işler,
İçerisindeki yararlı methodlar ile request yaşam döngüsünü birbirinden ayırır
ve kolaylaştırır.

formBackingObject() : controller’da ilk çalışan methoddur ve Form
nesnesini hazırlar.

referenceData() : sayfaya gönderilecek listeleri yükleyen methoddur.

initBinder() : Spring Editor aracılığyla çoklu form nesnelerini
(combobox, chekbox..) set eder.

onSubmit() : Form submit olunca dönen formun içindeki objenin yakalandığı
methoddur.
Spring Form
Spring Form
İçerisinde model objelerini bulunduran klasik POJO nesnesidir.

Formun içindeki model objesinin new ile yaratılması gerekir.

Jsp sayfalarına bind edilmesi için Spring <form:form> tagı ile kullanılmaktadır.

<form: tagı bütün HTML formlarını tamamlamaktadır,
Örnekler :
<form:input
<form:option
…

Konfigürasyonda Controller’a commandName ve commandClass ile bağlanırlar:
       <property name=quot;commandNamequot; value=quot;personelFormquot;/>
       <property name=quot;commandClassquot; value=quot;com.marti.form.PersonelFormquot;/>
Spring Form Validator
org.springframework.validation.Validator ‘den implemente
olurlar içlerinde iki önemli methodları bulunur:
public boolean supports(Class clazz) {
         return PersonelForm.class.isAssignableFrom(clazz);
}

public void validate(Object obj, Errors errors) {
  PersonelForm personelForm = (PersonelForm)obj;
  if(personelForm.getPersonel().getIsim().equals(quot;quot;))
         errors.rejectValue(quot;personel.isimquot;,quot;hata.gerekli.isimquot;);

    if(personelForm.getPersonel().getSoyIsim().equals(quot;quot;))
           errors.rejectValue(quot;personel.isimquot;, quot;hata.gerekli.soyIsimquot;);
}
Spring Form Validator
Spring konfigürasyonunda FormController’ın tanımlandığı
bean içerisinde bağlanırlar.
<bean name=quot;/personel.mxxquot; class=quot;com.marti.controller.PersonelFormControllerquot;>
  <property name=quot;commandNamequot; value=quot;personelFormquot;/>
  <property name=quot;commandClassquot; value=quot;com.marti.form.PersonelFormquot;/>
  <property name=quot;validatorquot;>
   <bean class=quot;com.marti.validator.PersonelFormValidatorquot;/>
  </property>
</bean>
SORU – CEVAP BÖLÜMÜ
Teşekkürler
 Muharrem TAÇ
   Martı Bilişim
mtac@martisoft.com

Weitere ähnliche Inhalte

Ähnlich wie Spring Framework

İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21Cihan Özhan
 
Spring framework egitimi ders 1. genel bir bakis
Spring framework egitimi   ders 1. genel bir bakisSpring framework egitimi   ders 1. genel bir bakis
Spring framework egitimi ders 1. genel bir bakisBaris Dere
 
Erdem Avni SELÇUK 22 Nisan 2015 Çözümpark & Gediz Üniversitesi İzmir MVC Work...
Erdem Avni SELÇUK 22 Nisan 2015 Çözümpark & Gediz Üniversitesi İzmir MVC Work...Erdem Avni SELÇUK 22 Nisan 2015 Çözümpark & Gediz Üniversitesi İzmir MVC Work...
Erdem Avni SELÇUK 22 Nisan 2015 Çözümpark & Gediz Üniversitesi İzmir MVC Work...Erdem Avni Selçuk
 
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş SüreciASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş SüreciSinan Bozkuş
 
45965 php-source-code-analysis
45965 php-source-code-analysis45965 php-source-code-analysis
45965 php-source-code-analysisAttaporn Ninsuwan
 
ASP.Net MVC ile Web Uygulamaları -17(MVCContrib)
ASP.Net MVC ile Web Uygulamaları -17(MVCContrib)ASP.Net MVC ile Web Uygulamaları -17(MVCContrib)
ASP.Net MVC ile Web Uygulamaları -17(MVCContrib)İbrahim ATAY
 
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik DesteğiASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik DesteğiAli İhsan Çalışkan
 
Spring Web Service
Spring Web ServiceSpring Web Service
Spring Web Servicedasgin
 
Visual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleri
Visual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleriVisual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleri
Visual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleriMurat Başeren
 
ASP.NET MVC V 2.0
ASP.NET MVC  V  2.0ASP.NET MVC  V  2.0
ASP.NET MVC V 2.0BT Akademi
 
Mutant Web Applications
Mutant Web ApplicationsMutant Web Applications
Mutant Web Applicationsguest096801
 
F5 dergisi
F5 dergisiF5 dergisi
F5 dergisifatos11
 
Asp.net mvc ve jquery ile sunucudan json verisi okuma
Asp.net mvc ve jquery ile sunucudan json verisi okumaAsp.net mvc ve jquery ile sunucudan json verisi okuma
Asp.net mvc ve jquery ile sunucudan json verisi okumaerdemergin
 
AngularJS sunumu
AngularJS sunumuAngularJS sunumu
AngularJS sunumuokanozeren
 

Ähnlich wie Spring Framework (20)

İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21
 
Spring boot
Spring bootSpring boot
Spring boot
 
Spring framework egitimi ders 1. genel bir bakis
Spring framework egitimi   ders 1. genel bir bakisSpring framework egitimi   ders 1. genel bir bakis
Spring framework egitimi ders 1. genel bir bakis
 
Erdem Avni SELÇUK 22 Nisan 2015 Çözümpark & Gediz Üniversitesi İzmir MVC Work...
Erdem Avni SELÇUK 22 Nisan 2015 Çözümpark & Gediz Üniversitesi İzmir MVC Work...Erdem Avni SELÇUK 22 Nisan 2015 Çözümpark & Gediz Üniversitesi İzmir MVC Work...
Erdem Avni SELÇUK 22 Nisan 2015 Çözümpark & Gediz Üniversitesi İzmir MVC Work...
 
Java EE Struts
Java EE StrutsJava EE Struts
Java EE Struts
 
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş SüreciASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
 
Java Server Faces
Java Server FacesJava Server Faces
Java Server Faces
 
45965 php-source-code-analysis
45965 php-source-code-analysis45965 php-source-code-analysis
45965 php-source-code-analysis
 
ASP.Net MVC ile Web Uygulamaları -17(MVCContrib)
ASP.Net MVC ile Web Uygulamaları -17(MVCContrib)ASP.Net MVC ile Web Uygulamaları -17(MVCContrib)
ASP.Net MVC ile Web Uygulamaları -17(MVCContrib)
 
Jsf
JsfJsf
Jsf
 
Asp.net ajax
Asp.net ajaxAsp.net ajax
Asp.net ajax
 
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik DesteğiASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
 
Spring Web Service
Spring Web ServiceSpring Web Service
Spring Web Service
 
Visual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleri
Visual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleriVisual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleri
Visual studio 2010 ve tfs 2010 yeni takim gelistirme ozellikleri
 
ASP.NET MVC V 2.0
ASP.NET MVC  V  2.0ASP.NET MVC  V  2.0
ASP.NET MVC V 2.0
 
Mutant Web Applications
Mutant Web ApplicationsMutant Web Applications
Mutant Web Applications
 
F5 dergisi
F5 dergisiF5 dergisi
F5 dergisi
 
Asp.net mvc ve jquery ile sunucudan json verisi okuma
Asp.net mvc ve jquery ile sunucudan json verisi okumaAsp.net mvc ve jquery ile sunucudan json verisi okuma
Asp.net mvc ve jquery ile sunucudan json verisi okuma
 
Primeface
PrimefacePrimeface
Primeface
 
AngularJS sunumu
AngularJS sunumuAngularJS sunumu
AngularJS sunumu
 

Spring Framework

  • 1. Framework & W eb M VC M uharrem TAÇ M artı Bilişim www.martisoft.com
  • 2. Spring Framework Nedir 2004 yılından itibaren Rod Johnson tarafından geliştirilen, topluluk desteğiyle hızla büyüyen Java ve J2EE Frameworküdür, Tüm Java Teknolojilerine doğal destek vermektedir, Yeni nesil yazılım mimarilerini desteklemektedir,(AOP, IoC…) Çok büyük projelerde rüştünü ispatlamıştır, Interface driven development önermektedir.
  • 4. Neden Spring MVC ? •Web uygulamalarında modern tasarım desenleri (design patterns) kullanmaktadır, •Veri bindirme (data bindings) kolayca gerçekleştirilmektedir, •Form nesnesi sayesinde denetim (form validation) ve hata yakalama (error handling) basitleştirilmiştir, •Çeşitli gösterim (view) teklolojilerini desteklemektedir, JSP, Apache Velocity…
  • 5. IoC (Inversion of Control) ve Interface Driven Development
  • 6. IoC Inversion of Control Uygulamalarda new çağrısı ile yaratılan nesneler 2 temel soruna neden olmaktadır: 1. Her seferinde yeniden yaratılmakta ve yeniden GC tarafından sonlandırılmaktadır. Bu bir işlem maliyetidir. 1. Proje sürerken olası değişiklikler için kodun içinde refactoring gerektirmektedir.
  • 7. IoC Inversion of Control Örneğin bir dao için UserDao userDao = new UserDao(); Şeklinde bir tanımlama ile projede oluşacak veritabanı değişmeleri (Oracle, MySQL…) için ayrı ayrı dao’lar çağırmak zorunda kalınacaktır. OracleUserDao oracleUserDao = new OracleUserDao(); MySqlUserDao dbUserDao = new MySqlUserDao(); .. ..
  • 8. IoC Inversion of Control Oysa elimizde sadece metotların olduğu bir interface olsa ve bu interface’ten türeyecek sınıfları ayrı bir konfigürasyonda tutsak sorun ortadan kalkacak. interface’i bu methodları kullanacak sınıfa dahil ederken de klasik POJO mantığıyla ekleyebiliriz. UserDao userDao; public UserDao getUserDao() { return userDao; } public void setUserDao(UserDao userDao) { this.userDao = userDao; }
  • 9. IoC Inversion of Control Peki bu interface ne zaman ve nasıl kullanılacak? İşte Spring’in büyüsü burada başlıyor… Konfigürasyonda hangi interface’e hangi class’ın karşılık geldiğini yazarak UYGULAMA BAŞLADIĞI ZAMAN classların birer sigleton olarak yaratılmasını sağlıyoruz. <bean id=quot;userDaoquot; class=quot;com.marti.UserDaoImpl” /> <bean id=quot;userDaoquot; class=quot;com.marti.OracleUserDaoImpl” />
  • 11. Spring Web MVC Genel Akış Yönetimi Spring Framework’e burakılmış web uygulamalarında tüm request ve response’lar öncelikle DispatcherServlet tarafından karşılanır. DispatcherServlet kendisine gelen talebe göre ve set edilmiş Controller’ı çağırır. Controller iş mantığını uygulayacak manager’ları ve/veya model objelerini kullanarak sonuçta ModelAndView nesnesi döndürür. ViewResolver set edilmiş olan view objesine yönlenir ve sayfa görüntülenir.
  • 13. Spring Web MVC Kurulum web.xml içerisinde tanımlama: <servlet> <servlet-name>servlet adı </servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>servlet adı</servlet-name> <url-pattern>*.uzantı</url-pattern> </servlet-mapping> Spring konfigürasyom dosyası adı: /WEB-INF/[servlet adı]-servlet.xml
  • 14. Spring Web MVC Kurulum Spring 2.0’a kadar olan dönemde tek bir spring.jar var iken Spring 2.5’den sonra jarlar aşağıdaki gibi ayrılmıştır: -spring.jar -spring-web.jar -spring-webmvc.jar ModelAndView nesnesine bindirilecek dataların gösterimi için yaygın olarak kullanılan JSTL ve Displaytag jarları: -jstl.jar -standard.jar -displaytag.jar Ve neredeyse tüm librarylerin gereksinim duyduğu jakarta-commons jarları…
  • 16. Controller Controller mekanizması DispatcherServlet araclığıyla gelen requestler ile iş katmanı (business tier) arasında bulunur, İş katmanından dönen sonuçları bir ModelAndView nesnesine bindirir, AbstractConroller BaseCommandController AbstractCommandController AbstractFormController SimpleFormController AbstractWizardController MultiActionController ParameterizableViewController
  • 17. Controller - SimpleFormController org.springframework.web.servlet.mvc.SimpleFormController Spring form nesnesi ile gelen datayı işler, İçerisindeki yararlı methodlar ile request yaşam döngüsünü birbirinden ayırır ve kolaylaştırır. formBackingObject() : controller’da ilk çalışan methoddur ve Form nesnesini hazırlar. referenceData() : sayfaya gönderilecek listeleri yükleyen methoddur. initBinder() : Spring Editor aracılığyla çoklu form nesnelerini (combobox, chekbox..) set eder. onSubmit() : Form submit olunca dönen formun içindeki objenin yakalandığı methoddur.
  • 19. Spring Form İçerisinde model objelerini bulunduran klasik POJO nesnesidir. Formun içindeki model objesinin new ile yaratılması gerekir. Jsp sayfalarına bind edilmesi için Spring <form:form> tagı ile kullanılmaktadır. <form: tagı bütün HTML formlarını tamamlamaktadır, Örnekler : <form:input <form:option … Konfigürasyonda Controller’a commandName ve commandClass ile bağlanırlar: <property name=quot;commandNamequot; value=quot;personelFormquot;/> <property name=quot;commandClassquot; value=quot;com.marti.form.PersonelFormquot;/>
  • 20. Spring Form Validator org.springframework.validation.Validator ‘den implemente olurlar içlerinde iki önemli methodları bulunur: public boolean supports(Class clazz) { return PersonelForm.class.isAssignableFrom(clazz); } public void validate(Object obj, Errors errors) { PersonelForm personelForm = (PersonelForm)obj; if(personelForm.getPersonel().getIsim().equals(quot;quot;)) errors.rejectValue(quot;personel.isimquot;,quot;hata.gerekli.isimquot;); if(personelForm.getPersonel().getSoyIsim().equals(quot;quot;)) errors.rejectValue(quot;personel.isimquot;, quot;hata.gerekli.soyIsimquot;); }
  • 21. Spring Form Validator Spring konfigürasyonunda FormController’ın tanımlandığı bean içerisinde bağlanırlar. <bean name=quot;/personel.mxxquot; class=quot;com.marti.controller.PersonelFormControllerquot;> <property name=quot;commandNamequot; value=quot;personelFormquot;/> <property name=quot;commandClassquot; value=quot;com.marti.form.PersonelFormquot;/> <property name=quot;validatorquot;> <bean class=quot;com.marti.validator.PersonelFormValidatorquot;/> </property> </bean>
  • 22. SORU – CEVAP BÖLÜMÜ
  • 23. Teşekkürler Muharrem TAÇ Martı Bilişim mtac@martisoft.com