J2EE Mimarileri (Struts, Hibernate, Ajax) ile  Uygulama Geliştirmek Muharrem TAÇ Martı Bilişim www.martisoft.com
KONU BAŞLIKLARI 1-J2EE mimarisi nedir? 2-MVC tasarım deseni (design patterns) ne işe yarar? 3-Struts Framework 4-Hibernate ORM 5-Ajax anywhere 6-Displaytag
J2EE
J2EE MİMARİSİ NEDİR ? J2EE  J ava 2  E nterprise  E dition’ın kısaltmasıdır, yeni adı Java EE olarak değişmiştir, Bu mimari çok katmanlı kurumsal uygulamalar oluşturmak için API’ler sunar, JSP, Servlets, (Web tabanlı sunum katmanı) JDBC, (Java veritabanı bağlanırlığı) JMS,(Java Mesajlaşma Servisi) RMI, (Uzaktan method çağırma) JNDI,(Java isimlendirme ve dizinleme servisi) Java Mail,(E-posta gönderme ve alma) EJB (Enterprise Java Beans)   gibi..   Çok katmanlı mimaride  genelde 3 katman bulunur, Sunum katmanı (presentation layer) İş katmanı (business layer) Uygulama katmanı (application layer)
J2EE MİMARİSİ
J2EE WEB UYGULAMALARI NASIL ÇALIŞIR ? Bir uygulama sunucusu ya da servlet container olmalıdır Örnekler Open Source : Tomcat,  Jetty, Jboss, Glassfish, Geronimo Ticari : BEA Weblogic, Oracle Application Server, IBM Websphere, Sun Application Server Sunucuya deploy edilmiş web uygulamasında  WEB-INF  dizini olmalıdır, WEB-INF dizini altında  web.xml  olmalıdır, web uygulamalarının temel konfigürasyon dosyası web.xml’dir, Derlenmiş java kodları class uzantıları ile  WEB-INF/classes  dizinde bulunur, Kullanılan teknolojilerin kütüphaneleri .jar dosyaları halinde  WEB-INF/lib  dizini altında bulunur,
MVC
MVC NEDİR NE İŞE YARAR ? Bir tasarım kalıbıdır (design pattern), M VC  M odel  V iew  C ontroller’ın kısaltmasıdır, M odel : Kuralların tanımlandığı, hesaplamaların, veritabanı objelerinin bulunduğu katman. Örneğin Kullanici isimli objemiz. V iew : Verilerin görüntülenmesi ile ilgili işlemleri gerçekleştiren katmandır, JSP, JSTL, Displaytag gibi... C ontroller : Veri akışının nereden nereye gideceğini belirleyen katmandır. Struts için ActionServlet ,  struts-config.xml
STRUTS MVC Controller     View   Model
STRUTS
STRUTS FRAMEWORK Struts, en eski ve en popüler J2EE framewoküdür diyebiliriz, Apache Yazılım Vakfı’nın kurumsal web uygulamalarına yönelik ürünüdür, Temel konfigürasyon dosyası  struts-config.xml ’dir, HTML formlarını temsil eden  ActionForm  , formdan post veya get ile gelen datayı almak ve işlemler yapmak için  Action  ve işlemler sonunda yönlendirme yapmak için  ActionMappings  olarak üç temel sınıfı bulunur, Çoklu dil desteği için  ApplicationResources.properties  dosyaları kullanılır, Türkçe lokalizasyon için  ApplicationResources_tr.properties  , İngilizce için  ApplicationResources_en.properties  gibi... Struts’a özgü  struts-bean  ,  struts-html  ,  struts-logic  taglarına sahiptir.
STRUTS FRAMEWORK WEB-INF  dizini içerisinde bulunan  web.xml  ’de aşağıdaki şekilde Struts ActionServlet ve konfigürasyon dosyasının konumu tanımlanır: <servlet> <servlet-name> ActionServlet </servlet-name> <servlet-class> org.apache.struts.action.ActionServlet </servlet-class> <init-param> <param-name> config </param-name> <param-value> /WEB-INF/struts-config.xml </param-value> </init-param> <load-on-startup> 1 </load-on-startup> </servlet> <servlet-mapping> <servlet-name> ActionServlet </servlet-name> <url-pattern> *.do </url-pattern> </servlet-mapping> KURULUM – Servlet tanımlama
STRUTS FRAMEWORK WEB-INF/lib  dizini içerisine Struts sınıflarını bulunduran kütüphaneler ve Apache Commons projesinin gerekli kütüphaleneleri atılır Deneme projemizde kullandığımız struts versiyonu için ihtiyaç duyulan jar’lar aşağıdakilerdir: struts-core-1.3.8.jar struts-extras-1.3.8.jar struts-taglib-1.3.8.jar commons-beanutils.jar commons-chain-1.1.jar commons-digester-1.8.jar commons-logging.jar KURULUM – Kütüphaleleri yükleme
STRUTS FRAMEWORK HTML forma karşılık gelen ActionForm   sınıfı örneği: import   org.apache.struts.action.ActionForm; public   class  KullaniciForm  extends  ActionForm { private  String  isim ; private  String  soyIsim ; private  String  eposta ;  private  String  parola ; getters and setters } KURULUM – ActionForm sınıfı
STRUTS FRAMEWORK Formumuzun struts-config.xml’de tanımlanması: <form-beans> <form-bean  name= &quot;kullaniciFrom&quot;   type= &quot;org.gp.form.KullaniciForm&quot; > <form-property  name= &quot;isim&quot;   type= &quot;java.lang.String&quot; ></form-property> <form-property  name= &quot;soyIsim&quot;   type= &quot;java.lang.String&quot; ></form-property> <form-property  name= &quot;eposta&quot;   type= &quot;java.lang.String&quot; ></form-property> <form-property  name= &quot;parola&quot;   type= &quot;java.lang.String&quot; ></form-property> </form-bean> </form-beans> KURULUM – ActionForm tanımlama
STRUTS FRAMEWORK Struts’ın ActionForm   ile göndereceği verileri alacak Action sınıfımız aşağıdaki şekilde. import  org.apache.struts.action.Action; import  org.apache.struts.action.ActionForm; import  org.apache.struts.action.ActionForward; import  org.apache.struts.action.ActionMapping; import  org.gp.form.KullaniciForm; import  javax.servlet.http.HttpServletRequest; import  javax.servlet.http.HttpServletResponse; public class  KullaniciAction  extends  Action { public  ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)  throws  Exception{ KullaniciForm kullaniciForm = (KullaniciForm)form; String isim = kullaniciForm.getIsim(); String soyIsim = kullaniciForm.getSoyIsim(); String eposta = kullaniciForm.getEposta(); String parola = kullaniciForm.getParola(); return  mapping.findForward( &quot;success&quot; ); } } KURULUM – Action sınıfı
STRUTS FRAMEWORK Action’ın struts-config.xml’de tanımlanması: <action-mappings> <action   path= &quot;/kullaniciAction&quot;     name= &quot;kullaniciFrom&quot;     type= &quot;org.gp.action.KullaniciAction&quot; > <forward   name= &quot;success&quot;   path= &quot;/index.jsp&quot; /> </action> </action-mappings> KURULUM – Action tanımlama
HIBERNATE
HIBERNATE ORM (Object Relational Mapping) aracıdır, ilişkisel veritabanlarını objeler olarak tanımlar, Veritabanını nesnesel olarak modelleyen bir teknolojidir, JDBC ile iletişim kurulabilen neredeyse tüm veritabanlarını destekler, Kendine özgü HQL (Hibernate Query Language) dili ile SQL’den çok daha verimli veritabanı sorguları üretir, Temel konfigürasyon dosyası  hibernate.cfg.xml  ’dir, Her bir POJO nesnesi için bir config dosyası üretilmelidir.  Örnek :  Kullanici.hbm.xml
HIBERNATE <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC &quot;-//Hibernate/Hibernate Configuration DTD 3.0//EN&quot; &quot;http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd&quot;> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name=&quot;connection.driver_class&quot;>com.mysql.jdbc.Driver</property> <property name=&quot;connection.url&quot;>jdbc:mysql://localhost:3306/gp</property> <property name=&quot;connection.username&quot;>gp</property> <property name=&quot;connection.password&quot;>1</property> <!-- JDBC connection pool (use the built-in) --> <property name=&quot;connection.pool_size&quot;>1</property> <!-- SQL dialect --> <property name=&quot;dialect&quot;>org.hibernate.dialect.MySQLDialect</property> <!-- Enable Hibernate's automatic session context management --> <property name=&quot;current_session_context_class&quot;>thread</property> <!-- Disable the second-level cache  --> <property name=&quot;cache.provider_class&quot;>org.hibernate.cache.NoCacheProvider</property> <!-- Echo all executed SQL to stdout --> <property name=&quot;show_sql&quot;>true</property> <!-- Drop and re-create the database schema on startup --> <property name=&quot;hbm2ddl.auto&quot;>update</property> <mapping resource=&quot;org/gp/model/Kullanici.hbm.xml&quot;/> </session-factory> </hibernate-configuration> KURULUM – hibernate.cfg.xml
HIBERNATE <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <!DOCTYPE hibernate-mapping PUBLIC &quot;-//Hibernate/Hibernate Mapping DTD 3.0//EN&quot; &quot;http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd&quot;> <hibernate-mapping> <class name=&quot;org.gp.model.Kullanici&quot; table=&quot;kullanici&quot;> <id name=&quot;id&quot; column=&quot;id&quot;> <generator class=&quot;identity&quot;/> </id> <property name=&quot;isim&quot; column=&quot;isim&quot; length=&quot;255&quot; type=&quot;string&quot;/> <property name=&quot;soyIsim&quot; column=&quot;soyisim&quot; length=&quot;255&quot; type=&quot;string&quot;/> <property name=&quot;eposta&quot; column=&quot;eposta&quot; length=&quot;255&quot; type=&quot;string&quot;/> <property name=&quot;parola&quot; column=&quot;parola&quot; length=&quot;255&quot; type=&quot;string&quot;/> </class> </hibernate-mapping> KURULUM – Kullanici.hbm.xml
AJAXANYWHERE
AJAXANYWHERE Ajaxanywhere, J2EE dünyasında Ajax kullanımını kolaylaştırmıştır, Kendine özgü tag kütüphanesiyle istenen bölgeye (zone) ajax çağrıları yapılmasını sağlamaktadır,
AJAXANYWHERE web.xml içerisinde aşağıdaki şekilde filter tanımlanır, <filter> <filter-name> AjaxAnywhere </filter-name> <filter-class> org.ajaxanywhere.AAFilter </filter-class> </filter> <filter-mapping> <filter-name> AjaxAnywhere </filter-name> <url-pattern> /* </url-pattern> </filter-mapping> KURULUM – AjaxAnywhere Filter
AJAXANYWHERE Örneğimizdeki versiyon için WEB-INF/lib içerisine  ajaxanywhere-1.2.1.jar  eklenir, AjaxAnywhere’in istemci taraflı çağrıları için gereken  aa.js  JSP sayfalarına aşağıdaki şekilde eklenir: <script language=“javascript” type=“text/javascript” src=“aa.js”> AjaxAnywhere’in tag tanımlaması olan  ajaxanywhere.tld  kurulum dizinine eklenir ve JSP sayfalarında aşağıdaki şekilde tanımlanır: <%@ taglib uri=“/WEB-INF/tld/ajaxanywhere.tld” prefix=“ajax”%> KURULUM – AjaxAnywhere Kütüphanesi ve aa.js
AJAXANYWHERE Ajax çağrısı sonunda yenilenecek alan <ajax:zone> içerisine alınır: <ajax:zone name=“HelloZone”> <div> Yenilenecek kısım </div> </ajax:zone> JavaScript eventi tetiklendiğinde AjaxAnywhere’in çalışması için JSP’de script tanımlanır: <script> function ajaxGonder() { ajaxAnywhere.submitAJAX(); return false;  } </script> KULLANIM
AJAXANYWHERE Import : import  org.ajaxanywhere.AAUtils; Struts Action tarafında bu zone’un refresh edilmesi için gerekli kod: AAUtils.addZonesToRefresh ( request,  &quot;HelloZone&quot;) ; KULLANIM
DISPLAYTAG
DISPLAYTAG Verileri biçimli tablolar olarak gösterir, İlave efor sarfetmeksizin request’e gönderilen obje listesini (örneğin ArrayList) sıralayabilir, sayfalayabilir, çeşitli formatlarda export edebilir.
DISPLAYTAG
DISPLAYTAG Örnek projemizdeki versiyon için  displaytag-1.1.jar  ’ı  WEB-INF/lib dizinine atıyoruz, (şu an 1.1.1 versiyonu mevcuttur) Tag tanımlama dosyası olan  displaytag.tld  ’yi tld dizinine ve özellik dosyası olan  displaytag.properties  dosyasını resource’ların arasına ekliyoruz. Displaytag’ın tabloları biçimlendirmesi için hazır olarak gelen css’leri kullanmak istersek bize sunduğu alternatiflerden yararlanabiliriz. KURULUM – Displaytag
DISPLAYTAG Tag kütüphanesini JSP’den çağırmak: <%@ taglib uri=&quot;/WEB-INF/tld/displaytag.tld&quot; prefix=&quot;display&quot;%> Displaytag css’ini kullanmak: <style type=&quot;text/css&quot; media=&quot;all&quot;> @import url(&quot;displaytag.css&quot;); </style> Ve nihayet Displaytag tablolarını gösterme: <display:table name=&quot;kullanciList&quot; id=&quot;kullanici&quot;> <display:column property=&quot;isim&quot;/> <display:column property=&quot;soyIsim&quot;/> <display:column property=&quot;eposta&quot;/> <display:column property=&quot;parola&quot;/> </display:table> KULLANIM – Displaytag
KAYNAKÇA http://struts.apache.org http://www.hibernate.org http://displaytag.sourceforge.net/ http://ajaxanywhere.sourceforge.net   Google BEA Sun Oracle IBM http://www.bilgidata.com
SORU – CEVAP BÖLÜMÜ
Teşekkürler Muharrem TAÇ Martı Bilişim [email_address]

More Related Content

PPTX
BTRisk X86 Tersine Mühendislik Eğitim Sunumu - Bölüm-3
PPTX
BTRisk X86 Tersine Mühendislik Eğitim Sunumu - Bölüm-2
PDF
Sql egitimi-sariyer
PDF
Sql egitimi-besiktas
PDF
İleri Seviye T-SQL Programlama - Chapter 02
PDF
Python ve Django'da Test'le Yürüyen Geliştirme
PPT
Mobil Teknolojiler
PPT
Android Üzerinde Adobe Flex ve AIR ile Yazılım Geliştirme
BTRisk X86 Tersine Mühendislik Eğitim Sunumu - Bölüm-3
BTRisk X86 Tersine Mühendislik Eğitim Sunumu - Bölüm-2
Sql egitimi-sariyer
Sql egitimi-besiktas
İleri Seviye T-SQL Programlama - Chapter 02
Python ve Django'da Test'le Yürüyen Geliştirme
Mobil Teknolojiler
Android Üzerinde Adobe Flex ve AIR ile Yazılım Geliştirme

Viewers also liked (20)

PDF
Yazilimci kimdir?
PPT
Android Teknolojileri
PPT
Giyilebilir Teknolojiler
PPT
Google App Engine
PDF
PPT
Webcar - Arduino Yun ile Webden yönetilen oyuncak araç
PPTX
Spring Android
PDF
Ruby ile tanışma!
PPT
PDF
Karmaşık Ağlar ve NetworkX
PDF
Spring Framework
PDF
Processing - Programcılar için eskiz defteri
PPTX
Mobil Eğitim
PPT
Eclipse
PPT
Liferay
PDF
Vagrant 101
PPTX
PPT
HTML5 ve Phonegap
PDF
Agent-based Models
PDF
Klassify: Text Classification with Redis
Yazilimci kimdir?
Android Teknolojileri
Giyilebilir Teknolojiler
Google App Engine
Webcar - Arduino Yun ile Webden yönetilen oyuncak araç
Spring Android
Ruby ile tanışma!
Karmaşık Ağlar ve NetworkX
Spring Framework
Processing - Programcılar için eskiz defteri
Mobil Eğitim
Eclipse
Liferay
Vagrant 101
HTML5 ve Phonegap
Agent-based Models
Klassify: Text Classification with Redis

Similar to Java EE Struts (20)

PPTX
Struts 2 Ile Tanisma
PDF
Java Server Faces
PDF
Kurumsal Java & Web Teknolojileri
PPTX
Jsf
PDF
Primeface
PPTX
Web development
PDF
Java Web Uygulama Geliştirme
PDF
Caylak Javacilara Yol Haritasi
PDF
Caylak Javacilara Yol Haritasi
PPTX
AnkaraJUG Nisan 2013 - Java Persistance API
PDF
Java ve axis2 framework ile web service yayınlamak
PPTX
ASPNET Web API
ODP
Hibernate ve jpa
PPT
Hibernate ve jpa
PPT
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
PDF
Özcan Acar Ankara Cankaya Universitesi Wicket Webframework Sunumu
PDF
Spring application framework
PDF
Java EE Nedir? (Baku JUG)
PDF
Java ee kursu-kagithane
DOCX
Java 1
Struts 2 Ile Tanisma
Java Server Faces
Kurumsal Java & Web Teknolojileri
Jsf
Primeface
Web development
Java Web Uygulama Geliştirme
Caylak Javacilara Yol Haritasi
Caylak Javacilara Yol Haritasi
AnkaraJUG Nisan 2013 - Java Persistance API
Java ve axis2 framework ile web service yayınlamak
ASPNET Web API
Hibernate ve jpa
Hibernate ve jpa
2010 Kocaeli Linux Günleri - Linux Web Geliştiriciliği
Özcan Acar Ankara Cankaya Universitesi Wicket Webframework Sunumu
Spring application framework
Java EE Nedir? (Baku JUG)
Java ee kursu-kagithane
Java 1

Java EE Struts

  • 1. J2EE Mimarileri (Struts, Hibernate, Ajax) ile Uygulama Geliştirmek Muharrem TAÇ Martı Bilişim www.martisoft.com
  • 2. KONU BAŞLIKLARI 1-J2EE mimarisi nedir? 2-MVC tasarım deseni (design patterns) ne işe yarar? 3-Struts Framework 4-Hibernate ORM 5-Ajax anywhere 6-Displaytag
  • 4. J2EE MİMARİSİ NEDİR ? J2EE J ava 2 E nterprise E dition’ın kısaltmasıdır, yeni adı Java EE olarak değişmiştir, Bu mimari çok katmanlı kurumsal uygulamalar oluşturmak için API’ler sunar, JSP, Servlets, (Web tabanlı sunum katmanı) JDBC, (Java veritabanı bağlanırlığı) JMS,(Java Mesajlaşma Servisi) RMI, (Uzaktan method çağırma) JNDI,(Java isimlendirme ve dizinleme servisi) Java Mail,(E-posta gönderme ve alma) EJB (Enterprise Java Beans) gibi.. Çok katmanlı mimaride genelde 3 katman bulunur, Sunum katmanı (presentation layer) İş katmanı (business layer) Uygulama katmanı (application layer)
  • 6. J2EE WEB UYGULAMALARI NASIL ÇALIŞIR ? Bir uygulama sunucusu ya da servlet container olmalıdır Örnekler Open Source : Tomcat, Jetty, Jboss, Glassfish, Geronimo Ticari : BEA Weblogic, Oracle Application Server, IBM Websphere, Sun Application Server Sunucuya deploy edilmiş web uygulamasında WEB-INF dizini olmalıdır, WEB-INF dizini altında web.xml olmalıdır, web uygulamalarının temel konfigürasyon dosyası web.xml’dir, Derlenmiş java kodları class uzantıları ile WEB-INF/classes dizinde bulunur, Kullanılan teknolojilerin kütüphaneleri .jar dosyaları halinde WEB-INF/lib dizini altında bulunur,
  • 7. MVC
  • 8. MVC NEDİR NE İŞE YARAR ? Bir tasarım kalıbıdır (design pattern), M VC M odel V iew C ontroller’ın kısaltmasıdır, M odel : Kuralların tanımlandığı, hesaplamaların, veritabanı objelerinin bulunduğu katman. Örneğin Kullanici isimli objemiz. V iew : Verilerin görüntülenmesi ile ilgili işlemleri gerçekleştiren katmandır, JSP, JSTL, Displaytag gibi... C ontroller : Veri akışının nereden nereye gideceğini belirleyen katmandır. Struts için ActionServlet , struts-config.xml
  • 11. STRUTS FRAMEWORK Struts, en eski ve en popüler J2EE framewoküdür diyebiliriz, Apache Yazılım Vakfı’nın kurumsal web uygulamalarına yönelik ürünüdür, Temel konfigürasyon dosyası struts-config.xml ’dir, HTML formlarını temsil eden ActionForm , formdan post veya get ile gelen datayı almak ve işlemler yapmak için Action ve işlemler sonunda yönlendirme yapmak için ActionMappings olarak üç temel sınıfı bulunur, Çoklu dil desteği için ApplicationResources.properties dosyaları kullanılır, Türkçe lokalizasyon için ApplicationResources_tr.properties , İngilizce için ApplicationResources_en.properties gibi... Struts’a özgü struts-bean , struts-html , struts-logic taglarına sahiptir.
  • 12. STRUTS FRAMEWORK WEB-INF dizini içerisinde bulunan web.xml ’de aşağıdaki şekilde Struts ActionServlet ve konfigürasyon dosyasının konumu tanımlanır: <servlet> <servlet-name> ActionServlet </servlet-name> <servlet-class> org.apache.struts.action.ActionServlet </servlet-class> <init-param> <param-name> config </param-name> <param-value> /WEB-INF/struts-config.xml </param-value> </init-param> <load-on-startup> 1 </load-on-startup> </servlet> <servlet-mapping> <servlet-name> ActionServlet </servlet-name> <url-pattern> *.do </url-pattern> </servlet-mapping> KURULUM – Servlet tanımlama
  • 13. STRUTS FRAMEWORK WEB-INF/lib dizini içerisine Struts sınıflarını bulunduran kütüphaneler ve Apache Commons projesinin gerekli kütüphaleneleri atılır Deneme projemizde kullandığımız struts versiyonu için ihtiyaç duyulan jar’lar aşağıdakilerdir: struts-core-1.3.8.jar struts-extras-1.3.8.jar struts-taglib-1.3.8.jar commons-beanutils.jar commons-chain-1.1.jar commons-digester-1.8.jar commons-logging.jar KURULUM – Kütüphaleleri yükleme
  • 14. STRUTS FRAMEWORK HTML forma karşılık gelen ActionForm sınıfı örneği: import org.apache.struts.action.ActionForm; public class KullaniciForm extends ActionForm { private String isim ; private String soyIsim ; private String eposta ; private String parola ; getters and setters } KURULUM – ActionForm sınıfı
  • 15. STRUTS FRAMEWORK Formumuzun struts-config.xml’de tanımlanması: <form-beans> <form-bean name= &quot;kullaniciFrom&quot; type= &quot;org.gp.form.KullaniciForm&quot; > <form-property name= &quot;isim&quot; type= &quot;java.lang.String&quot; ></form-property> <form-property name= &quot;soyIsim&quot; type= &quot;java.lang.String&quot; ></form-property> <form-property name= &quot;eposta&quot; type= &quot;java.lang.String&quot; ></form-property> <form-property name= &quot;parola&quot; type= &quot;java.lang.String&quot; ></form-property> </form-bean> </form-beans> KURULUM – ActionForm tanımlama
  • 16. STRUTS FRAMEWORK Struts’ın ActionForm ile göndereceği verileri alacak Action sınıfımız aşağıdaki şekilde. import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.gp.form.KullaniciForm; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class KullaniciAction extends Action { public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) throws Exception{ KullaniciForm kullaniciForm = (KullaniciForm)form; String isim = kullaniciForm.getIsim(); String soyIsim = kullaniciForm.getSoyIsim(); String eposta = kullaniciForm.getEposta(); String parola = kullaniciForm.getParola(); return mapping.findForward( &quot;success&quot; ); } } KURULUM – Action sınıfı
  • 17. STRUTS FRAMEWORK Action’ın struts-config.xml’de tanımlanması: <action-mappings> <action path= &quot;/kullaniciAction&quot; name= &quot;kullaniciFrom&quot; type= &quot;org.gp.action.KullaniciAction&quot; > <forward name= &quot;success&quot; path= &quot;/index.jsp&quot; /> </action> </action-mappings> KURULUM – Action tanımlama
  • 19. HIBERNATE ORM (Object Relational Mapping) aracıdır, ilişkisel veritabanlarını objeler olarak tanımlar, Veritabanını nesnesel olarak modelleyen bir teknolojidir, JDBC ile iletişim kurulabilen neredeyse tüm veritabanlarını destekler, Kendine özgü HQL (Hibernate Query Language) dili ile SQL’den çok daha verimli veritabanı sorguları üretir, Temel konfigürasyon dosyası hibernate.cfg.xml ’dir, Her bir POJO nesnesi için bir config dosyası üretilmelidir. Örnek : Kullanici.hbm.xml
  • 20. HIBERNATE <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC &quot;-//Hibernate/Hibernate Configuration DTD 3.0//EN&quot; &quot;http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd&quot;> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name=&quot;connection.driver_class&quot;>com.mysql.jdbc.Driver</property> <property name=&quot;connection.url&quot;>jdbc:mysql://localhost:3306/gp</property> <property name=&quot;connection.username&quot;>gp</property> <property name=&quot;connection.password&quot;>1</property> <!-- JDBC connection pool (use the built-in) --> <property name=&quot;connection.pool_size&quot;>1</property> <!-- SQL dialect --> <property name=&quot;dialect&quot;>org.hibernate.dialect.MySQLDialect</property> <!-- Enable Hibernate's automatic session context management --> <property name=&quot;current_session_context_class&quot;>thread</property> <!-- Disable the second-level cache --> <property name=&quot;cache.provider_class&quot;>org.hibernate.cache.NoCacheProvider</property> <!-- Echo all executed SQL to stdout --> <property name=&quot;show_sql&quot;>true</property> <!-- Drop and re-create the database schema on startup --> <property name=&quot;hbm2ddl.auto&quot;>update</property> <mapping resource=&quot;org/gp/model/Kullanici.hbm.xml&quot;/> </session-factory> </hibernate-configuration> KURULUM – hibernate.cfg.xml
  • 21. HIBERNATE <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <!DOCTYPE hibernate-mapping PUBLIC &quot;-//Hibernate/Hibernate Mapping DTD 3.0//EN&quot; &quot;http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd&quot;> <hibernate-mapping> <class name=&quot;org.gp.model.Kullanici&quot; table=&quot;kullanici&quot;> <id name=&quot;id&quot; column=&quot;id&quot;> <generator class=&quot;identity&quot;/> </id> <property name=&quot;isim&quot; column=&quot;isim&quot; length=&quot;255&quot; type=&quot;string&quot;/> <property name=&quot;soyIsim&quot; column=&quot;soyisim&quot; length=&quot;255&quot; type=&quot;string&quot;/> <property name=&quot;eposta&quot; column=&quot;eposta&quot; length=&quot;255&quot; type=&quot;string&quot;/> <property name=&quot;parola&quot; column=&quot;parola&quot; length=&quot;255&quot; type=&quot;string&quot;/> </class> </hibernate-mapping> KURULUM – Kullanici.hbm.xml
  • 23. AJAXANYWHERE Ajaxanywhere, J2EE dünyasında Ajax kullanımını kolaylaştırmıştır, Kendine özgü tag kütüphanesiyle istenen bölgeye (zone) ajax çağrıları yapılmasını sağlamaktadır,
  • 24. AJAXANYWHERE web.xml içerisinde aşağıdaki şekilde filter tanımlanır, <filter> <filter-name> AjaxAnywhere </filter-name> <filter-class> org.ajaxanywhere.AAFilter </filter-class> </filter> <filter-mapping> <filter-name> AjaxAnywhere </filter-name> <url-pattern> /* </url-pattern> </filter-mapping> KURULUM – AjaxAnywhere Filter
  • 25. AJAXANYWHERE Örneğimizdeki versiyon için WEB-INF/lib içerisine ajaxanywhere-1.2.1.jar eklenir, AjaxAnywhere’in istemci taraflı çağrıları için gereken aa.js JSP sayfalarına aşağıdaki şekilde eklenir: <script language=“javascript” type=“text/javascript” src=“aa.js”> AjaxAnywhere’in tag tanımlaması olan ajaxanywhere.tld kurulum dizinine eklenir ve JSP sayfalarında aşağıdaki şekilde tanımlanır: <%@ taglib uri=“/WEB-INF/tld/ajaxanywhere.tld” prefix=“ajax”%> KURULUM – AjaxAnywhere Kütüphanesi ve aa.js
  • 26. AJAXANYWHERE Ajax çağrısı sonunda yenilenecek alan <ajax:zone> içerisine alınır: <ajax:zone name=“HelloZone”> <div> Yenilenecek kısım </div> </ajax:zone> JavaScript eventi tetiklendiğinde AjaxAnywhere’in çalışması için JSP’de script tanımlanır: <script> function ajaxGonder() { ajaxAnywhere.submitAJAX(); return false; } </script> KULLANIM
  • 27. AJAXANYWHERE Import : import org.ajaxanywhere.AAUtils; Struts Action tarafında bu zone’un refresh edilmesi için gerekli kod: AAUtils.addZonesToRefresh ( request, &quot;HelloZone&quot;) ; KULLANIM
  • 29. DISPLAYTAG Verileri biçimli tablolar olarak gösterir, İlave efor sarfetmeksizin request’e gönderilen obje listesini (örneğin ArrayList) sıralayabilir, sayfalayabilir, çeşitli formatlarda export edebilir.
  • 31. DISPLAYTAG Örnek projemizdeki versiyon için displaytag-1.1.jar ’ı WEB-INF/lib dizinine atıyoruz, (şu an 1.1.1 versiyonu mevcuttur) Tag tanımlama dosyası olan displaytag.tld ’yi tld dizinine ve özellik dosyası olan displaytag.properties dosyasını resource’ların arasına ekliyoruz. Displaytag’ın tabloları biçimlendirmesi için hazır olarak gelen css’leri kullanmak istersek bize sunduğu alternatiflerden yararlanabiliriz. KURULUM – Displaytag
  • 32. DISPLAYTAG Tag kütüphanesini JSP’den çağırmak: <%@ taglib uri=&quot;/WEB-INF/tld/displaytag.tld&quot; prefix=&quot;display&quot;%> Displaytag css’ini kullanmak: <style type=&quot;text/css&quot; media=&quot;all&quot;> @import url(&quot;displaytag.css&quot;); </style> Ve nihayet Displaytag tablolarını gösterme: <display:table name=&quot;kullanciList&quot; id=&quot;kullanici&quot;> <display:column property=&quot;isim&quot;/> <display:column property=&quot;soyIsim&quot;/> <display:column property=&quot;eposta&quot;/> <display:column property=&quot;parola&quot;/> </display:table> KULLANIM – Displaytag
  • 33. KAYNAKÇA http://struts.apache.org http://www.hibernate.org http://displaytag.sourceforge.net/ http://ajaxanywhere.sourceforge.net Google BEA Sun Oracle IBM http://www.bilgidata.com
  • 34. SORU – CEVAP BÖLÜMÜ
  • 35. Teşekkürler Muharrem TAÇ Martı Bilişim [email_address]