Простейший учебник 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.

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