Materiał ten stanowi ostatnią część serii „Wprowadzenie do rozwoju przedsiębiorstwa”. Poprzednie artykuły:
Przyjrzyjmy się najprostszemu przykładowi implementacji MVC na przykładzie Spring-MVC. Aby to zrobić, napiszmy małą aplikację Hello World w trybie spring-boot. Abyś mógł wszystko powtórzyć sam, podam Ci instrukcje krok po kroku. Najpierw napiszemy małą aplikację, a następnie ją przeanalizujemy.
Krok 1: Utwórz aplikację do rozruchu wiosennego w IntelliJ IDEA
Używając Plik -> Nowy -> Projekt... utwórz nowy projekt. W oknie, które zostanie otwarte, w menu po lewej stronie wybierz Spring Inicjalizacja, wybierz Project SDK i pozostaw opcję URL usługi Inicjalizacja jako domyślną.
Kliknij przycisk Dalej. W kolejnym oknie musimy wybrać parametry projektu. Będziemy mieli projekt Maven. Wybierz Typ - Projekt Maven, wypełnij Grupy i Artefakt
i kliknij Dalej. W kolejnym oknie musimy wybrać komponenty Spring Framework, z których będziemy korzystać. Potrzebujemy tylko dwóch:
- Spring Web to komponent, który pozwoli nam tworzyć aplikacje internetowe. Ten komponent zawiera Spring MVC.
- Thymeleaf - Tak zwany silnik szablonów. Rzecz, która pozwoli nam przenieść dane z Javy na strony HTML
W kolejnym oknie wybierz nazwę i lokalizację projektu w systemie plików:
Kliknij przycisk Zakończ. Projekt został stworzony. Mamy następującą strukturę projektu:
Tutaj interesują nas 2 pliki: pom.xml - deskryptor wdrożenia. Rzecz, która pozwala szybko i łatwo zaimportować do naszego projektu biblioteki z różnych frameworków, a także rzecz, w której konfigurujemy montaż naszej aplikacji. Nasza aplikacja jest zbudowana przy użyciu Mavena, pom.xml jest plikiem konfiguracyjnym tego systemu kompilacji. Klasa Java - MvcDemoApplication. Jest to główna klasa naszej aplikacji, z której uruchomimy nasz projekt spring-boot. Aby rozpocząć, po prostu uruchom główną metodę w tej klasie. Oto kod tej klasy, a także plik pom.xml: 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.javarush</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>
Krok 2. Utwórz strony internetowe
Nasza aplikacja będzie niezwykle prosta. Będziemy mieli stronę główną - indeks.html, wewnątrz której będzie znajdował się link do strony powitalnej - pozdrowienia.html. Na stronie powitalnej wyświetlimy powitanie. Zaimplementujmy możliwość wysyłania nazwy powitania do strony pozdrowienia.html poprzez parametry url. Stwórzmy stronę główną naszej aplikacji - indeks.html:
<!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>
Stwórzmy teraz stronę z pozdrowieniami.html:
<!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>
Tutaj, na nietypowej stronie HTML, możesz zobaczyć tag:
<p th:text="'Hello, ' + ${name} + '!'" />
Atrybut
th
tagu
p
jest narzędziem silnika szablonów Thymeleaf. Dzięki temu wartością tagu
p
będzie tekst „Hello” + wartość zmiennej
name
, którą ustawimy z kodu Java.
Krok 3: Utwórz kontroler
Wewnątrz pakietu mvc_demo utworzymy pakiet kontrolera, w którym utworzymy nasz kontroler HelloWorldController:
@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";
}
}
Z jednej strony kodu jest bardzo mało, ale z drugiej strony dużo się dzieje. Zacznijmy analizę. Adnotacja @Controller wskazuje, że ta klasa jest kontrolerem. Kontrolery w Springu przetwarzają żądania HTTP kierowane do określonych adresów. Nasza klasa posiada metodę helloWorldController, która jest oznaczona adnotacją - @RequestMapping(value = "/greeting"). Ta adnotacja informuje nas, że ta metoda przetwarza żądania HTTP GET kierowane do adresu /greeting. Innymi słowy, ta metoda zadziała, jeśli ktoś przejdzie do /greeting. Ta metoda zwraca String. Według Spring-MVC metoda kontrolera musi zwracać nazwę widoku. Następnie Spring będzie szukał pliku HTML o tej samej nazwie, który zostanie zwrócony w odpowiedzi na żądanie HTTP. Jak widać nasza metoda zwraca nazwę strony internetowej, którą stworzyliśmy wcześniej - powitanie. Nasza metoda przyjmuje 2 argumenty. Przyjrzyjmy się im: Parametr 1: @RequestParam(nazwa = „nazwa”, wymagana = fałsz, wartość domyślna = „Świat”) Nazwa ciągu. Adnotacja @RequestParam stwierdza, że parametr String name jest parametrem adresu URL. Nawiasy adnotacyjne wskazują, że ten parametr w adresie URL jest opcjonalny (wymagany = false), w przypadku jego braku wartość parametru String name będzie równa World (defaultValue = „World”), a jeśli jest obecny, to ten parametr w adresie URL będzie się nazywać name (name = „name”). Może być tu wiele niejasności. Podajmy przykłady. Poniższa tabela pokazuje, jaka będzie wartość parametru String name dla różnych opcji dostępu do adresu /greeting (z parametrami w adresie URL i bez nich)
Przykładowy adres URL |
Wartość parametru nazwy ciągu |
/Powitanie |
Świat |
/greeting?name=Przyjacielu |
amigo |
/greeting?name=Zor |
Zorza |
Parametr 2: Drugi parametr to Model modelu. Ten parametr jest modelem. Model ten składa się wewnętrznie z różnych atrybutów. Każdy atrybut ma nazwę i wartość. Coś w rodzaju par klucz-wartość. Za pomocą tego parametru możemy przenieść dane z kodu Java na strony HTML. Lub, używając terminologii MVC, przenieś dane z modelu do widoku. Pozostaje przeanalizować ostatnią linię. Sposób, w jaki przekazujemy dane z Java do HTML lub z Modelu do Widoku. Treść metody zawiera następującą linię:
model.addAttribute("name", name);
Tutaj tworzymy nowy atrybut o nazwie name i przypisujemy mu wartość parametru name. Przypomnijmy, niedawno omawialiśmy tag:
<p th:text="'Hello, ' + ${name} + '!'" />
Powiedzieliśmy, że wartością tagu p będzie tekst „Hello” + wartość zmiennej name, którą ustawimy z kodu Java. Wartość tę ustalamy za pomocą linii
model.addAttribute("name", name);
Krok 5. Uruchom
Aby uruchomić musimy uruchomić metodę main w klasie MvcDemoApplication:
W logach uruchamiania zobaczymy, że nasza aplikacja webowa została uruchomiona na porcie 8080:
A to oznacza, że możemy przejść do strony w przeglądarce:
http:// localhost:8080 :
Tutaj wyświetlona została nam strona Index.html. Przejdźmy do linku do powitania:
Podczas tego przejścia nasz kontroler działał. Przez adres URL nie przekazaliśmy żadnych parametrów, dlatego jak podano w adnotacji, wartość atrybutu name przyjęła domyślną wartość World. Spróbujmy teraz przekazać parametr przez adres URL:
Wszystko działa zgodnie z przeznaczeniem. Teraz spróbuj prześledzić ścieżkę zmiennej name:
- Użytkownik przekazał wartość parametru name = Amigo -> poprzez adres URL
- Kontroler przetworzył naszą akcję, zaakceptował zmienną name i ustawił atrybut modelu z nazwą name i zaakceptowaną wartością ->
- Z modelu dane te trafiały do widoku, na stronę pozdrowienia.html i były wyświetlane użytkownikowi
To wszystko!
Dzisiaj przedstawiliśmy Wam dość duży i ciekawy temat MVC (Model – Widok – Kontroler). To koniec serii, której celem jest wprowadzenie Cię w to, co musisz wiedzieć przed rozpoczęciem rozwoju Enterprise.
Zostaw tematy, które Cię interesują w komentarzach - zrobimy to! |
GO TO FULL VERSION