Spring MVC Tutorial

** 1. обзор

**

Это простое учебное пособие по Spring MVC , показывающее, как настроить проект Spring MVC, как с конфигурацией на основе Java, так и с конфигурацией XML.

Зависимости Maven для проекта Spring MVC подробно описаны в статье:/spring-with-maven # mvc[Spring MVC dependencies].

** 2. Spring MVC Использование конфигурации Java

**

Чтобы включить поддержку Spring MVC через класс конфигурации Java, все, что нам нужно сделать, это добавить аннотацию @ EnableWebMvc :

@EnableWebMvc
@Configuration
public class ClientWebConfig {

   ///...
}

Это создаст базовую поддержку, необходимую нам для проекта MVC, такую ​​как регистрация контроллеров и отображений, преобразователи типов, поддержка проверки, преобразователи сообщений и обработка исключений.

  • Если мы хотим настроить эту конфигурацию, нам нужно реализовать интерфейс WebMvcConfigurer : **

@EnableWebMvc
@Configuration
public class ClientWebConfig implements WebMvcConfigurer {

   @Override
   public void addViewControllers(ViewControllerRegistry registry) {
      registry.addViewController("/index");
   }

   @Bean
   public ViewResolver viewResolver() {
      InternalResourceViewResolver bean = new InternalResourceViewResolver();

      bean.setViewClass(JstlView.class);
      bean.setPrefix("/WEB-INF/view/");
      bean.setSuffix(".jsp");

      return bean;
   }
}

В этом примере мы зарегистрировали bean-компонент ViewResolver , который будет возвращать представления .jsp из каталога /WEB-INF/view .

Здесь очень важно, что мы можем зарегистрировать контроллеры представлений, которые создают прямое отображение между URL-адресом и именем представления , используя ViewControllerRegistry. Таким образом, нет необходимости в каком-либо контроллере между ними.

Если мы также хотим определить и отсканировать классы контроллеров, мы можем добавить аннотацию @ ComponentScan с пакетом, который содержит контроллеры:

@EnableWebMvc
@Configuration
@ComponentScan(basePackages = { "com.baeldung.web.controller" })
public class WebConfig implements WebMvcConfigurer {
   //...
}

Чтобы загрузить приложение, которое загружает эту конфигурацию, нам также нужен класс инициализатора:

public class MainWebAppInitializer implements WebApplicationInitializer {
    @Override
    public void onStartup(final ServletContext sc) throws ServletException {

        AnnotationConfigWebApplicationContext root =
          new AnnotationConfigWebApplicationContext();

        root.scan("com.baeldung");
        sc.addListener(new ContextLoaderListener(root));

        ServletRegistration.Dynamic appServlet =
          sc.addServlet("mvc", new DispatcherServlet(new GenericWebApplicationContext()));
        appServlet.setLoadOnStartup(1);
        appServlet.addMapping("/");
    }
}

Обратите внимание, что для версий более ранних, чем Spring 5, мы должны использовать класс WebMvcConfigurerAdapter вместо интерфейса.

3. Spring MVC с использованием конфигурации XML

В качестве альтернативы конфигурации Java, описанной выше, мы также можем использовать чисто XML-конфигурацию:

<context:component-scan base-package="com.baeldung.web.controller"/>
<mvc:annotation-driven/>

<bean id="viewResolver"
      class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <mvc:view-controller path="/" view-name="index"/>

</beans>

Если мы хотим использовать чисто XML-конфигурацию, нам также нужно добавить файл web.xml для начальной загрузки приложения. Для более подробной информации об этом подходе, посмотрите our предыдущая статья .

4. Контроллер и Представления

Давайте рассмотрим пример базового контроллера:

@Controller
public class SampleController {
    @GetMapping("/sample")
    public String showForm() {
        return "sample";
    }

}

И соответствующий ресурс jsp - это файл sample.jsp :

<html>
   <head></head>

   <body>
      <h1>This is the body of the sample view</h1>
   </body>
</html>

Файлы представлений на основе JSP находятся в папке/ WEB-INF проекта, поэтому они доступны только для инфраструктуры Spring, а не через прямой URL-доступ.

5. Spring MVC с загрузкой

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

  • Boot не предназначен для замены Spring, но делает работу с ним быстрее и проще.

5.1. Стартеры для весенней загрузки

  • Новая структура предоставляет удобные начальные зависимости - которые являются дескрипторами зависимостей ** , которые могут принести все необходимые технологии для определенной функциональности.

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

Самый быстрый способ начать работу - добавить https://search.maven.org/classic/#search%7Cga%7C1%7Ca%3A%22spring-boot-starter-parent%22 pom.xml:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.RELEASE</version>
</parent>

Это позаботится об управлении зависимостями.

** 5.2. Spring Boot Entry Point

**

Каждое приложение, созданное с использованием Spring Boot , должно просто определить основную точку входа. Обычно это класс Java с методом main , аннотированный @ SpringBootApplication :

@SpringBootApplication
public class Application {
    public static void main(String[]args) {
        SpringApplication.run(Application.class, args);
    }
}

Эта аннотация добавляет следующие другие аннотации:

  • @ Configuration - который помечает класс как источник bean-компонента

определения ** @ EnableAutoConfiguration - сообщает платформе добавить бины

на основе зависимости от пути к классам автоматически ** @ ComponentScan - который сканирует другие конфигурации и компоненты в

тот же пакет, что и класс Application или ниже

С помощью Spring Boot мы можем настроить внешний интерфейс с помощью Thymeleaf или JSP без использования ViewResolver, как определено в разделе 3. Добавляя зависимость spring-boot-starter-thymeleaf в наш pom.xml, Thymeleaf включается, и дополнительная настройка не требуется.

Исходный код приложения Boot, как всегда, доступен на over на GitHub .

Наконец, если вы хотите начать работу с Spring Boot, взгляните на нашу ссылку:/spring-boot-start[ссылка здесь].

6. Заключение

В этом примере мы настроили простой и функциональный проект Spring MVC, используя конфигурацию Java.

Реализацию этого простого учебника Spring MVC можно найти по адресу the проект GitHub - это проект на основе Eclipse, поэтому его следует легко импортировать и запускать как есть.

Когда проект выполняется локально, доступ к _sample.jsp можно получить по адресу http://локальный : 8080/весна-MVC-Java/sample._