6 Ağustos 2013 Salı

Spring MVC ControllerClassNameHandlerMapping

Merhabalar arkadaşlar,

Bu yazımda Spring MVC Handler Mapping'lerine devam ediyoruz. Spring MVC de gelen request'leri handle edip doğru Controller'a yönlendirmek için bi kaç yöntem mevcut. Bunlardan biride ControllerClassNameHandlerMapping 'dir.
Bu handler mapping yöntemi gelen request'ten class name alınır ve eğer varsa sonunda Controller son ekini(sufix) siler , küçük harflere çevirir ve başında '/' ile döndürür yeni isdimlendirdiği değeri.

Şimdi bir örnekle açıklamaya çalışalım.

Bir önceki yazımda Handler mapping yöntemlerinden BeanNameUrlHandlerMapping Spring'in kullandığı default mapping yöntemi olduğunu söylemiştik. Yani configurasyon dosyasında tanımlanmış herhangi bir mapping bean tanımı yer almıyorsa DispatchServlet default bu mapping bean'i create eder.


 
  
 
  
 


Eğer configurasyon dosyasında ControllerClassNameHandlerMapping bean tanımı eklenirse Spring handler mapping'leri artık bu yöntemle yapacaktır.

 
  
 
  
 
  
 


Artık Spring gelen request'i ControllerClassNameHandlerMapping kurallarını işleterek map edecektir.
WelcomeController -> /welcome*
HelloGuestController -> /helloguest*
  1. /welcome.htm –> WelcomeController.
  2. /welcomeHome.htm –> WelcomeController.
  3. /helloguest.htm –> HelloGuestController.
  4. /helloguest12345.htm –> HelloGuestController.
  5. /helloGuest.htm, bu requesti map edemez. /helloguest*, Gueat'in "g" harfi eşleşmeyecektir.

Case Sensitive

Bean'in caseSensetive property değeri true yapılırsa controller isimleri küçük büyük harf duyarlı döndürülecektr. Yani;


 
  
     
  
 
  
 
  
 


WelcomeController -> /welcome*
HelloGuestController -> /helloGuest*
  1. /helloGuest.htm –> HelloGuestController.
  2. /helloguest.htm, bu requesti map edemez. /helloGuest*, Gueat'in "G" harfi eşleşmeyecektir.

Path Prefix

Bean'in pathPrefix property'sini set edersek ControllerClassNameHandlerMapping bean'i bu classPath'i class isminin başına ekleyerek dönecektir.


 
  
  
  
  
 
  
 
  
 


WelcomeController -> /customer/welcome*
HelloGuestController -> /customer/helloGuest* 
  1. /customer/welcome.htm –> WelcomeController.
  2. /customer/helloGuest.htm –> HelloGuestController.
  3. /welcome.htm, hata.
  4. /helloGuest.htm, hata.
Evet bu handler mapping te bu kadar :).  Bu örnekleride MkYong adresinden hem kendim uygulayarak deniyorum hem size aktarıyorum. Umarım faydalı olur arkadaşlar.

Hiç yorum yok :

Yorum Gönder