Bu materyal, "Kurumsal Geliştirmeye Giriş" serisinin sonuç bölümüdür. Önceki makaleler:
Örnek olarak Spring MVC kullanarak MVC'nin en basit uygulamasına bakalım. Bunun için Spring Boot kullanarak küçük bir Hello World uygulaması yazacağız. Size adım adım talimatlar vereceğim, böylece her şeyi kendiniz tekrarlayabilirsiniz. İlk önce küçük bir uygulama yazacağız ve ardından onu analiz edeceğiz.
Adım 1. IntelliJ IDEA'da Spring Boot uygulaması oluşturma.
Yeni bir proje oluşturmak için Dosya -> Yeni -> Proje…'yi kullanın. Açılan pencerede sol taraftaki menüde Spring Initializr'ı seçin ve Project SDK'yı seçin. Başlatma Hizmeti URL'si seçeneği için varsayılanı bırakın.
"İleri" düğmesini tıklayın. Bir sonraki pencerede, proje ayarlarını seçmemiz gerekiyor. Bir Maven projemiz olacak. Tür olarak Maven Projesi'ni seçin. Grup ve Yapı alanlarını doldurun İleri'ye tıklayın.
Bir sonraki pencerede kullanacağımız Spring Framework bileşenlerini seçmemiz gerekiyor. Bize iki tanesi yeter:
- Spring Web, web uygulamaları oluşturmamızı sağlayan bir bileşendir. Bu bileşen, Spring MVC'yi içerir.
- Thymeleaf şablon motorumuzdur. Java'dan HTML sayfalarına veri göndermemizi sağlayan bir şey.
Bir sonraki pencerede, dosya sistemindeki projenin adını ve konumunu seçin:
"Bitir" düğmesine tıklayın. Proje oluşturulur. Sonunda aşağıdaki proje yapısını elde ediyoruz:
Burada 2 dosyayla ilgileniyoruz: pom.xml (dağıtım tanımlayıcısı). Bu şey, farklı çerçevelerdeki kitaplıkları hızlı ve kolay bir şekilde projemize aktarmanıza olanak tanır. Ayrıca, uygulamamızın nasıl oluşturulacağını yapılandırdığımız yer burasıdır. Uygulamamız Maven kullanılarak oluşturulmuştur ve pom.xml bu yapı sistemi için yapılandırma dosyasıdır. Java sınıfı MvcDemoApplication'dır. Bu, uygulamamızın ana sınıfıdır. Spring Boot projemizi buradan başlatacağız. Başlamak için, bu sınıfın ana yöntemini çalıştırmanız yeterlidir. İşte bu sınıfın kodu ve pom.xml dosyası: MvcDemoApplication:
@SpringBootApplication
public class MvcDemoApplication {
public static void main(String[] args) {
SpringApplication.run(MvcDemoApplication.class, args);
}
}
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.codegym/groupId>
<artifactId>mvc_demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mvc_demo</name>
<description>Spring MVC Demo</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Adım 2. Bir web sayfası oluşturma
Uygulamamız son derece basit olacaktır. Karşılama sayfasına (greeting.html) bir bağlantı içeren bir ana sayfamız (index.html) olacak. Selamlama sayfasında bir selamlama görüntülüyoruz. Karşılamada kullanılacak adı tebrik.html sayfasına iletmek için URL parametrelerini kullanacağız. Uygulamamızın ana sayfası olan index.html'yi oluşturalım:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Main page</title>
</head>
<body>
<p>Get your greeting <a href="/greeting">here</a></p>
</body>
</html>
Şimdi tebrik.html sayfasını oluşturacağız:
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Getting Started: Serving Web Content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'Hello, ' + ${name} + '!'" />
</body>
</html>
Sayfamızda
<p th:text="'Hello, ' + ${name} + '!'" />
HTML için normal olmayan bir etiket var.
th
Etiketin özniteliği, Thymeleaf
p
şablon motoru tarafından kullanılan bir mekanizmadır. Etiketin değeri "Hello" + Java kodunda ayarlayacağımız değişkenin
p
değeri olacaktır .
name
3. Adım. Denetleyici oluşturma
mvc_demo paketinin içinde, kontrolcümüzü HelloWorldController oluşturacağımız bir kontrol paketi oluşturacağız:
@Controller
public class HelloWorldController {
@RequestMapping(value = "/greeting")
public String helloWorldController(@RequestParam(name = "name", required = false, defaultValue = "World") String name, Model model) {
model.addAttribute("name", name);
return "greeting";
}
}
Bir yandan çok az kod var ama öte yandan çok şey oluyor. Analizimize başlayalım. @Controller ek açıklaması, bu sınıfın bir denetleyici olduğunu gösterir. İlkbaharda, denetleyiciler belirli URL'lere yönelik HTTP isteklerini işler. Sınıfımız, @RequestMapping(value = "/greeting") notuyla işaretlenmiş bir helloWorldController yöntemine sahiptir. Bu ek açıklama, bu yöntemin / selamlama URL'sine yönlendirilen HTTP GET isteklerini işlediğini gösterir. Başka bir deyişle, birisi /selamlama'ya giderse bu yöntem çağrılır. Bu yöntem bir String döndürür. Spring MVC'ye göre, denetleyici yöntemi görünümün adını döndürmelidir. Ardından Spring, HTTP isteğine yanıt olarak döndüreceği aynı ada sahip bir HTML dosyası arayacak. Gördüğünüz gibi, Metodumuz 2 argüman alıyor. Bunlara bir göz atalım: Parametre 1: @RequestParam(name = "name", gerekli = false, defaultValue = "World") String name. @RequestParam notu, String name parametresinin bir URL parametresi olduğunu belirtir. Ek açıklama, bu URL parametresinin isteğe bağlı olduğunu gösteriyorsa (gerekli = yanlış), yoksa, Dize adı parametresinin değeri "World" (defaultValue = "World") olacaktır. Varsa, URL parametresi "ad" (ad = "ad") olacaktır. Burada anlamadığın çok şey olabilir. Bazı örnekler verelim. Aşağıdaki tablo, /greeting'e erişim için çeşitli seçeneklerle (URL parametreleriyle ve URL parametreleri olmadan) Dize adı parametresinin değerinin ne olacağını gösterir.
Örnek URL |
Dize adının değeri |
/selamlama |
Dünya |
/tebrik?name=Amigo |
arkadaş |
/tebrik?name=Zor |
Zor |
Parametre 2: İkinci parametre bir Model modelidir. Bu parametre bir modeldir. Bu model, çeşitli dahili özelliklerden oluşur. Her özelliğin bir adı ve değeri vardır. Anahtar-değer çiftleri gibi bir şey. Java kodundan HTML sayfalarına veri göndermek için bu parametreyi kullanabiliriz. Veya MVC terminolojisini kullanarak modelden görünüme veri gönderin. Sadece son satırı incelemek için kalır. Java'dan HTML'ye veya modelden görünüme bu şekilde veri göndeririz. Yöntem aşağıdaki satırı içerir:
model.addAttribute("name", name);
Burada name adında yeni bir nitelik oluşturuyoruz ve ona name parametresinin değerini atadık. Hatırlarsanız geçenlerde
<p th:text = "'Hello,' + ${name} + '!'" />
p etiketinin değerinin "Hello" + Java kodunda ayarlayacağımız name değişkeninin değeri olduğunu söylemiştik. Bu değeri satırı kullanarak ayarladık
model.addAttribute("name", name);
Adım 5. Çalıştır
Başlamak için, MvcDemoApplication sınıfının ana yöntemini çalıştırmamız gerekiyor:
Günlüklerde, web uygulamamızın 8080 numaralı bağlantı noktasında başladığını göreceğiz: Bu, bir tarayıcıda,
http:// adresindeki sayfaya gidebileceğimiz anlamına gelir.
localhost:8080 :
Burada index.html sayfamız var. Karşılama sayfasına giden bağlantıyı takip edelim:
Bu geçişte denetleyicimiz çağrıldı. URL üzerinden herhangi bir parametre geçirmedik. Sonuç olarak, ad özniteliği, açıklamada belirtilen varsayılan değeri ("Dünya") alır. URL üzerinden parametre geçirmeyi deneyelim:
Her şey amaçlandığı gibi çalışıyor. Şimdi name değişkeninin yolunu izlemeye çalışın:
- Kullanıcı, URL'de "name=Amigo" ifadesini geçti ->
- Denetleyici eylemimizi işledi, ad değişkenini aldı ve alınan değere eşit ad adlı bir model niteliği ayarladı ->
- Bu veriler, modelden görüntülenmeye geldi, tebrik.html sayfasında sona erdi ve kullanıcıya gösterildi.
Şimdilik bu kadar!
Bugün MVC'nin (Model - Görünüm - Denetleyici) oldukça geniş ve ilginç konusuyla tanıştık. Kurumsal geliştirmeye başlamadan önce bilmeniz gerekenleri size tanıtmak için tasarlanan serinin sonuna geldik.
Yorumlarda bize hangi konularla ilgilendiğinizi söyleyin — Biz onlara değinelim! |
GO TO FULL VERSION