Front Controller Tasarım Şablonu KurumsalJava.com

Benzer belgeler
Intercepting Filter Tasarım Şablonu KurumsalJava.com

Facade (Cephe) Tasarım Şablonu KurumsalJava.com

Business Delegate Tasarım Şablonu KurumsalJava.com

Üst Düzey Programlama

.com. Özcan Acar 2009 Kurumsal Java.com

Struts2 ile Merhaba Dünya uygulamas

Üst Düzey Programlama

Liskov Substitution Principle (LSP) Liskov un Yerine Gecme Prensibi KurumsalJava.com

Chain of Responsibility Tasarım Şablonu KurumsalJava.com

Üst Düzey Programlama


Özcan Acar 2009 Kurumsal Java.com

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

Üst Düzey Programlama

Java EE web uygulamaları geliştirmek için kullanılan açık kaynak web uygulama framework üdür.

Üst Düzey Programlama

Decorator Tasarım Şablonu

MOBİL UYGULAMA GELİŞTİRME

MOBILEPAX XML PRODUCT API KULLANIM ŞEKLİ

Client Server Database

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Adapter Tasarım Şablonu

MOBILEPAX SOAP PRODUCT API KULLANIM ŞEKLİ

2.Eclipse açıldıktan sonra Workspace alanı seçilmesi gerekir. Workspace alanı projelerinizin fiziksel olarak bulunduğu kısımdır.

Loose Coupling (LC) Esnek Bağ Tasarım Prensibi KurumsalJava.com

JSF Melih Sakarya. Java Server Faces Facelet

JavaServerFaces. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4

Cybersoft Bilişim Teknolojileri Sunucu Tarafı Programlaması Kursu Final soruları. Tarih: 27 Kasım 2010 Saat: 13:30 Süre: 3 saat

Builder Tasarım Şablonu KurumsalJava.com

// hataları işaret eden referans

Üst Düzey Programlama

BİL-141 Bilgisayar Programlama I (Java)

Spring Framework Eğitimi

Mysql Klası Kullanılarak Yapılan Öğrenci Kayıt Uygulaması

8. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

Başlangıç seviyesinde Maven, JPA ve Spring Dökümanı

Sunum İçeriği. Programlamaya Giriş

Basit bir web uygulaması

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

Open Closed Principle (OCP) Açık Kapalı Tasarım Prensibi KurumsalJava.com

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58;

Flyweight (Sinek Siklet) Tasarım Şablonu KurumsalJava.com

BİL132 Bilgisayar Programlama II

Java EE 5 Teknolojileri Jboss Seam

JavaServer Faces (JSF) Sunucu Yazılım Teknolojileri 2008

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

PHP ile İnternet Programlama

MASTER PAGE SAYFASI KULLANIMI

JavaScript Örnekleri PDF

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

Bölüm 24. Java Ağ Uygulamaları 24.1 Java Appletleri. Bir Applet in Yaşam Döngüsü:

Test Güdümlü Yazılımın Tasarım Üzerindeki Etkileri KurumsalJava.com

MyFaces Özgür JSF Uyarlaması. Bora Güngören Portakal Teknoloji

PAKET TRANSFER SİSTEMİ

Android Ders Notları

Burak Kıymaz JAVA FX

PHP ile İnternet Programlama

.com. Kurumsal Java. Özcan Acar com

Yazılım Kodlama ve İ simlendirme Standartları v1.0

The RestructuredText Book Documentation

Proje 1. Arayüz Tasarımı

Önce Access açıp,masaüstü ne, vt.mdb adlı veri tabanı dosyasını oluşturuyoruz. Kayıt türünü seçiyoruz

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

SESSİON KULLANIMI. .Aşağıdaki Kodları da SessionDevam.asp adıyla kaydedelim. Language=VBScript Codepage="1254"%>


Spring Security Framework Harezmi Bilişim Çözümleri

İNTERNET TABANLI PROGRAMLAMA- 8.ders VERİTABANI İLE İLGİLİ BİLGİLERİ GÖRÜNTÜLEME, KAYDETME, GÜNCELLEME VE SİLME

BMÜ-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ

1 - Button Kontrolu Nasıl Yapılır?

Kaynak Kod Güvenliği Bir Güvensiz API Örneği

Kitapta UML diyagramları kullanılarak, tasarım şablonları görsel olarak açıklanmıştır. İçerik aşağıdaki bölümlerden oluşmaktadır:

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

HTML isteklerini anlayarak HTML sonucu üreten ve yaygın olarak kullanılan temel Servlet sınıfı HttpServlet tir.

İNTERNET PROGRAMCILIĞI I

Java Programlama Giriş

Üst Düzey Programlama

HSancak Nesne Tabanlı Programlama I Ders Notları

Programlama Dillerinde Kullanılan Veri Tipleri

Yukardaki örneğe dayanarak, aşağıdakiler tanımlar Object Oriented açısından doğrudur:

Üst Düzey Programlama

9. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM

Spring Application Framework Harezmi Bilişim Çözümleri

Web Formlar ve Sayfalar Arasında Bilgi Gönderme. BATML İnternet Programcılığı 1

ATATÜRK ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BIM 205 GÖRSEL PROGRAMLAMA GÜZ DÖNEMİ ÖDEV-1

Paket Erişimleri. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 1

7. HAFTA. Erişim Belirleyiciler

PROGRAMLAMA DERSİ 1. İNTERNET

Start : Bu method init methodundan hemen sonra çalışır ve applet dosyası yürütülmeye başladığında çalışmaya başlar.

Web Tasarımının Bugünü ve Geleceği

ANKARA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ. Java Teknolojileri Kullanılarak. Kan Bağış Web Uygulamasının Tasarlanması

WEB TASARIM. CSS, IFRAME, TEMPLATE, SLICE, INCLUDE(php komutu) Tarık ÖZEL

Erişim konusunda iki taraf vardır:

19 Şubat 2016 Cuma

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;

İnternet Programcılığı Form İşlemleri ve Oturum Yönetimi Örnekleri

TÜRKİYE ELEKTRONİK FON ALIM SATIM PLATFORMU WEB SERVİS İŞLEMLERİ

Proxy (Vekil) Tasarım Şablonu KurumsalJava.com

Transkript:

Front Controller Tasarım Şablonu KurumsalJava.com Özcan Acar Bilgisayar Mühendisi http://www.ozcanacar.com

Web aplikasyonlarında Front Controller tasarım şablonu ile sisteme yöneltilen tüm istekler (request) merkezi bir yerde toplanarak işlem görürler. Front Controller ile, yönlendirme ve işlem yapma fonksiyonlarının birden fazla view (bir JSP sayfası olabilir) elementine dağıtılması önlenmiş olur.tüm view elementleri yönlendirme ve işlem yapma fonksiyonlarını ortak kullanırlar. Böylece Front Controller tasarım şablonunun kullanıldığı bir proje bakımı ve geliştirilmesi daha kolay bir hale gelir. Ayrıca Front Controller ile gösterim ve navigasyon fonksiyonları birbirinden ayrıldığı için, gösterim katmanını etkilemeden navigasyon idaresi değiştirilebilir yada tamamen yenilenebilir. Front Controller implementasyonunda Servlet ya da JSP teknolojisi kullanilabilir. Bir sonraki örnekte Servlet teknolojisi kullanilarak Front Controller implemente edilmekteidr. package org.javatasarim.otelrezervasyon.presentation.ui; import java.io.ioexception; import javax.servlet.requestdispatcher; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import org.javatasarim.otelrezervasyon.presentation.command.command; import org.javatasarim.otelrezervasyon.presentation.helper.requesthelper; import org.javatasarim.otelrezervasyon.util.logger; * FrontController tasarim şablonu örnegi. * Http üzerinden gelen tüm request'ler * su sinif tarafindan islem görür. * * Controller sinifi gerekli command nesnesi bularak * islemi bu nesneye devreder ve netice göre gerekli * jsp sayfasina yönlendirme yapar. * * @author Oezcan Acar *

public class FrontController extends HttpServlet private static final long serialversionuid = 1L; * FrontController sinifina gelen tüm request'ler bu * metod tarafindan işlem görür. * @param request HttpServletRequest * @param response HttpServletResponse public void handle(httpservletrequest request, HttpServletResponse response) Logger.instance(this).debug("handle()"); String nextpage = ""; try RequestHelper helper = new HotelRequestHelper(request, response); Command command = helper.getcommand(); nextpage = command.execute(helper); dispatch(request, response, nextpage); // CommandException ve IOExcepton olusabilir. // Bu durumda error.jsp sayfasina yönlendiriyoruz. catch (Exception e) e.printstacktrace(); try dispatch(request, response, "/error.jsp"); catch (Exception e1) e1.printstacktrace(); * Jsp sayfalari arasinda yönlendirme yapmak için kullanılır. * @param request * @param response * @param page * @throws ServletException * @throws IOException private void dispatch(httpservletrequest request, HttpServletResponse response, String page) throws ServletException, IOException Logger.instance(this).debug("dispatch()"); RequestDispatcher dispatcher = getservletcontext().getrequestdispatcher(page); dispatcher.forward(request, response); * FrontController bir servlet sinifi oldugu için GET

* metodu ile gelen tüm request'ler bu metod tarafindan * islem görür. public void doget(httpservletrequest request, HttpServletResponse response) Logger.instance(this).debug("doGet()"); handle(request, response); * FrontController bir servlet sinifi oldugu için POST * metodu ile gelen tüm * request'ler bu metod tarafindan islem görür. public void dopost(httpservletrequest request, HttpServletResponse response) Logger.instance(this).debug("doPost()"); handle(request, response); FrontController isminde bir sınıf tanımlıyoruz. Bu sınıf HttpServlet sınıfını genişlettiği (extends HttpServlet) için bir Servlet sınıfı haline gelir. Bir servlet sınıfının kullanıcıdan gelen GET ve POST metodlarına cevap vermek üzere doget() ve dopost() isimlerinde iki metoda sahip olması gerekmektedir. FronController sınıfında doget() ve dopost() metodları içinde handle(request, response) metodunu kullanarak gelen isteği (http request) merkezi bir metoda yönlendiriyoruz. Bu Front Controller sınıfı, bir Helper sınıfı yardımı ile üyenin isteğine cevap vermek üzere gerekli Command 1 nesnesini edinir. Command bünyesinde gerekli business metodları çalıştırılır ve oluşan sonucun gösterimi için bir sonraki sayfa (view) geri verilir. FrontController, sahip olduğu dispatch() metodu yardımı ile, kontrolü RequestDispatcher sınıfına verir ve bir sonraki JSP sayfasının gösterilmesini sağlar. Front Controller tasarım şablonunun sağladığı diğer bir avantaj da merkezi Exception Handling yapılmasını kolaylaştırıyor olmasıdır. handle() metodunda yer alan bir try-catch bloğu ile alt katmanlarda oluşan hatalar yakalanır ve örneğin log4j 2 ile bir log dosyasına yazılır ya da bir bilgibankasına daha sonra incelenmek üzere eklenir. FrontController sınıfını bir web aplikasyon içinde kullanabilmek için aşağıdaki şekilde web.xml 3 kaydının yapılması gerekmektedir. <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' 'http://java.sun.com/jee/dtds/web-app_2_3.dtd'> <web-app> 1 Command tasarım sablonu hakkında geniş bilgi için Command tasarım sablonu bölümüne bakınız. 2 Logging yapmak için kullanılan open source program. Bakınız: http://logging.apache.org/log4j 3 Web aplikasyonlarında kullanılan konfigürasyon dosyasıdır.

<servlet> <servlet-name>frontcontroller</servlet-name> <servlet-class> org.javatasarim.otelrezervasyon.presentation.controller.frontcontro ller </servlet-class> </servlet> <servlet-mapping> <servlet-name>frontcontroller</servlet-name> <url-pattern>/frontcontroller/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> web.xml içinde <servlet> tagını kullanarak FrontController isminde bir Servlet tanımlıyoruz. Bu servlet http://localhost/frontcontroller adresinden erişilebilir hale gelir. <servlet-mapping> tagı ile http://localhost/frontcontroller adresine yönlendirilmiş tüm istekler (request) FrontConller sınıfına iletilir. GET metodu ile gelen istekler FrontController.doGet(), POST metodu ile gelen istekler FrontController.doPost() metoduna yönlendirilir. Aşağıda yer alan html formunda POST metodu kullanılmaktadır. Ara butonuna tıklandığında bu istek (request) /FrontController sınıfına iletilir. <form name="form1" method="post" action="frontcontroller"> <table width="300" border="0" cellspacing="0" cellpadding="2"> <tr> <td> <div align="left">sehir:</div> <td><input type="text" name="city" size="15" class=text10 maxlength="50" value=""> </tr> <tr> <td> <input type="submit" name="submit2" value=" Ara " class=button> </tr> <tr> <td> <input type="hidden" name="action" value="ara"> <td> </tr> </table> </form> Front Controller tasarım şablonu ne zaman kullanılır?

Sisteme ulaşan isteklerin (http request) merkezi bir yerde toplanıp, işlenmesi gerektiği durumlarda Front Controller kullanılır. JSP sayfalarında navigasyon ve diğer işlemler için oluşabilecek kod dublikasyonunu önlemek için Front Controller kullanılır. Gösterim katmanını oluşturan JSP sayfalarında yer alan verinin gösterilmesi için gerekli koddan daha fazla kodun yer almasını engellemek için Front Controller kullanılır. JSP sayfaları sadece verileri göstermek için programlanmalıdır. Bir JSP sayfası örneğin kesinlikle JDBC ile bilgibankasına bağlanıp, veri edinmemeli ya da veri üzerinde işlem yapmamalıdır. Bu model komponentlerinin görevidir. Güvenlik uygulamaları yapabilmek için merkezi bir giriş noktası gerektiği durumlarda Front Controller kullanılır. İlişkili tasarım şanlonları: Intercepting Filter ve Front Controller tasarım şanlonları veri akışını merkezi bir yerden kontrol etmek amacıyla kullanılır. View Helper tasarım şablonu ile kullanılan business metodlar helper sınıflarında biraraya getirilir. Front Controller, helper sınıflarını kullanarak, gerekli işlemlerin yapılmasını sağlar. EOF (End Of Fun) Özcan Acar