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;
- Spring 2.5
- JDK 1.6
- Netbeans 7.2
- 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").
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