Front Controller Design Pattern (Tasarım Örüntüsü)

Metin Alnıaçık
2 min readOct 1, 2018

--

Front Controller tasarım örüntüsünün amacı, istekleri merkezi bir yerde karşılayıp ilgili kısıma yönlendirmektedir.

İlgili tasarım örüntüsü, bilinen bazı framework’lerde kullanılmaktadır. Örneğin; Spring Framework’te Dispatcher Servlet olarak adlandırılır. Bir diğer örnek ise; Java Server Faces (JSF) da ise Faces Servlet olarak adlandırılır.

Örüntünün çalışma şekli aşağıdaki şemada verilmiştir;

İlk olarak Front Controller oluşturarak başlayalım;

Öncelikle, bir web projesi (dynamic web project) oluşturuyoruz. Ekrandan tetikleyebilmek için bir jsp sayfası oluşturuyoruz. Sayfayı index.jsp olarak kaydediyoruz. Bu sayfa bizim ana sayfamız olacak.

Ekranda iki tane adres görüntülenmektedir. Sonlarındaki (.do) ise yaygın bir kullanım şeklidir. Biz adresleri (*.do) şeklinde olanları yakalamak için kullanacağız.

Bir tane servlet oluşturuyoruz. Bu servlet, adresin sonunda (do) varsa onları yakayacaktır. Sadece doMethod bizim için yeterli olduğundan geri kalanları silebilirsiniz.

10. satır, ilgili servlet’in do uzantılı olan tüm adresleri yakalayacağını gösterir.
16. satırda, request.getRequestURI() metodu ile hangi adrese erişmeye çalışıldığını öğrenebiliriz. Örneğin; /personDetails.do gibi.

Daha sonra CommandHelper adında bir sınıf oluşturuyoruz.

Oluşturmuş olduğumuz sınıf, gelen URI bilgisine göre hangi command sınıfının oluşturulacağını belirler. Örneğin; /personDetails.do URI bilgisi gelirse PersonCommand sınıfı oluşturulacaktır.

Aslında bu kısım da kendi içinde bir tasarım örüntüsüdür. Command design pattern.

Command sınıflarında ilgili POJO nesnesini dolduruyoruz ve atttibute olarak request’in içine atıyoruz. Return kısmına ise yönlendirilecek sayfa bilgisini ekliyoruz.

Sayfa bilgileri geri döndürüldükten sonra Dispatcher sınıfı ile oluşturduğumuz veriyi hangi sayfada görüntülemek istiyorsak bu bilgiyi ekleriz.

mapViewToJspPage metodunu eklemek zorunda değiliz. İstenirse geri döndürülen değer displayPersonDetail yerine person olur. Hatta direkt olarak person.jsp geriye döndürülebilir.

Son olarak jsp sayfalarını ekliyoruz.

Test yapmak için sunucuyu çalıştırın. Ekrandaki bağlantı adreslerine tıklayın.

Örneğin tamamına github adresimden ulaşabilirsiniz.

İyi günler,
Bol kodlamalar :)

--

--