1. Обзор и Maven
Это простое руководство по Spring MVC, показывающее, как настроить проект Spring MVC, как с помощью конфигурации на основе Java, так и с настройкой XML.
Артефакты Maven для проекта Spring MVC подробно описаны в статье о зависимостях Spring MVC .
2. Web.xml
Это простая конфигурация web.xml для проекта Spring MVC:
01
02
03
04
05
06
07
08
09
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
|
<? xml version = "1.0" encoding = "UTF-8" ?> xsi:schemaLocation=" id = "WebApp_ID" version = "3.0" > < display-name >Spring MVC Java Config App</ display-name > < servlet > < servlet-name >mvc</ servlet-name > < servlet-class >org.springframework.web.servlet.DispatcherServlet</ servlet-class > < load-on-startup >1</ load-on-startup > </ servlet > < servlet-mapping > < servlet-name >mvc</ servlet-name > < url-pattern >/</ url-pattern > </ servlet-mapping > < context-param > < param-name >contextClass</ param-name > < param-value > org.springframework.web.context.support.AnnotationConfigWebApplicationContext </ param-value > </ context-param > < context-param > < param-name >contextConfigLocation</ param-name > < param-value >org.baeldung.spring.web.config</ param-value > </ context-param > < listener > < listener-class > org.springframework.web.context.ContextLoaderListener </ listener-class > </ listener > </ web-app > |
Мы используем конфигурацию на основе Java , поэтому мы используем AnnotationConfigWebApplicationContext в качестве основного класса контекста — он принимает аннотированные классы @Configuration в качестве входных данных. Таким образом, нам нужно только указать пакет, в котором расположены эти классы конфигурации, через contextConfigLocation .
Чтобы сохранить этот механизм гибким, здесь также можно настроить несколько пакетов, просто разделив их пробелами:
1
2
3
4
|
< context-param > < param-name >contextConfigLocation</ param-name > < param-value >org.baeldung.spring.web.config org.baeldung.spring.persistence.config</ param-value > </ context-param > |
Это позволяет более сложным проектам с несколькими модулями управлять своими собственными классами Spring Configuration и вносить их в общий контекст Spring во время выполнения.
Наконец, сервлет сопоставляется с / — это означает, что он становится сервлетом приложения по умолчанию, и он подберет каждый шаблон, который не имеет другого точного соответствия, определенного другим сервлетом.
3. Просмотр конфигурации
Java-конфигурация Spring MVC проста — она использует поддержку конфигурации MVC, представленную в Spring 3.1:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
@EnableWebMvc @Configuration public class ClientWebConfig extends WebMvcConfigurerAdapter { @Override public void addViewControllers(ViewControllerRegistry registry) { super .addViewControllers(registry); registry.addViewController( "/sample.html" ); } @Bean public ViewResolver viewResolver() { InternalResourceViewResolver bean = new InternalResourceViewResolver(); bean.setViewClass(JstlView. class ); bean.setPrefix( "/WEB-INF/view/" ); bean.setSuffix( ".jsp" ); return bean; } } |
Здесь очень важно то, что мы можем зарегистрировать контроллеры представлений, которые создают прямое сопоставление между URL-адресом и именем представления — теперь нет необходимости в каком-либо контроллере между этими двумя, поскольку мы используем конфигурацию Java.
4. Взгляды JSP
Мы определили базовый контроллер представления — sample.html — соответствующий ресурс jsp:
1
2
3
4
5
6
7
|
< html > < head ></ head > < body > < h1 >This is the body of the sample view</ h1 > </ body > </ html > |
Файлы представлений на основе JSP находятся в папке / WEB-INF проекта, поэтому они доступны только для инфраструктуры Spring, а не через прямой URL-доступ.
5. Заключение
В этом примере мы настроили простой и функциональный проект Spring MVC, используя конфигурацию Java. Реализация этого простого учебника Spring MVC может быть найдена в проекте github — это проект на основе Eclipse, поэтому его легко импортировать и запускать как есть.
Когда проект выполняется локально, файл sample.html доступен по адресу: