2 Ağustos 2013 Cuma

Spring MVC Annotation Örneği

Merhaba arkadaşlar,

Bir önceki yazımda sizlerle Spring MVC yapısından bahsettim ve genel olarak Controller , View ve Model nedir küçük bir örnek üzerinden anlatmaya çalıştım. Bu makaleyide yine onun üzerine bina edeceğiz ancak burada .xml Configuration dosyalarında Controller mappinglerini yapmak yerine Spring Annotasyonlarını kullanarak yapacağız. Bir önceki örneği incelemeniz faydalı olabilir. Buradan ulaşabilirsiniz.

Örneğimizde Kullandığımız Teknolojiler;

  1. Spring 2.5
  2. JDK 1.6
  3. Netbeans 7.2
  4. Apache Tomcat 7.0

1.Spring Controller & Handler Mapping

Burada .xml configurasyonlarından farklı olarak @Controller ve @RequestMapping annotasyonlarını kullanarak Controller sınıfımızı yazabiliriz.
  • Controller –  Artık uzun uzun AbstractController sınıfından extend etmemize gerek yok. @Controller annotasyonunu eklememiz yeterli olacaktır.
  • Handler Mapping – Burada handler tanımlarını BeanNameUrlHandlerMapping, ControllerClassNameHandlerMapping veya SimpleUrlHandlerMapping gibi mapping tanımları yapmak gerekmez, bunların hepsinin yerine @RequestMapping annotasyonu yeterli olacaktır.

HelloWorldController.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.mvc.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
/**
 *
 * @author ahmet.boz
 */
  
@Controller
@RequestMapping("/welcome")
public class HelloWorldController{
 
 @RequestMapping(method = RequestMethod.GET)
 public ModelAndView helloWorld(){
 
  ModelAndView model = new ModelAndView("HelloWorld");
  model.addObject("msg", "hello world");
 
  return model;
 }
}

  • ModelAndView(“HelloWorld”) –  "HelloWorld" viewResolver'a parametre geçilir ve sonuç olarak hangi ModelAndView nesnesinin döneceğini belirler. (adım 4 te açıklanan viewResolver) 
  • model.addObject(“msg”, “hello world”) – "hello world" stringini dönen model nesnesinin içerisine parametre olarak koyar, daha sonra view içerisinde bu parametreye ${msg} ile erişebiliriz.

2. View (JSP Page )


Şimdide Controller'dan dönen ModelView nesnesinin kullandığı view'i oluşturalım ve Controller içerisinden ModelAndView nesnemize parametre olarak geçilen "msg" değerini yazdıralım.

HelloWorld.jsp

<%--
    Document   : HelloWorld
    Created on : 02.Ağu.2013, 01:43:31
    Author     : ahmet.boz
--%>
 
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 
 
  

Spring MVC Hello World Example with Annotation

${msg}


3. Spring Configuration


web.xml içerisinde Servlete mappingleri vardır. Yani bizim request'lerimizi handle eden dispatcher olarak adlandırılmış DispatcherServlet servleti .htm olarak biten bütün requestlerimizi handler edecektir.


    
        contextConfigLocation
        /WEB-INF/applicationContext.xml
    
    
        org.springframework.web.context.ContextLoaderListener
    
    
        dispatcher
        org.springframework.web.servlet.DispatcherServlet
        2
    
    
        dispatcher
        *.htm
    
    
        
            30
        
    
    
        redirect.jsp
    


4. Spring Bean Configuration


dispatcher-servlet.xml


 
    
 
    
    
        
            
                indexController
            
        
    
     
    

  • Controller tanımımda kullandığımız annotasyonların aktif olabilmesi için <context:component-scan> element'i eklenmeli. 
  • viewResolver – Controllerların döndğü ModelAndView nesnelerinin nasıl görüntüleneceği tanımının ele alınmasıdır. Bizim örneğimizde "HelloWorldController" controller'ının döneceği "HelloWorld" isimli ModelAndView nesnemiz viewResolver tarafından "prefix + ModelAndView name + suffix" mekanizmasıyla çözümlenerek ilgili dizindeki jsp dosyamız görüntülenecektir ("/WEB-INF/jsp/HelloWorld.jsp").
Evet artık uygulamamızı çalıştırabiliriz. Uygulamamızı çalıştırıp URL kısmına http://localhost:8080/HelloWorld/welcome.htm yazarsanız HelloWorld.jsp sayfamızın içeriğinin görüntülendiğini görürüz.

Tabi uygulamamız ilk ayağa kalktığında index.jsp sayfa içeriği görüntülenecektir.Eğer ilk olarak bizim hazırladığımız HelloWorld.jsp sayfa içeriğine gitmesini istiyorsanız redirector.jsp içerisinde <% response.sendRedirect("welcome.htm"); %> değişikliğini yapmalısınız.

Hiç yorum yok :

Yorum Gönder