MVC etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
MVC etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

13 Nisan 2016 Çarşamba

Spring MVC ve Hata işleme (Exception Handling)


Projemizde run time esnasında çıkabilecek hataları daha açıklayıcı ve görsel anlamda da anlamsız kod karmaşasını ortadan kaldırmak için oluşabilecek hatalar için özel sayfalara yönlendirmeler yapalım dedik.
İnternette yine her zamanki gibi türkçe kaynak kıtlığı yaşıyoruz... derken https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc adresinden detaylı bilgileri alıyoruz...
İlgili kaynakta hataları yönetmenin farklı yollarından bahsediyor, kendi özel hata class'larıını da oluşturup, bağlı bulunduğu yerlerde o hatayı döndürebilirsiniz. Ben ise, daha global, tüm projeyi kapsayan bir hata yönetim şekliyle ilgileniyorum. 
Yani;
Size gerekli olan malzemeler,
Bir adet class -ki @ControllerAdvice annotation'ına sahip olacak
içerisindeki metodlar ise @ExceptionHandler
bir adet hatanın işlenip daha düzgün görüntülenmesi için yönlendirileceği error.jsp sayfası 
tabi mi context.xml tarafında da <mvc:annotation-driven/>'ın tanımlı olması
Benim Controller tarafında tek kullandığım kod;
@ControllerAdvice
class GlobalExceptionHandler {
  
    @ExceptionHandler(value = Exception.class)
    public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {

        if (AnnotationUtils.findAnnotation(e.getClass(), ResponseStatus.class) != null)
            throw e;

        // Otherwise setup and send the user to a default error-view.
        ModelAndView mav = new ModelAndView();
        mav.addObject("exception", e);
        mav.addObject("url", req.getRequestURL());
        mav.setViewName("error");
        return mav;
    }
}
@ExceptionHandler(value = Exception.class) içerisindeki değeri "SQLException.class", value=HttpStatus.NOT_FOUND şeklinde girerek hata türlerine göre yeni metodlar da oluşturabilirsiniz.

11 Şubat 2016 Perşembe

Spring Framework ve Spring Security'i 4'e yükseltmek



Geliştirmekte olduğumuz spring mvc projesinin versiyonunu 3.x'ten 4.x'e yükseltmek istedik fakat bu geçişle birlikte birkaç yerde de değişiklik yapmak zorunda kaldık.

What's new adresinden yapılan yenilikleri okuyabilirsiniz.

Türkçe kaynak da bulunması adına, yaptığımız değişiklikleri buraya not edeceğim ki belki birilerinin işine yarar.

Role'ler kısıtlamasında yapılan değişiklikler bizi çok etkilemedi çünkü henüz o kısıtlamaları kullanmıyorduk.

pom.xml tarafında değiştirilmesi gerekenler;

Eğer versiyonları değişkenden alacak şekilde tanımlamışsanız işiniz kolay yoksa her  bağımlılıklar (dependency) versiyonu eklemeniz gerekecek

örnek olarak;

<spring.version>4.2.4.RELEASE</spring.version>
<spring-security.version>4.0.3.RELEASE</spring-security.version>

22 Ekim 2015 Perşembe

Spring MVC ve çoklu dil desteği (i18n)

Merhabalar,

Yeni geliştirmekte olduğumuz projede çoklu dil desteğini uygulamak istedik. İnternetten araştırdığımızda (çok fazla türkçe kaynak bulunmadığı için) sorunumuza çözüm olmayan  bir çok çözümlerle karşılaştık.

İnternette diğer kaynaklarda anlatıldığı gibi i18n'i adım adım uyguladık ama ~

baz aldığımız kaynaklar;

http://www.mkyong.com/spring-mvc/spring-mvc-internationalization-example/

http://www.journaldev.com/2610/spring-mvc-internationalization-i18n-and-localization-l10n-example

application-context.xml sayfamızdan default dili "en" ya da "tr" verdiğimizde düzgünce çalışıyor ama maalesef "Türkçe" ve "English" linklerine bastığımızda mesajlar ilgili dile çevrilmiyordu.

        <!-- changes are then saved in cookies for future request -->
<bean id="localeResolver"
   class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
   <property name="defaultLocale" value="en"/>
</bean>

Araştırmaya devam ettikçe application-context.xml'e mvc'yi dahil etmem gerektiğini okudum.

<mvc:annotation-driven/>

ve