Этот пост будет похож на наш предыдущий пост, простое веб-приложение 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 (for Java-based Spring configuration) webapp WEB-INF web.xml spring sample-servlet.xml (for XML-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
|
<?xml version="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
|
package com.codetutr.springconfig;import org.springframework.context.annotation.Bean;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.view.InternalResourceViewResolver;@Configuration@EnableWebMvc@ComponentScan(basePackages="com.codetutr.controller")public class WebConfig { @Bean public InternalResourceViewResolver viewResolver() { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setPrefix("/WEB-INF/view/"); resolver.setSuffix(".jsp"); return resolver; }} |
Сначала обратите внимание на аннотацию @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
|
<?xml version="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
|
<?xml version="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-scan base-package="com.codetutr.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></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
|
package com.codetutr.controller;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class SampleController { @RequestMapping("home") public String 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
|
<!DOCTYPE HTML><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
