Intercepting Filter Tasarım Şablonu KurumsalJava.com



Benzer belgeler
Front Controller Tasarım Şablonu KurumsalJava.com

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

Business Delegate Tasarım Şablonu KurumsalJava.com

Chain of Responsibility Tasarım Şablonu KurumsalJava.com

Decorator Tasarım Şablonu

Üst Düzey Programlama

Üst Düzey Programlama

Üst Düzey Programlama


Özcan Acar 2009 Kurumsal Java.com

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

BİL-141 Bilgisayar Programlama I (Java)

Client Server Database

2. Bölüm Spring İle Tanışalım

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

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

Üst Düzey Programlama

.com. Özcan Acar 2009 Kurumsal Java.com

Burak Kıymaz JAVA FX

Üst Düzey Programlama

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

Bire-bir Sahiplik İlişkisi ile İlgili Sorular:

Üst Düzey Programlama

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

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

Builder Tasarım Şablonu KurumsalJava.com

JavaServerFaces. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4

MOBİL UYGULAMA GELİŞTİRME

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.

Klavyeden Basit Giriş/Çıkış İşlemleri

Java Programlama Giriş

.com. Kurumsal Java. Özcan Acar com

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

İçindekiler. Okuma lisansı info acar, için verilmiştir. Çoğaltılması ve dağıtılması yasaktır.

Adapter Tasarım Şablonu

REQUEST QUERY STRING. Sayfalar: default.aspx ve sorgu_sayfasi.aspx. default.aspx sayfası: sorgu_sayfasi.aspx sayfası:

ECLIPSE PROGRAMININ ÇALIŞTIRILMASI

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

UYGULA İÇİ SATIN ALMA. <uses-permission android:name="android.permission.internet" /> <uses-permission android:name="com.android.vending.

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

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

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

Java da İstemci Tarafı Uygulamalar

MVC Kul anıcı Doğrulama ve Yetkilendirme MVC Filtreler Action Filter FilterAttribute IActionFilter FilterAttribute IActionFilter

Struts2 ile Merhaba Dünya uygulamas

Spring Framework Eğitimi

// hataları işaret eden referans

Java da, tüm değişkenlerin kullanılmadan önce tanımlanması edilmesi gerekir. Bir değişken tanımlamanın temel gösterimi bu şekildedir:

19 Şubat 2016 Cuma

JBoss Seam. Melih Sakarya

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

GÜZ DÖNEMİ AKT105 BİLGİSAYAR PROGRAMLAMA DERSİ 4. UYGULAMA

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;

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

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

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

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

Sunum İçeriği. Programlamaya Giriş

Proje 1. Arayüz Tasarımı

Arayüz soyut metotların oluşturduğu bir koleksyondur. Bir sınıf arayüzü çalıştırırken arayüzün sahip olduğu soyut metotları da miras alır.

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

Soket, bir sunucu programı ve bir veya birden çok istemci programı arasında çift yönlü iletişim kuran bir yazılım uç noktasıdır.

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Java ile Nesneye Yönelik Programlama (Object Oriented Programming)

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

Cahit GÜNGÖR Hacettepe Üniversitesi Bilişim Enstitüsü. Sorumluluk Zinciri. Kod Üretme (Code Generation)

MOBİL UYGULAMA GELİŞTİRME

MVP, Observer ve Mediator Örüntüleri ile Yeniden Kullanılabilir Uygulama Bileşenleri Geliştirme

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

Nesneye Dayalı Programlama

Alıştırmalar 2 - Dağıtık Sistemler. Alıştırma 2. Prof. Dr. Th. Letschert Çeviri: Turgay Akbaş FB MNI 16. Mai 2013

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

Cyberoam Single Sing On İle

Programlama Dillerinde Kullanılan Veri Tipleri

Spring için Acegi Güvenlik Sistemi. Hazırlayan : Akif Burak Tosun Hacettepe Universitesi İletişim: thunder_burak@hotmail.

«BM364» Veritabanı Uygulamaları

Nesne Yönelimli Programlama

Java Interface ve Abstract Sınıflar

Arayüz (Interface) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 1

JSF Melih Sakarya. Java Server Faces Facelet

PAKET TRANSFER SİSTEMİ

JavaFX Temelleri (1)

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

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

BMS-302 İleri Web Programlama. İş Parçacığı (Thread) ve Soket (Socket) Programlama

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

BİL-141 Bilgisayar Programlama I (Java)

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

1 Milyon Kullanıcıya Nasıl Hizmet Veriyoruz? CloudLMS Teknik Alt Yapı ve Mimarimiz

Java EE 5 Teknolojileri Jboss Seam

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi YAYIN ALICILARI. BLM401 Dr.Refik SAMET

TachoMobile Web Uygulaması v1.00.

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.

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

MOBİL UYGULAMA GELİŞTİRME

Karabük Üniversitesi, Mühendislik Fakültesi... WEB TEKNOLOJİLERİ

Nesneye yönelik: Javada herşey bir nesnedir. Java nesne yönelimli olduğu için kolayca geliştirilebilir.

Bir Sistemin Tasarlanış Hikayesi KurumsalJava.com

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN

AKINSOFT OfficeMessenger

Transkript:

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

Front Controller 1 tasarım şablonunda, kullanıcıdan gelen isteklerin (request) merkezi bir yerde toplanarak, işlem yapıldığını daha önce görmüştük. Intercepting Filter tasarım şablonu ile, kullanıcının isteği (request) işleme alınmadan önce filtreler kullanılarak süzgeçten geçirilir. Örneğin bir filtre ile kullanıcının işlem öncesi login yaptığını konrol edebiliriz. Filtremiz, session (HttpServletSesion) içinde login bilgilerini bulamadığı taktirde, kullanıcıyı login sayfasına yönlendirebilir. Aynı şekilde işlem tamamlandıktan sonra kullanıcıya gönderilecek cevap (response) filtreler yardımı ile modifike edilebilir. Intercepting Filter tasarım şablonunun merkezinde filtreler bulunur. Bunlar belirli özelliklere sahip normal Java sınıflarıdir. JEE dünyasında Servlet Filter 2 olarak bilinen bu sınıflar, filter chaining mekanizması ile bir kolyenin üzerinde bulunan boncuklar gibi, arka arkaya dizilerek, işleme tabi tutulabilirler. 1 http://www.kurumsaljava.com/2009/10/09/front-controller-tasarim-sablonu/ 2 Bakınız: http://java.sun.com/products/servlet/filters.html

Uml diagramında görüldüğü gibi birden fazla filtre arka arkaya dizilerek işlem yapılabilir. Sıradaki her filtre kendi görevini yerine getirdikten sonra kontrolü FilterManager yardımı ile kendinden sonraki filtreye bırakır. Eğer işlem esnasında filtrelerden birisi hatalı bir durum tespit ederse (örneğin session içinde login bilgilerinin bulunamaması) kendinden sonra gelen filtreler devreye girmeden işlemi durdurur ve filtre içinde tanımlanmış aksiyonu gerçekleştirir (örneğin login sayfasına yönlendirme). Tomcat 3 gibi application serverlerde filtreler web.xml dosyasında tanımlanır. FilterManager Tomcat içinde implemente edilen bir sınıf olduğundan, filtrelerin oluşturulmasını ve işleme alınması Tomcat tarafından otomatik olarak gerçekleşir. Üyelerin login yaptığını kontrol etmek için AuthenticationFilter isminde bir filtre örneğini inceliyelim: package org.javatasarim.pattern.interceptingfilter; import java.io.ioexception; import javax.servlet.filter; import javax.servlet.filterchain; import javax.servlet.filterconfig; import javax.servlet.servletexception; import javax.servlet.servletrequest; import javax.servlet.servletresponse; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import javax.servlet.http.httpsession; * Login yapmis üye bilgilerini session * içinde kontrol eder. Login yapmamis bir * kullaniciyi login.jsp sayfasina yönlendirir. 3 Bakınız: http://tomcat.apache.org/

* * @author Oezcan Acar * public final class AuthenticationFilter implements Filter * Bir kullanici login yaptiktan sonra, session içine * USER etiketi altinda login ismi yerlestirilir. * * Eger session içinde USER isminde bir etiket yoksa, * o zaman kullanici login yapmamis demektir. private static final String USER = "user"; * FilterManager (Tomcat) dofilter() metodunu kullanarak, * filtreyi işleme alir. public void dofilter(final ServletRequest req, final ServletResponse res, final FilterChain chain) throws IOException, ServletException HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; HttpSession session = request.getsession(); if(session.getattribute(user)!= null) * Kontrolü bir sonraki filtreye vermek için * chain.dofilter() metodu kullanılır. chain.dofilter(req, res); else response.sendredirect("login.jsp"); * Filter init() public void init(final FilterConfig arg0) throws ServletException * Filter destroy() public void destroy()

Tomcat altında kullanmak istediğimiz filtrelerin javax.servlet.filter interface sınıfını implemente etmeleri gerekmektedir. Filter interface sınıfında, kendi filtre sınıfımızın implemente etmesi gereken üç metod bulunmaktadır: init(), dofilter() ve destroy(). init() metodu ile filtre tarafından kullanılacak kaynaklar oluşturulur. init() metodunu bir sınıf konstruktörü olarak düşünebilirsiniz. Filtre görevine başlamadan önce FilterManager (Tomcat) tarafından önce init() metodu işleme alınır. Filtrenin asıl görevi dofilter() metodu bünyesinde implemente edilir. İşlem tamamlandıktan sonra chain.dofilter() ile kontrol bir sonraki filtreye verilir. Eğer sırada başka bir filtre yoksa, FilterManager gelen isteği (request) gerçek sahibine iletir (örneğin FrontController). Örneğimizde görüldüğü gibi session içinde gerekli bilgi bulunamadığı taktirde, üye login.jsp sayfasına yönlendilir. Bu noktadan itibaren sıradaki filtreler işlem görmez ve kullanıcı login yapabilmesi için login.jsp sayfasına yönlendirilir. Böylece sadece login yapmış üyelerin kullanabileceği fonksiyonların login yapmamış bir üye tarafından kullanımı engellenmiş olur. Filtre görevini yerine getirdikten sonra destroy() metodu ile yok edilir. Bunu FilterManager otomatik olarak gerçekleştirir. Filtremizin Tomcat altında çalışabilmek için aşağıdaki şekilde web.xml dosyasına kayıtlanması gerekmektedir: <?xml version="1.0" encoding="utf-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/jee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/jee/web - app_2_4.xsd"> </web-app> <filter> <filter-name>authenticationfilter</filter-name> <filter-class> org.javatasarim.pattern. interceptingfilter.authenticationfilter </filter-class> </filter> Intercepting Filter tasarım şablonu ne zaman kullanılır? Kullanıcı isteği (request) işleme alınmadan önce ve işlem tamamlandıktan sonra filtreler aracılıği ile logging, üyelik ve veri kontrolü gibi işlemler için Intercepting Filter tasarım şablonu kullanılır. İlişkili tasarım şanlonları: Front Controller tasarım şablonu da Intercepting Filter tasarım şablonu gibi verilerin merkezi bir yerde işlem görmesini kolaylaştırır.

EOF (End Of Fun) Özcan Acar