Java EE Struts
-
Upload
muharrem-tac -
Category
Technology
-
view
3.023 -
download
7
description
Transcript of Java EE Struts
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 Framework4-Hibernate ORM5-Ajax anywhere6-Displaytag
J2EE
J2EE MİMARİSİ NEDİR ?J2EE Java 2 Enterprise Edition’ı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
ÖrneklerOpen Source : Tomcat, Jetty, Jboss, Glassfish, GeronimoTicari : 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),
MVC Model View Controller’ın kısaltmasıdır,
Model : Kuralların tanımlandığı, hesaplamaların, veritabanı objelerinin bulunduğu katman. Örneğin Kullanici isimli objemiz.
View : Verilerin görüntülenmesi ile ilgili işlemleri gerçekleştiren katmandır, JSP, JSTL, Displaytag gibi...
Controller : 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.jarstruts-extras-1.3.8.jarstruts-taglib-1.3.8.jarcommons-beanutils.jarcommons-chain-1.1.jarcommons-digester-1.8.jarcommons-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="kullaniciFrom" type="org.gp.form.KullaniciForm">
<form-property name="isim" type="java.lang.String"></form-property><form-property name="soyIsim" type="java.lang.String"></form-property><form-property name="eposta" type="java.lang.String"></form-property><form-property name="parola" type="java.lang.String"></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("success");}
}
KURULUM – Action sınıfı
STRUTS FRAMEWORK
Action’ın struts-config.xml’de tanımlanması:
<action-mappings> <action path="/kullaniciAction"
name="kullaniciFrom" type="org.gp.action.KullaniciAction">
<forward name="success" path="/index.jsp"/> </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 "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/gp</property> <property name="connection.username">gp</property> <property name="connection.password">1</property>
<!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">1</property>
<!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup --> <property name="hbm2ddl.auto">update</property>
<mapping resource="org/gp/model/Kullanici.hbm.xml"/>
</session-factory>
</hibernate-configuration>
KURULUM – hibernate.cfg.xml
HIBERNATE
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping> <class name="org.gp.model.Kullanici" table="kullanici"> <id name="id" column="id"> <generator class="identity"/> </id>
<property name="isim" column="isim" length="255" type="string"/><property name="soyIsim" column="soyisim" length="255" type="string"/><property name="eposta" column="eposta" length="255" type="string"/><property name="parola" column="parola" length="255" type="string"/>
</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, "HelloZone");
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="/WEB-INF/tld/displaytag.tld" prefix="display"%>
Displaytag css’ini kullanmak:<style type="text/css" media="all"> @import url("displaytag.css");</style>
Ve nihayet Displaytag tablolarını gösterme:
<display:table name="kullanciList" id="kullanici"> <display:column property="isim"/> <display:column property="soyIsim"/> <display:column property="eposta"/> <display:column property="parola"/>
</display:table>
KULLANIM – Displaytag
KAYNAKÇA
http://struts.apache.orghttp://www.hibernate.orghttp://displaytag.sourceforge.net/http://ajaxanywhere.sourceforge.net GoogleBEASunOracleIBMhttp://www.bilgidata.com
SORU – CEVAP BÖLÜMÜ