Bu yazımda Spring MVC kullanarak temel basit bir uygulama üzerinden MVC teknolojisinden bahsedeceğim.
Spring MVC Web Uygulamaları MVC teknolojisinin 3 temel bileşenini(Model,View,Controller) kullanır.
- Models : Bunlar bizim model nesnelerimizdir ve genel olarak Service Layer olarak adlandırılan servis katmanlarına ve Persistent Layer olan Veritabanı Katmanlarımızdaki objelerimize karşılık gelmektedir.
- Views : Bu bileşen bizim kullanıcı ara yüzlerini geliştirdiğimiz genelde Java Standard Tag Library (JSTL) kullanılarak geliştirilen JSP sayfalarımızdır.
- Controllers : Bu katmanda kullanıcı isteklerini karşılayan ve Servisce katmanımızla etkileşim içerisinde olan MVC bileşenidir.
Dispatcher Servlet front-controller (design pattern) tasarım deseni yapısında bir dispatcher'dır. Gelen bütün requestler buradan akar ve burada Handler edilerek doğru controller'a yönlendirilirler.
Şimdi küçük bir örnek yapacağız ve genel olarak bir Spring MVC Web Uygulamasının yapısını göreceğiz.
Örneğimizde Kullandığımız Teknolojiler;
- Spring 2.5
- JDK 1.6
- Netbeans 7.2
- Apache Tomcat 7.0
2. Daha sonra uygulamamızın koşacağı sunucumuzu seçiyoruz ve devam ediyoruz.
3. Bundan sonraki adımda projemi geliştireceğm framework'ü seçiyorum. Biz Spring MVC de geliştireceğimiz için seçip Finish diyelim.
Sonuç olarak yandaki dizin yapısına sahip bir Spring MVC web projemiz olacaktır. Artık geliştirmemizi yapabiliriz.
1.Spring Controller
Controller sınıfları AbstractController sınıfından extend eder ve handleRequestInternal() metodunu @Override ederek bize ModelAndView nesneleri döndürürler.
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 */ public class HelloWorldController extends AbstractController{ @Override protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { 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
${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
Spring Controller ve viewResolver tanımlarının yapıldığı configurasyon dosyamızdır.
dispatcher-servlet.xml
indexController wellcome
- Controller – "welcome.htm" olarak adlandırılmış bir bean tanımıdır aslında ve HelloWorldController.class ile map edilir. Bunun anlamı "/welcome.htm" içeren bir request gelmesi durumunda bu requesti HelloWorldController controller'ı handler edecek demektir.
- 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("wellcome.htm"); %> değişikliğini yapmalısınız.
Çok güzel bir anlatım olmuş. emeğinize sağlık
YanıtlaSilgüzel anlatım olmuş
YanıtlaSilAllah razi olsun
YanıtlaSil