Вот минимальный способ начать проект Spring 3 MVC с Maven.
Сначала создайте файл spring-web-annotation/pom.xml
и spring-web-annotation/pom.xml
зависимость Spring:
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
|
<?xml version= "1.0" encoding= "UTF-8" ?> <project xmlns= "http://maven.apache.org/POM/4.0.0" xsi:schemaLocation=" http: //maven.apache.org/POM/4.0.0 http: //maven.apache.org/maven-v4_0_0.xsd"> <modelVersion> 4.0 . 0 </modelVersion> <groupId>spring-web-annotation</groupId> <artifactId>spring-web-annotation</artifactId> <version> 1.0 -SNAPSHOT</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version> 3.1 . 0 </version> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version> 3.2 . 4 .RELEASE</version> </dependency> </dependencies> </project> |
Теперь создайте веб-инициализатор Servlet 3 и конфигурацию аннотаций Spring для деталей MVC в spring-web-annotation/src/main/java/springweb/WebApp.java
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
|
package springweb; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; public class WebApp extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class<?>[] getRootConfigClasses() { return new Class<?>[ 0 ]; } @Override protected Class<?>[] getServletConfigClasses() { return new Class<?>[]{ WebAppConfig. class }; } @Override protected String[] getServletMappings() { return new String[]{ "/" }; } @Configuration @EnableWebMvc @ComponentScan ( "springweb.controller" ) public static class WebAppConfig { } } |
Класс WebApp
расширяет встроенный в Spring код инициализатора Servlet3. Это позволяет контейнеру Servlet3, такому как Tomcat7, автоматически обнаруживать это веб-приложение без необходимости настройки конфигурации web.xml
. Из-за того, что мы не используем web.xml
, нам нужен этот класс, чтобы Spring мог подключиться к контейнеру сервлета для начальной загрузки их сервлета диспетчера. Кроме того, вместо типовой конфигурации XML-файла Spring bean-компонентов теперь мы можем использовать все аннотации, основанные на WebAppConfig
.
Заметил, что я объединил WebAppConfig
как внутренний класс, но вы можете легко переместить его как класс верхнего уровня в полномасштабном приложении. Это версия аннотации Spring для конфигурации контейнера. Вы можете легко настроить приложение, добавив новый @Bean
здесь.
Примечание. Не забудьте переписать метод getServletMappings
с помощью "/"
, иначе ваш запрос URL не будет getServletMappings
в диспетчер Spring для обработки! Шаг, который можно легко забыть, и вы можете догадаться, почему не работают контроллеры Spring.
Выше приведены минимальные настройки, необходимые для начала военного проекта. Затем вы хотите добавить хотя бы один контроллер для вывода. Создайте этот файл spring-web-annotation/src/main/java/springweb/controller/IndexController.java
01
02
03
04
05
06
07
08
09
10
11
12
|
package springweb.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class IndexController { @RequestMapping (value= "/" ) public String index() { return "index" ; } } |
И теперь вам потребуется представление JSP spring-web-annotation/src/main/webapp/index.jsp
1
|
Hello World. |
Теперь перейдите в spring-web-annotation
и выполните mvn org.apache.tomcat.maven:tomcat7-maven-plugin:run
. Вы должны увидеть, что приложение Spring запускается и может просматривать http://localhost:8080/spring-web-annotation
адрес http://localhost:8080/spring-web-annotation
.
Есть много интересных вещей, которые вы можете сделать с помощью Spring MVC. Проверьте их удивительные документы для более подробной информации.