Инструменты пользователя

Инструменты сайта


develop:java:mvc

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
develop:java:mvc [2023/04/02 11:49]
admin
develop:java:mvc [2024/04/14 05:28] (текущий)
admin [Пример приложения]
Строка 45: Строка 45:
  
 ====== MVC Spring-boot ====== ====== MVC Spring-boot ======
- 
 ===== Пример приложения ===== ===== Пример приложения =====
-==== Создание проекта ==== 
 В interprise версии Idea можно создать spring boot проект из меню, в community этого нет, можно сгенерировать проект на офф. сайте [[https://start.spring.io|start.spring.io]], скачать/распаковать и открыть проект в Idea\\ В interprise версии Idea можно создать spring boot проект из меню, в community этого нет, можно сгенерировать проект на офф. сайте [[https://start.spring.io|start.spring.io]], скачать/распаковать и открыть проект в Idea\\
 Результат впринципе тот же, там в меню галочками выбираем пакеты которые нужно добавить, здесь все это сразу пишем в "pow" файл, в случае с maven, и все чики-пики\\ Результат впринципе тот же, там в меню галочками выбираем пакеты которые нужно добавить, здесь все это сразу пишем в "pow" файл, в случае с maven, и все чики-пики\\
Строка 56: Строка 54:
 <code java> <code java>
 package com.spring0.spring0; package com.spring0.spring0;
- 
 import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
Строка 70: Строка 67:
 </code> </code>
  
-pow.xml+pom.xml
 <code xml> <code xml>
 <?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
Строка 152: Строка 149:
 </code> </code>
  
-greeting+greeting.html
 <code html> <code html>
 <!DOCTYPE HTML> <!DOCTYPE HTML>
Строка 167: Строка 164:
 </details> </details>
  
 +
 +<details>
 <summary>Создаем контроллер, подпакет "controller"</summary> <summary>Создаем контроллер, подпакет "controller"</summary>
 HelloWorldController.java HelloWorldController.java
Строка 191: Строка 190:
 В данном классе есть метод, с мапингом на адрес "greeting", данный метод сработает если кто то перейдет на данный адрес\\ В данном классе есть метод, с мапингом на адрес "greeting", данный метод сработает если кто то перейдет на данный адрес\\
  
-Метод должен возвращать строку с именем страницы, в данном случае "greeting.html", она и открывается при выполнении метода\\+Метод должен возвращать строку с именем страницы, в данном случае **"greeting.html"**, она и открывается при выполнении метода\\ 
 Так же, через объект "Model", аттрибутом, передается переменная "name", которая используется в веб странице, загружая тем самым динамическое содержимое\\ Так же, через объект "Model", аттрибутом, передается переменная "name", которая используется в веб странице, загружая тем самым динамическое содержимое\\
 +
 В эту переменную, параметр, можно передать значение в url, типа "/greeting?name=Amigo", используется оно либо дефолтное\\ В эту переменную, параметр, можно передать значение в url, типа "/greeting?name=Amigo", используется оно либо дефолтное\\
  
 [[https://javarush.com/groups/posts/2537-chastjh-8-pishem-neboljhshoe-prilozhenie-na-spring-boot|источник]]\\ [[https://javarush.com/groups/posts/2537-chastjh-8-pishem-neboljhshoe-prilozhenie-na-spring-boot|источник]]\\
 +
 +
 +
 +===== Maven =====
 +Самостоятельный инструмент для управления и сборки проектов, так же присутствует (да и встраивается) в IDE, в т.ч. Intellij\\
 +
 +Стандартная структура проекта maven:\\
 +  * src/main/java - основные java классы
 +  * src/test/java - для тестов
 +  * src/main/resources - ресурсы, которые используются в приложении (html страницы, картинки, css и т.д.)
 +Так же обязателен файл **pow.xml**, главный файл для управления работой мавена\\
 +
 +
 +==== Управление зависимостями ====
 +Зависимости перечисляются в теге **"dependencies"**\\
 +Всегда задаются как минимум три параметра: "groupId", "artifactId" и "version"\\
 +Узнать эти параметры можно на офф сайте пакета либо на сайте [[https://mvnrepository.com/|maven-репозитория]]. Репозитории кстати есть локальный, приоритетный и внешний\\
 +Пример блока "dependencies"\\
 +<code xml>
 +<dependencies>
 +  <dependency>
 +     <groupId>commons-io</groupId>
 +     <artifactId>commons-io</artifactId>
 +     <version>2.6</version>
 +  </dependency>
 +</dependencies>
 +</code>
 +
 +
 +===== Аннотации =====
 +
 +**Controller** – специальный тип класса, применяемый в MVC приложениях. Похож на обычный сервлет HttpServlet, работающий с объектами HttpServletRequest и HttpServletResponse, но с расширенными возможностями от Spring Framework.\\
 +
 +**Repository** – указывает, что класс используется для задания перечня
 +необходимых работ по поиску, получению и сохранению данных. Аннотация может использоваться для реализации шаблона DAO.\\
 +
 +**Service** – указывает, что класс является сервисом для реализации бизнес логики.\\
 +
 +**Configuration** – эта аннотация используется для классов, которые определяют bean-компоненты.\\
 +
 +**Autowired** – аннотация позволяет автоматически установить значение поля. Функциональность этой аннотации заключается в том, что нам не нужно заботиться о том, как лучше всего Bean'у передать экземпляр другого Bean'a. Spring сам найдет нужный Bean и подставит его значение в свойство, которое отмечено аннотацией.\\
 +
 +**Bean** - компоненты которые создаются и управляются контейнером "Spring IoC"\\
 +<details>
 +<summary>:!: Spring IoC</summary>
 +Inversion of Control - процесс, в котором объект определяет свои зависимости (вложенные объекты например) не объявляя их. Этот объект делегирует работу с такими зависимостями контейнеру "IoC"\\
 +
 +Например класс А содержит в своем свойстве объект класса Б, для инициализации первого объекта, нужно сначала явно создать объект второго, с помощью контейнера IoC этого можно избежать\\
 +
 +Пример объявления
 +<code java>
 +@Component
 +public class Company {
 +    // this body is the same as before
 +}
 +
 +@Configuration
 +@ComponentScan(basePackageClasses = Company.class)
 +public class Config {
 +    @Bean
 +    public Address getAddress() {
 +        return new Address("High Street", 1000);
 +    }
 +}
 +
 +////////
 +ApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
 +
 +Company company = context.getBean("company", Company.class);
 +assertEquals("High Street", company.getAddress().getStreet());
 +assertEquals(1000, company.getAddress().getNumber());
 +</code>
 +</details>
 +
 +
 +
 +===== Установка =====
 +
 +[[https://maven.apache.org/install.html|Дока]]\\
 +Скачать дистрибутив, распаковать, добавить путь **bin/mvn** в переменную **PATH**
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
  
develop/java/mvc.1680436182.txt.gz · Последнее изменение: 2023/04/02 11:49 — admin