Простейший учебник Spring MVC Framework - пример Hello World со страницей пользовательского интерфейса (JSP)
Опубликовано: 2019-02-23
Архитектура Model-View-Controller (MVC) обеспечивает самый простой способ разработки гибких и слабо связанных веб-приложений.
В этом уроке мы рассмотрим, как создать ваше первое весеннее приложение MVC с очень подробными шагами.
У вас есть какие-либо из приведенных ниже вопросов?
- Основы Spring MVC 5.2.3
- Пошаговая разработка приложения Spring Framework MVC 5.
- java — руководство по Spring MVC с нуля
- Быстрое руководство по Spring MVC
- Учебное пособие по Spring MVC Framework
- Руководство по первому весеннему приложению MVC
- Учебники по Spring 5.x MVC, демонстрация AJAX, демонстрация jQuery, демонстрация JavaScript, советы и рекомендации Spring 5 MVC
Тогда вы находитесь в правильном месте. Здесь я продемонстрирую простую Spring MVC framework для создания веб-приложений.
Первым делом — настроим среду
Последнее обновление и проверка учебного пособия: сентябрь 2020 г. со следующими версиями инструмента.
Я использую приведенные ниже инструменты, которые вам, возможно, потребуется загрузить, если у вас их еще нет.
- Tomcat 9.0.38 — Загрузите последнюю версию Apache Tomcat по этой ссылке.
- Обязательно загрузите Eclipse IDE для разработчиков
Java EE(2020‑09 R) — ссылка для скачивания. (диаграмма ниже) -
Spring 5.2.9.RELEASE(загрузка не требуется) — мы будем использовать зависимость Maven. - JDK 15 — ссылка для скачивания.

Убедитесь, что вы загрузили последнюю версию комплекта разработчика Java EE :

Основная цель
Основная цель этого руководства — создать приложение Spring MVC самым простым способом.
Прежде чем мы начнем, давайте посмотрим, что мы увидим в конце этого урока.
Вот как будет выглядеть application result . Это окончательный результат после того, как вы выполните все шаги ниже.
Вот окончательный результат: Страница приветствия ==> index.jsp

Результат возвращается из класса контроллера

Теперь приступим к учебнику
Шаг 1
- Открытое затмение
- Создать
New Eclipse Workspace— этоmust, чтобы избежать проблем с конфигурацией существующего рабочего пространства.

Шаг 2
- Нажмите на
File - Нажмите «
New» - Выберите
Dynamic Web Project - Одно всплывающее окно, укажите имя проекта:
CrunchifySpringMVCTutorial - Убедитесь, что вы используете
Target RuntimeкакApache Tomcat 9.0- Если вы не видите целевую среду выполнения, выполните следующие действия.
- Выберите конфигурацию в качестве конфигурации по
Default Configuration

Шаг 3
Преобразуйте проект в проект Maven, чтобы добавить в проект все необходимые зависимости Spring MVC.
Шаги:
- Щелкните правой кнопкой мыши проект
- Настроить
- Преобразовать в проект
Maven


Шаг-4
Откройте файл pom.xml и добавьте в проект jar dependencies ниже.

NOTE:Вот мой файлpom.xml. Убедитесь, что вы обновили версию Java до13, если вы еще не перешли наJDK 13. Мы будем обновлять этот учебник до последней версии Spring MVC.Таким образом, нижеприведенный файл pom.xml может иметь другую (последнюю) версию зависимостей Spring MVC, чем приведенное выше изображение.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
< 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 http://maven.apache.org/xsd/maven-4.0.0.xsd" > < modelVersion > 4.0.0 < / modelVersion > < groupId > CrunchifySpringMVCTutorial < / groupId > < artifactId > CrunchifySpringMVCTutorial < / artifactId > < version > 0.0.1 - SNAPSHOT < / version > < packaging > war < / packaging > < build > < sourceDirectory > src < / sourceDirectory > < plugins > < plugin > < artifactId > maven - compiler - plugin < / artifactId > < version > 3.8.0 < / version > < configuration > < release > 13 < / release > < / configuration > < / plugin > < plugin > < artifactId > maven - war - plugin < / artifactId > < version > 3.2.1 < / version > < configuration > < warSourceDirectory > WebContent < / warSourceDirectory > < / configuration > < / plugin > < / plugins > < / build > < dependencies > < dependency > < groupId > org . springframework < / groupId > < artifactId > spring - core < / artifactId > < version > 5.2.3.RELEASE < / version > < / dependency > < dependency > < groupId > org . springframework < / groupId > < artifactId > spring - context < / artifactId > < version > 5.2.3.RELEASE < / version > < / dependency > < dependency > < groupId > org . springframework < / groupId > < artifactId > spring - aop < / artifactId > < version > 5.2.3.RELEASE < / version > < / dependency > < dependency > < groupId > org . springframework < / groupId > < artifactId > spring - webmvc < / artifactId > < version > 5.2.3.RELEASE < / version > < / dependency > < dependency > < groupId > org . springframework < / groupId > < artifactId > spring - web < / artifactId > < version > 5.2.3.RELEASE < / version > < / dependency > < dependency > < groupId > javax . servlet < / groupId > < artifactId > jstl < / artifactId > < version > 1.2 < / version > < / dependency > < / dependencies > < / project > |
Шаг-5
Создайте новый файл Spring Configuration Bean : /WebContent/WEB-INF/crunchify-servlet.xml

crunchify-servlet.xml
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<? xml version = "1.0" encoding = "UTF-8" ?> < beans xmlns = "http://www.springframework.org/schema/beans" xmlns : mvc = "http://www.springframework.org/schema/mvc" xmlns : context = "http://www.springframework.org/schema/context" xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi : schemaLocation = " http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd" > < mvc : annotation - driven / > < context : component - scan base - package = "com.crunchify.controller" / > < mvc : default - servlet - handler / > < bean id = "viewResolver" class = "org.springframework.web.servlet.view.UrlBasedViewResolver" > < property name = "viewClass" value = "org.springframework.web.servlet.view.JstlView" / > < property name = "prefix" value = "/WEB-INF/jsp/" / > < property name = "suffix" value = ".jsp" / > < / bean > < / beans > |
В приведенном выше crunchify-servlet.xml конфигурационном файле мы определили тег <context:component-scan> . Это позволит Spring загрузить все компоненты из пакета com.crunchify.controller и всех его дочерних пакетов.
Это загрузит наш CrunchifyHelloWorld.class . Также мы определили bean-компонент viewResolver . Этот bean-компонент разрешит представление и добавит строку префикса /WEB-INF/jsp/ и суффикс .jsp к представлению в ModelAndView.
Обратите внимание, что в нашем классе CrunchifyHelloWorld мы возвращаем объект ModelAndView с приветственным именем представления.
Это будет разрешено по пути /WEB-INF/jsp/welcome.jsp .
Шаг-6
Создайте новый файл web.xml , если его еще нет. Сопоставьте Spring MVC с файлом /WebContent/WEB-INF/web.xml .
NOTE: Если вы не видите файл web.xml в своем « dynamic web project », выполните следующие действия.
веб.xml
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<? xml version = "1.0" encoding = "UTF-8" ?> < web - app xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns = "http://xmlns.jcp.org/xml/ns/javaee" xsi : schemaLocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id = "WebApp_ID" version = "4.0" > < display - name > CrunchifySpringMVCTutorial < / display - name > < welcome - file - list > < welcome - file > index . html < / welcome - file > < welcome - file > index . htm < / welcome - file > < welcome - file > index . jsp < / welcome - file > < welcome - file > default . html < / welcome - file > < welcome - file > default . htm < / welcome - file > < welcome - file > default . jsp < / welcome - file > < / welcome - file - list > < servlet > < servlet - name > crunchify < / servlet - name > < servlet - class > org . springframework . web . servlet . DispatcherServlet < / servlet - class > < load - on - startup > 1 < / load - on - startup > < / servlet > < servlet - mapping > < servlet - name > crunchify < / servlet - name > < url - pattern > / welcome . jsp < / url - pattern > < url - pattern > / index . jsp < / url - pattern > < url - pattern > / welcome . html < / url - pattern > < url - pattern > * . html < / url - pattern > < / servlet - mapping > < / web - app > |
Приведенный выше код в web.xml сопоставит DispatcherServlet с шаблоном URL /welcome.jsp . Также обратите внимание, что мы определили index.jsp как файл приветствия.
Здесь следует обратить внимание на имя сервлета в <servlet-name> в web.xml . После инициализации DispatcherServlet будет искать файл с именем [servlet-name]-servlet.xml в папке WEB-INF веб-приложения. В этом примере платформа будет искать файл с именем crunchify-servlet.xml .
Шаг-7
Создайте класс контроллера.
- Щелкните правой кнопкой мыши
Java Resources->src - Нажмите «
New» ->Class». - Пакет:
com.crunchify.controller - Имя файла:
CrunchifyHelloWorld.java

CrunchifyHelloWorld.java
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
package com . crunchify . controller ; import org . springframework . stereotype . Controller ; import org . springframework . web . bind . annotation . RequestMapping ; import org . springframework . web . servlet . ModelAndView ; /* * author: Crunchify.com * */ @Controller public class CrunchifyHelloWorld { @RequestMapping ( "/welcome" ) public ModelAndView helloWorld ( ) { String message = "<br><div>" + "<h3>********** Hello World, Spring MVC Tutorial</h3>This message is coming from CrunchifyHelloWorld.java **********</div><br><br>" ; return new ModelAndView ( "welcome" , "message" , message ) ; } } |
Обратите внимание, что мы аннотировали класс CrunchifyHelloWorld с помощью @Controller и @RequestMapping("/welcome") . Когда Spring просканирует наш пакет, он распознает этот компонент как компонент-контроллер для обработки запросов. Аннотация @RequestMapping сообщает Spring, что этот контроллер должен обрабатывать все запросы, начинающиеся с /welcome в пути URL. Сюда входят /welcome/* и /welcome.html .

Метод helloWorld() возвращает объект ModelAndView . Объект ModelAndView пытается разрешить представление с именем «добро пожаловать», и модель данных передается обратно в браузер, чтобы мы могли получить доступ к данным в JSP. Имя логического представления будет преобразовано в /WEB-INF/jsp/welcome.jsp . Логическое имя «приветствие», возвращаемое в объекте ModelAndView, сопоставляется с путем /WEB-INF/jsp/welcome.jsp.
Объект ModelAndView также содержит сообщение с ключом «message» и подробным значением. Это данные, которые мы передаем в наше представление. Обычно это будет объект значения в форме java bean, который будет содержать данные, которые будут отображаться в нашем представлении. Здесь мы просто передаем строку.
Шаг-8
Представление — создать новый файл /WebContent/index.jsp .
index.jsp
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
< html > < head > < title > Spring MVC Tutorial Series by Crunchify . com < / title > <style type ="text/css"> body { background-image : url ( 'https://cdn.crunchify.com/bg.png' ) ; } </style> < / head > < body > < br > < div style = "text-align: center" > < h2 > Hey You . . ! ! This is your 1st Spring MCV Tutorial . . < br > < br > < / h2 > < h3 > < a href = "welcome.html" > Click here to See Welcome Message . . . < / a > ( to check Spring MVC Controller . . . @ RequestMapping ( "/welcome" ) ) < / h3 > < / div > < / body > < / html > |
Создайте еще один файл /WebContent/WEB-INF/jsp/welcome.jsp .
NOTE: Не забудьте создать папку jsp и поместить в welcome.jsp .
добро пожаловать.jsp
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
< html > < head > < title > Spring MVC Tutorial by Crunchify - Hello World Spring MVC Example < / title > <style type ="text/css"> body { background-image : url ( 'https://cdn.crunchify.com/bg.png' ) ; } </style> < / head > < body > $ { message } < br > < br > < div style = "font-family: verdana; padding: 10px; border-radius: 10px; font-size: 12px; text-align: center;" > Spring MCV Tutorial by < a href = "https://crunchify.com" > Crunchify < / a > . Click < a href = "https://crunchify.com/category/java-tutorials/" target = "_blank" > here < / a > for all Java and < a href = 'https://crunchify.com/category/spring-mvc/' target = '_blank' > here < / a > for all Spring MVC , Web Development examples . < br > < / div > < / body > < / html > |
Ведь именно так должно выглядеть ваше рабочее пространство.

Шаг-9
Щелкните правой кнопкой мыши Project -> Run As -> Maven Build...

Add Goals : clean install . Нажмите Apply » и Run .

Вы должны увидеть success message сборке:

Где все мои файлы .jar?
Вы увидите все файлы .jar в папке /target . Снимок экрана.
Шаг-10
- Если вы
don't seeсервер Tomcat на вкладке «Servers», выполните действия, чтобы добавить Apache Tomcat в Eclipse. - Развернуть проект в
Apache Tomcat- Щелкните правой кнопкой мыши
- Добавить и удалить
- Добавьте проект на сервер (правая часть).
- Нажмите «Пуск».

Убедитесь, что вы видите ниже журналы. Это означает, что ваше приложение успешно развернуто на веб-сервере Tomcat.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
Aug 04 , 2018 9 : 08 : 10 PM org . apache . tomcat . util . digester . SetPropertiesRule begin WARNING : [ SetPropertiesRule ] { Server / Service / Engine / Host / Context } Setting property 'source' to 'org.eclipse.jst.jee.server:CrunchifySpringMVCTutorial' did not find a matching property . INFO : Server version : Apache Tomcat / 9.0.10 INFO : Server built : Jun 20 2018 17 : 32 : 21 UTC INFO : Server number : 9.0.10.0 INFO : OS Name : Mac OS X INFO : OS Version : 10.13.6 INFO : Architecture : x86_64 INFO : Java Home : / Library / Java / JavaVirtualMachines / jdk - 10.0.2.jdk / Contents / Home INFO : JVM Version : 10.0.2 + 13 INFO : JVM Vendor : "Oracle Corporation" INFO : CATALINA_BASE : / Users / appshah / Documents / jee - photon / workspace / c / . metadata / . plugins / org . eclipse . wst . server . core / tmp0 INFO : CATALINA_HOME : / Users / appshah / Documents / jee - photon / apache - tomcat - 9.0.10 INFO : Command line argument : - Dcatalina . base =/ Users / appshah / Documents / jee - photon / workspace / c / . metadata / . plugins / org . eclipse . wst . server . core / tmp0 INFO : Command line argument : - Dcatalina . home =/ Users / appshah / Documents / jee - photon / apache - tomcat - 9.0.10 INFO : Command line argument : - Dwtp . deploy =/ Users / appshah / Documents / jee - photon / workspace / c / . metadata / . plugins / org . eclipse . wst . server . core / tmp0 / wtpwebapps INFO : Command line argument : - Dfile . encoding = UTF - 8 INFO : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java . library . path : [ / Users / appshah / Library / Java / Extensions : / Library / Java / Extensions : / Network / Library / Java / Extensions : / System / Library / Java / Extensions : / usr / lib / java : . ] INFO : Initializing ProtocolHandler [ "http-nio-8080" ] INFO : Using a shared selector for servlet write / read INFO : Initializing ProtocolHandler [ "ajp-nio-8009" ] INFO : Using a shared selector for servlet write / read INFO : Initialization processed in 841 ms INFO : Starting service [ Catalina ] INFO : Starting Servlet Engine : Apache Tomcat / 9.0.10 INFO : At least one JAR was scanned for TLDs yet contained no TLDs . Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them . Skipping unneeded JARs during scanning can improve startup time and JSP compilation time . INFO : At least one JAR was scanned for TLDs yet contained no TLDs . Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them . Skipping unneeded JARs during scanning can improve startup time and JSP compilation time . INFO : No Spring WebApplicationInitializer types detected on classpath INFO : Initializing Spring FrameworkServlet 'crunchify' INFO : FrameworkServlet 'crunchify' : initialization started INFO : Refreshing WebApplicationContext for namespace 'crunchify-servlet' : startup date [ Sat Aug 04 21 : 08 : 13 CDT 2018 ] ; root of context hierarchy INFO : Loading XML bean definitions from ServletContext resource [ / WEB - INF / crunchify - servlet . xml ] INFO : Mapped "{[/welcome]}" onto public org . springframework . web . servlet . ModelAndView com . crunchify . controller . CrunchifyHelloWorld . helloWorld ( ) INFO : Looking for @ ControllerAdvice : WebApplicationContext for namespace 'crunchify-servlet' : startup date [ Sat Aug 04 21 : 08 : 13 CDT 2018 ] ; root of context hierarchy INFO : Looking for @ ControllerAdvice : WebApplicationContext for namespace 'crunchify-servlet' : startup date [ Sat Aug 04 21 : 08 : 13 CDT 2018 ] ; root of context hierarchy INFO : Mapped URL path [ /** ] onto handler 'org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler#0' INFO : FrameworkServlet 'crunchify' : initialization completed in 1607 ms INFO : Starting ProtocolHandler [ "http-nio-8080" ] INFO : Starting ProtocolHandler [ "ajp-nio-8009" ] INFO : Server startup in 3579 ms |
Шаг-11. Сделанный.
Посетите: http://localhost:8080/CrunchifySpringMVCTutorial/, и все должно быть готово.
Ура.. Теперь вы знаете Hello World Spring MVC 5 Example . Дайте мне знать, если вы столкнетесь с каким-либо исключением при выполнении этого. Здесь можно найти гораздо больше примеров.
Do you want to include JS, CSS and images into JSP file? Следуйте этому руководству: лучший способ добавить/интегрировать JS, CSS и изображения в файл JSP с помощью «mvc: сопоставление ресурсов».
Попасть в неприятности? Любая проблема?
Проверка, шаг 1. Ошибка HTTP-статуса 404?

Кроме того, следуйте приведенному ниже руководству:
Проверка, шаг 2. URL-адрес не работает? Ошибка томката?
Убедитесь, что вы добавили Apache Tomcat Server в Targeted Runtime . Который вы, возможно, выбрали на Step-1 . Tomcat 7 или 8 любой — сервер должен работать.

Triaging Step-3 - ошибки maven?
Обязательно обновите все зависимости maven.

Не стесняйтесь писать по электронной почте или оставлять комментарии ниже, если у вас возникли проблемы с выполнением вышеприведенного руководства.
