Developersland

Teknoloji ve Yazılım Blogu

  • Yazıtipi boyutunu arttır
  • Varsayılan yazıtipi boyutu
  • Yazıtipi boyutunu azaltır

Spring MVC 3.0 Eğitimi - 2 (Basit örnek bir projenin oluşturulması)

spring mvc eğitimi 3.0Bu yazımda size spring mvc yapısı kullanılarak nasıl örnek bir proje yapabileceğimizi anlatmak istiyorum. Daha önceki eğitimde Spring Mvc'ye giriş yaptık. Bu yazıyı okumadan önce giriş yazısını okumanızı tavsiye ediyorum. Bu projede Eclipse IDE geliştirme ortamı ve sunucu olarak da Apache Tomcat 7.0 kullanılmıştır. Bunların sisteminizde önceden kurulu olduğunu varsayıyorum.

Öncelikle Eclipse'de yeni bir proje oluşturmamız gerekecek. New>Dynamic Web Project seçeneğini seçmemiz gerekiyor burada daha sonra Next'e tıklayarak bir sonraki pencereye geçiyoruz.


Spring Mvc eğitimi 3.0

Burada proje ismini giriyoruz öncelikle. Target runtime kısmında Apache Tomcat 7.0 seçeneğini seçiyoruz.(Daha önce Apache Tomcat 7.0 sunucusunu sisteme tanıtmış olmanız gerekiyor). Dynamic Web Module versiyonunu 3.0 olarak seçiyoruz Configuration kısmında da Apache Tomcat için varsayılan konfigurasyonlar seçili olacaktır burayı hiç değiştirmeden next'e tıklayarak devam ediyoruz.

Spring Mvc eğitimi 3.0

Karşınıza aşağıdaki pencere çıkacak burada hiçbirşey değiştirmeden next diyerek devam ediyoruz.

Daha sonra Next'e tıklayarak bir sonraki pencereye geçiyoruz.

Karşımıza aşağıdaki pencere çıkacak burada önemli husus "Generate web.xml deployment descriptor" seçeneğini seçmeyi unutmamanız çünkü bu seçeneği seçtiğinizde proje otomatik olarak sizin için web.xml dosyası oluşturacaktır aksi takdirde elle kendiniz oluşturmak zorunda kalırsınız. web.xml dosyaları web projelerinde çok önemli göreve sahiptir bundan ilerde ayrıntılı olarak bahsedeceğim. Finish diyerek projemizi oluşturmuş oluyoruz.

Spring mvc eğitimi 3.0

Eclipse IDE bizim için aşağıda gördüğünüz yapıyı oluşturacaktır. Bu aşamadan sonra önemli dosyaları tek tek kendimiz oluşturarak spring mvc 3.0 yapısını anlamaya çalışacağız. Öncelikle Spring Framework kullanacağımız için spring framework çatısı altında bulunan bütün gerekli jar'ları WebContent/WEB-INF/lib/ altına atmamız gerekiyor. Bu linkten gerekli jar'ları indirebilirsiniz. Size linkini verdiğim dosyada gerekli jar'ların yanısıra işinize yarayacak bir çok farklı jar da bulunuyor o yüzden boyutu biraz daha büyük.

Spring mvc eğitimi 3.0

Şimdi öncelikle web.xml dosyamızı düzenlememiz gerekiyor. Aşağıda web.xml dosyamızın içeriği gösterilmiştir. Burada spring isminde bir servlet tanımladık. Bu servlet org.springframework.web.servlet.DispatcherServlet dir. Bu servlet mvc yapısında çok önemlidir bütün yönlendirmeler bu servlet tarafından yapılır. Daha sonra bu servlet için <servlet-mapping> tagıyla .html uzantılı istekler için devreye girmesini söyledik. <welcome-list> tagıyla da uygulamamız açıldığında ilk önce hangi sayfadan başlayacağını tanıttık.


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
 id="WebApp_ID" version="3.0">
  <display-name>springmvcegitimi</display-name>

  <servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
 
  <servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>*.html</url-pattern>
  </servlet-mapping>
   
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

</web-app>


web.xml dosyamızın içeriğini oluşturduktan sonra spring-servlet.xml isimlibir xml dosyası oluşturmamız gerekiyor. Bunun sebebi DispatcherServlet yüklendiği zaman ilk olarak [servletin adı]-servlet.xml isimli dosyaya göz atacaktır. Bizim DispatcherServlet'imizin adı spring olduğundan oluşturduğumuz xml dosyasının ismi spring-servlet.xml olacaktır. Bu dosyamızın içeriği aşağıda gösterilmiştir. Java Resources altında bir controllers isimli bir package oluşturarak içerisine controller sınıflarımızı toplayacağız. Burada <context:component-scan base-package="controllers" /> diyerek controllerlerimizin controllers isimli paketin altında olduğunu tanıtmış oluyoruz. Aşağıda ayrıca ViewResolver nesnemize sitemizde kullanıcıya sunmak üzere hazırladığımız .jsp sayfalarının konumunu tanıtıyoruz. Bir sayfaya istek geldiği zaman ViewResolver'in nereye bakması gerektiğini tanıtıyoruz. .jsp dosyalarımız WEB-INF/views altında bulunan .jasp uzantılı sayalardır.


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd" >

    <context:component-scan base-package="controllers" />
   
    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>


Aşağıda HelloController isimli controllers paketi altında yer alan sınıfımızın kodları gösterilmiştir. burada öncelikle @Controller isimli annotation ile bu sınıfın bir controller olduğunu tanıtıyoruz. bu sınıf içerisinde geriye hello() isimli metodumuz vasıtasıyla bir ModelAndView nesnesi göndereceğiz açacağımız sayfaya. Dikkat ederseniz @RequestMapping isimli bir annotation kullandık bu sınıfımızın üzerinde içerisinde de value="hello.html" dedik. Bunun amacı hello.html isimli sayfa için sunucuya istek geldiğinde DispatcherServlet'in controllers paketi altında bulunan tüm controller sınıfları içerisinde "hello.html" RequestMapping değerine sahip metodu bulmasını sağlamaktır. Bu metod vasıtasıyla bir string mesajını hello.jsp isimli sayfaya göndererek bu mesajı o sayfada görüntülemeye çalışacağız.


package controllers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class HelloController {
   
    @RequestMapping(value="hello.html")
    public ModelAndView hello()
    {
        String str="Merhaba Spring MVC";
        return new ModelAndView("hello","mesaj",str);
    }
}


Aşağıda index.jsp isimli sayfamızın içeriği gösterilmiştir. Bu sayfa WebContent klasörünün içerisinde yer almaktadır. Bu sayfada hello.html sayfasına bir link vardır o linke tıkladığımızda DispatcherServlet öncelikle uygun controller'i arayacak bizim yukarda tanımladığımız controller bulunacak ve o controller vasıtasıyla sayfamıza yazdırılmak üzere bir mesaj gönderilecek.


<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
index.jsp sayfasina Hosgeldiniz!
<a href="/hello.html">hello.html sayfasina link</a>
</body>
</html>


Aşağıda hello.jsp sayfasının içeriği görülmektedir.${mesaj} isimli değişken controller tarafından ModelAndView nesnesi vasıtasıyla aktarılacak mesaj isimli değişkendir.


<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
hello.jsp sayfasi
${mesaj}
</body>
</html>


Bütün gerekli kodları yazdıktan sonra uygulamamızı Run As>Run on Server diyerek Apache Tomcat sunucumuzda çalıştırıyoruz. Karşımıza aşağdaki sayfa çıkacaktır. Linke tıkladığımızda ise hello.html uzantılı sayfa açılacak.

Spring mvc

Aşağıda hello.html sayfası görülüyor bu sayfada controller vasıtasıyla gönderdiğimiz "Merhaba Spring MVC" mesajını görmekteyiz.

Spring mvc

Böylece Spring Mvc 3.0 için örneğimizi tamamlamış olduk. Merak ettiğiniz herşeyi aşağıda yorumlardan sorabilirsiniz elimden geldiğince yardım etmeye çalışırım.

KAYNAK KODU indirerek örneğimizi kendi bilgisayarınızda deneyebilirsiniz. İyi çalışmalar.


 

Yorumlar  

 
+1 #1 dervis 18-04-2012 19:45
Merhaba oncelikle sunu belirtmeliyim bugune kadar gordugum en guzel turkce anlatım, elinize emeginize saglık. Analamdıgım bir sey var burda n tane sayfam olursa n tane controller'ım mı olacak, daha farklı yontemler neler olabilir. Ilginiz icin tesekkurler
Alıntı
 
 
+2 #2 Administrator 18-04-2012 23:19
Makalenin faydalı olmasına sevindim.
Static sayfalar için controller tanımlamanız gerekmez. Onlara direk erişebilmeniz mümkün. Controllerleri genellikle veritabanı bağlantısı veya javayla birşeyler yapmanız gerektiğinde kullanmanız gerekmektedir.
Alıntı
 
 
+3 #3 Ethem 01-05-2012 18:18
Gerçekten çok faydalı bir makale olmuş, devam edecek misiniz? Ek olarak önerebilecğeini z kaynak var mıdır ?
Alıntı
 
 
0 #4 Administrator 01-05-2012 18:22
Bu aralar işlerin yoğunluğundan bir türlü yeni öğrendiklerimi yazıya dökme fırsatı bulmadım. İnşallah yakın zamanda devamı gelecek.
Şu an Spring in Action 3.0 kitabından çalışıyorum. Çok faydalı bir kitap herkese öneriyorum.
Alıntı
 
 
-1 #5 Ethem 01-05-2012 18:43
Acaba satın alabileceğimiz bir link var mıdır? Yazarı felan kimdir, paylaşabilir misiniz?
Alıntı
 
 
+1 #6 Administrator 01-05-2012 18:46
Spring in Action (covers Spring 3.0)
Craig Walls
MANNING yayınları

http://www.manning.com/walls4/
Alıntı
 
 
-2 #7 Ethem 01-05-2012 18:50
Teşekkür ederim, umarım Hibernate teknolojisine de değiniyordur..
Alıntı
 
 
0 #8 Administrator 01-05-2012 18:51
Hibernate teknolojisine çok ayrıntılı olmayacak şekilde değinilyor kitapta kolay gelsin.
Alıntı
 
 
-3 #9 aa 24-06-2012 16:01
Guzel yazmissin kardes eline saglik.takdir ettim bravo.
Alıntı
 
 
+2 #10 cc 04-02-2013 14:44
Başarılı bir anlatım olmuş, tebrik ederim.
Alıntı
 
 
0 #11 Developper 16-08-2016 16:47
Başarılı bir anlatım. Anlatımdaki dikkatimi çeken en büyük özellik maven project yerine dynamic web project oluşturmaktı. maven karışık ve kompleks proje büyüyünce ciddi sorunlarla karşılaşmak içten bile değil. Başarılar iyi çalışmalar.
Alıntı
 

Yorum ekle


Güvenlik kodu
Yenile