Этот пост будет похож на наш предыдущий пост, простое веб-приложение Gradle , за исключением того, что теперь мы будем использовать Spring MVC, а не сырые сервлеты. Получить действительно простое приложение Spring MVC, работающее с Gradle, очень просто. Вы можете скачать исходный код этого руководства на Github .
Предпосылки
Наша основная структура проекта будет:
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 | spring-mvc  src    main      java        com          codetutr            controller              HomeController.java            springconfig              WebConfig.java (forJava-based Spring configuration)      webapp        WEB-INF          web.xml          spring            sample-servlet.xml (forXML-based Spring configuration)          view            home.jsp | 
 Сначала создайте папку с именем spring-mvc , а затем создайте базовую структуру папок: src / main / java, src / main / webapp / WEB-INF.  Затем давайте создадим файл сборки Gradle внутри корневой папки: 
 build.gradle 
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 | apply plugin: 'war'apply plugin: 'jetty'apply plugin: 'eclipse-wtp'repositories {   mavenCentral()}dependencies {   providedCompile 'javax.servlet:servlet-api:2.5'   compile 'org.springframework:spring-webmvc:3.2.2.RELEASE'   runtime 'javax.servlet:jstl:1.1.2'}/* Change context path (base url). otherwise defaults to name of project */jettyRunWar.contextPath = '' | 
  Теперь откройте командную строку в папке spring-mvc и запустите gradle eclipse .  Вы увидите загрузку всех (многих) необходимых банок Spring, от которых зависит Spring-webmvc.  Теперь импортируйте проект в Eclipse (Файл-> Импорт-> Существующие проекты в рабочую область).  Теперь мы создадим web.xml, конфигурацию Spring и базовый контроллер.  Классический способ настроить приложение Spring — это настройка XML.  Начиная с Spring 3.1, приложения Spring также можно было легко настроить с помощью конфигурации Java (это поддерживалось в Spring 3.0, но в Spring 3.1 появилась поддержка настраиваемого пространства имен, которая действительно сделала это привлекательным).  Я предпочитаю конфигурацию Java, но я покажу оба подхода для тех, кто все еще использует конфигурацию XML.  Следуйте ЛИБО конфигурации Java ИЛИ конфигурации XML.  Если вы хотите использовать конфигурацию XML, пропустите этот раздел и перейдите к разделу конфигурации XML. 
Spring Java-конфигурация
  Создайте web.xml в src/main/webapp/WEB-INF : 
 web.xml 
| 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 | <?xmlversion="1.0"encoding="UTF-8"?>xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  <servlet>    <servlet-name>sample</servlet-name>    <servlet-class>        org.springframework.web.servlet.DispatcherServlet    </servlet-class>    <init-param>      <param-name>contextClass</param-name>      <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>    </init-param>    <init-param>      <param-name>contextConfigLocation</param-name>      <param-value>com.codetutr.springconfig</param-value>    </init-param>  </servlet>  <servlet-mapping>    <servlet-name>sample</servlet-name>    <url-pattern>/</url-pattern>  </servlet-mapping></web-app> | 
  Обратите внимание, что мы создали Spring DispatcherServlet, сопоставленный со всеми URL «/».  Мы также попросили DispatcherServlet искать наши классы конфигурации Spring на основе Java в пакете com.codetutr.springconfig .  Давайте создадим наш класс конфигурации Java, который теперь называется WebConfig в пакете com.codetutr.springconfig : 
 WebConfig.java 
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | packagecom.codetutr.springconfig;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.ComponentScan;importorg.springframework.context.annotation.Configuration;importorg.springframework.web.servlet.config.annotation.EnableWebMvc;importorg.springframework.web.servlet.view.InternalResourceViewResolver;@Configuration@EnableWebMvc@ComponentScan(basePackages="com.codetutr.controller")publicclassWebConfig {    @Bean    publicInternalResourceViewResolver viewResolver() {        InternalResourceViewResolver resolver =                     newInternalResourceViewResolver();        resolver.setPrefix("/WEB-INF/view/");        resolver.setSuffix(".jsp");        returnresolver;    }} | 
  Сначала обратите внимание на аннотацию @Configuration .  Это говорит Spring, что это класс конфигурации (эквивалент XML-файла <beans>).  Затем строка @EnableWebMvc инициализирует магию Spring MVC (для конвертеров, сериализации и т. Д.).  Эквивалентен <mvc:annotation-driven/> . Следующая строка с @ComponentScan указывает Spring искать классы, аннотированные с помощью аннотации стереотипа Spring ( @Service, @Component, @Repository, @Controller ) — в нашем случае у нас будет некоторые контроллеры MVC в указанном пакете.  Мы обсудим преобразователь представления через минуту.  Пропустите следующий раздел конфигурации на основе XML, поскольку мы уже настроили наше приложение с помощью Spring Java-Configuration. 
Конфигурация Spring на основе XML (если вы решили не использовать Java на основе выше)
  Создайте web.xml в src/main/webapp/WEB-INF : 
 web.xml 
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?xmlversion="1.0"encoding="UTF-8"?>xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  <servlet>    <servlet-name>sample</servlet-name>    <servlet-class>        org.springframework.web.servlet.DispatcherServlet    </servlet-class>    <init-param>      <param-name>contextConfigLocation</param-name>      <param-value>/WEB-INF/spring/sample-servlet.xml</param-value>    </init-param>  </servlet>  <servlet-mapping>    <servlet-name>sample</servlet-name>    <url-pattern>/</url-pattern>  </servlet-mapping></web-app> | 
  Обратите внимание, что мы создали Spring DispatcherServlet, сопоставленный со всеми URL «/».  Мы также сказали DispatcherServlet найти наш конфигурационный файл Spring в WEB-INF/sping/sample-servlet.xml .  Давайте создадим это сейчас: 
 sample-servlet.xml 
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 | <?xmlversion="1.0"encoding="UTF-8"?>    xsi:schemaLocation="http://www.springframework.org/schema/beans    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd  http://www.springframework.org/schema/mvc    http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd  http://www.springframework.org/schema/context    http://www.springframework.org/schema/context/spring-context-3.2.xsd">  <context:component-scanbase-package="com.codetutr.controller"/>    <mvc:annotation-driven/>  <beanid="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver">    <propertyname="prefix"value="/WEB-INF/view/"/>    <propertyname="suffix"value=".jsp"/>  </bean></beans> | 
  Первая строка с context:component-scan указывает Spring искать классы @Service, @Component, @Repository, @Controller аннотацией стереотипа Spring ( @Service, @Component, @Repository, @Controller ).  <mvc:annotation-driven /> сообщает Spring, чтобы добавить некоторые вкусности MVC.  Мы обсудим преобразователь представления через минуту. 
Создайте контроллер (все делают это — то же самое для конфигурации XML и Java)
  Теперь, когда мы попросили Spring искать контроллеры MVC в нашем пакете com.codetutr.controller , давайте com.codetutr.controller простой контроллер.  Создайте новый класс в пакете com.codetutr.controller , который называется SampleController .  Введите следующее содержание: 
 SampleController.java 
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 | packagecom.codetutr.controller;importorg.springframework.stereotype.Controller;importorg.springframework.ui.Model;importorg.springframework.web.bind.annotation.RequestMapping;@ControllerpublicclassSampleController {    @RequestMapping("home")    publicString loadHomePage(Model m) {        m.addAttribute("name", "CodeTutr");        return"home";    }} | 
  Помните, когда мы создавали viewResolver компонент viewResolver в sample-servlet.xml конфигурации sample-servlet.xml Spring?  Мы устанавливаем префикс как WEB-INF/view и суффикс как .jsp .  Используя этот преобразователь, после того как вышеуказанный метод будет выполнен с возвращаемым значением home , Spring будет искать файл с именем WEB-INF/view/home.jsp для визуализации представления.  Давайте создадим этот файл сейчас: 
 home.jsp 
| 1 2 3 4 5 6 7 8 9 | <!DOCTYPEHTML><html>  <head>    <title>Sample Application</title>  </head>  <body>    <h1>Hello, ${name}!</h1>  </body></html> | 
  Это оно!  Теперь у вас есть базовое приложение Spring-MVC.  Откройте командную строку в корневом каталоге проекта и введите gradle jettyRunWar .  Это запустит встроенный Jetty Server на порту 8080. Перейдите по адресу http: // localhost: 8080 / home, и вы должны увидеть: 
Теперь, когда у вас есть основное приложение Spring MVC, следуйте учебному руководству Spring MVC Form Submission .
  Полный источник: ZIP , GitHub 
  Чтобы запустить код из этого руководства: необходимо установить Gradle .  Загрузите ZIP.  Extract.  Откройте командную строку для извлеченного местоположения.  Запустите gradle jettyRunWar.  Перейдите в браузере по адресу http: // localhost: 8080 / home. 
Ресурсы
  Блог SpringSource — Улучшения и конфигурация пространства имен MVC 
  SpringSource Docs — Документация EnableWebMvc 
