Кроме основного мавен репозитория из которого происходит загрузка зависимостей также есть и другие репозитории, и чтобы скачивание происходило и оттуда его нужно указать в pom.xml.
Давайте удалим файл web.xml, чтобы теперь настраивать приложение в Java классе MySpringMvcDispServlInit вместо web.xml. Также добавим Java класс для настройки бинов вместо applicationContext.xml.
Также создадим сконфигурированную нами ранее дополнительную папку ресурсов resourcedir.
Заметьте, что директории в папке java названы как groupid и artifactid в pom файле, а после папки с названием artifactid (в нашем случае firstMavenWebApp), уже специфические папки с исходниками – config, controller и т.д. Так желательно называть, как говорилось ранее.
Также, как видим, создана страница somePage, к которой будет происходить переход через SimpleController.java.
Применение изменений в pom файле
Чтобы изменения в pom файле вступили в силу в нашем проекте, то есть скачались и добавились в наш проект все зависимости, плагины и применились другие настройки сборки, нужно нажать:
Начнется скачивание зависимостей из интернета. После этого они добавятся в наш проект и мы сможем ими смело пользоваться при программировании.
Настройка DispatcherServlet
Давайте настроим Java версию web.xml. Настроим DispatcherServlet подобным образом, как мы это делали в web.xml:
package com.mavenwebapps.firstMavenWebAp.config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
//Этот класс вместо web.xml. Здесь конфигурируем
//DispatcherServlet как мы это делали в web.xml
//только Java кодом.
public class MySpringMvcDispServlInit
extends AbstractAnnotationConfigDispatcherServletInitializer {
//Для этого переопределяем методы класса с названием
//AbstractAnnotationConfigDispatcherServletInitializer.
//Пишем вот такой метод)
@Override
protected Class>[] getRootConfigClasses() {
return null;
}
@Override
protected Class>[] getServletConfigClasses() {
//Помним что в web.xml мы указывали параметром
//сервлету имя файла конфигурации бинов.
//Здесь тоже передаем имя этого файла
//только в данном случае как показано ниже.
return new Class>[] { JavaSpringConfig.class };
}
@Override
protected String[] getServletMappings() {
//И также как и в web.xml задаем путь по которому
//происходит переход к DispatcherServlet.
//”/” значит по корневому пути, то есть по пути
//http://localhost:8080/firstMavenWebProject/
return new String[] { “/” };
}
}
Настройка applicationContext
Давайте теперь в файлике для настройки спринг, как мы уже делали это раньше, настроим путь к директории, в которой будут искаться классы с аннотациями по которым будут создаваться бины, то есть путь com.MavenWebAps.firstMavenWebAp.
Здесь же настроим путь к папке с View. Это мы уже тоже делали раньше.
package com.MavenWebAps.firstMavenWebAp.config;
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;
//Это класс конфигурации спринг бинов
//вместо applicationContext.xml.
@Configuration
@EnableWebMvc
@ComponentScan(basePackages =”com.MavenWebAps.firstMavenWebAp”)
public class JavaSpringConfig {
//Здесь также как мы делали в xml создаем бин,
//который определяет путь к вьюхам.
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver =
new InternalResourceViewResolver();
viewResolver.setPrefix(“/WEB-INF/jsp/”);
viewResolver.setSuffix(“.jsp”);
return viewResolver;
}
}
//То есть в нашем проекте не осталось xml ВООБЩЕ.
Настройка контроллера
Создадим контроллер, в котором определим, что по корневому пути, то есть по http://localhost:8080/firstMavenWebAp/, будет происходить переход к somePage.jsp
package com.MavenWebApps.firstMavenWebApp.controller;
import org.springframework.stereotype.Controller;
@Controller
public class SimpleController {
@GetMapping(“/”)
public String goSomePage() {
return “somePage”;
}
}
Проверка работы приложения
После этого запускаем приложение стандартным образом и видим содержимое somePage.jsp:
Далее создаем Мавен проект. Для этого переходим по пути:
File > new > Maven Project
В открывшемся окне нажимаем Next.
Далее необходимо найти и выбрать archetype нашего проекта, то есть его тип. В нашем случае нам нужен самый простой maven веб-проект. Он называется maven-archetype-webapp.
Ищем его:
Теперь нужно указать GroupId — это, условно говоря, имя нашей компании или организации — и ArtifactId, то есть имя самого проекта. Подробно о том, что это такое и зачем нужно, поговорим чуть позже.
После нажатия Finish начнется создание проекта.
Maven будет подгружать из интернета всё необходимое по ходу создания проекта.
Ниже можно увидеть созданный проект:
Сразу после создания проекта в нем может не присутствовать папка java. В таком случае ее можно создать вручную.
До этого момента мы все jar файлы наших проектов скачивали и добавляли вручную в папку lib проекта.
Чтобы не делать это вручную существует Maven – средство для управления сборкой проекта и добавления зависимостей.
Зависимость – это какой-либо jar от которого зависит наш проект. Мы делаем запрос на добавление какого-либо jar файла в проект и он добавляется автоматически средствами Maven.
Добавления jar файлов происходит следующим образом:
Пишем в конфигурационном файле какие jar файлы нужны нам в проекте
Maven проверяет не скачивались ли эти jar ранее, и если скачивались, то извлекает их из локального репозитория и добавляет их в проект
Если они не скачивались то Maven автоматически скачивает их из интернета в локальный репозиторий и добавляет их в проект.
В windows все скачанные jar файлы сохраняются в локальном репозитории по пути С:\Users\<user-homedir-name>\.m2\repository
Структура Maven веб-проекта
Мавен определяет стандартную структуру веб проекта:
В папке java храним все наши классы исходники.
В папке webapp все веб ресурсы (папка WEB-INF, картинки и т.д.).
В папке resourcesразличные конф файлы.
В папке target мавен будет сохранять результаты сборки и другое.
Также может быть папка test с юнит тестами.
Конф. файл pom.xml, в котором пишутся зависимости, которые maven должен скачать всегда в корне этой структуры.
pom файл. Maven проект
Огромное преимущество Мавен в том, что созданный Мавен проект в одной IDE можно с легкостью открыть в другой.
То есть Мавен проект не зависит от IDE.
pom файл состоит из 3-х частей:
project meta data – какие либо данные о проекте(имя, версия…),
список зависимостей для скачивания,
и плагины – добавление каких-то доп. задач для запуска.
Структура Maven-проекта может отличаться, так как у разных проектов бывают разные цели — это может быть веб-приложение, консольная программа или что-то другое. Соответственно, и структура файлов и папок будет разной.
Здесь на помощь приходитMaven archetype — это шаблон (тип) Maven-проекта. При создании нового проекта можно выбрать нужный archetype, и Maven автоматически сгенерирует базовую структуру: необходимые директории и стартовые файлы, соответствующие выбранному типу проекта.
Таких архитипов на самом деле много и нужный можно найти при cоздании приложения в IDE