Java for Beginner
673 subscribers
541 photos
155 videos
12 files
827 links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
https://telemost.yandex.ru/j/65589337221629

Встреча создана, залетаем! 🖐
Простой Web TaskManager на Spring. Встреча от 10.11.2024

Запись нашей сегодняшней встречи -
YOUTUBE
RUTUBE

Спасибо всем кто пришел, за участие!💪

На сегодняшней встрече мы написали простейший Web TaskManager на Spring. Дополнительно к постам в канале коротко разобрали работу каждой использованной аннотации, класса и метода.

Смотрите, комментируйте, задавайте вопросы! Обязательно подписывайтесь на ютуб и рутюб каналы!!!

Ссылка на GitHub - https://github.com/Oleborn/WebTasksManager

Всем хорошего настроения! 🫡✌️
JSP и Thymeleaf как механизмы представления

В Spring MVC важное место занимают механизмы представления (view engines), которые отвечают за отображение данных на стороне клиента. JSP (JavaServer Pages) и Thymeleaf — популярные технологии, использующиеся для создания динамических страниц и интеграции с серверной логикой Spring.

1. JavaServer Pages (JSP)

JSP — это стандартная технология Java для создания динамических веб-страниц. Она позволяет внедрять Java-код в HTML при помощи тегов JSP, которые обрабатываются на сервере перед отправкой клиенту. JSP работает на сервере Apache Tomcat и является традиционным инструментом для Java-сервлетов.

Преимущества JSP:
Легкая интеграция с Java-сервлетами.
Мощный стандартный набор тегов JSP и возможность создания пользовательских тегов.
Хорошо подходит для MVC, позволяя отделять логику контроллера от представления.


Пример использования JSP: Создадим простую страницу home.jsp для отображения приветствия:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Home Page</title>
</head>
<body>
<h1>Welcome, ${username}!</h1>
</body>
</html>


Контроллер Spring для отображения этой страницы:
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HomeController {

@GetMapping("/home")
public String home(Model model) {
model.addAttribute("username", "User");
return "home"; // Отображает home.jsp
}
}
Когда клиент отправляет запрос /home, контроллер добавляет переменную username в модель, а JSP обрабатывает ее и генерирует HTML-страницу с этим значением.


2. Thymeleaf

Thymeleaf — современный Java-шаблонизатор, который стал основным выбором для Spring MVC. В отличие от JSP, он позволяет рендерить HTML-страницы на сервере, не требуя компиляции в сервлеты. Thymeleaf может работать как в режиме "offline" (без сервера), так и "online" (на сервере), что упрощает разработку и отладку представлений.

Преимущества Thymeleaf:
Легко интегрируется со Spring MVC.
Поддерживает нативные HTML-шаблоны и позволяет работать с HTML-кодом даже вне сервера.
Имеет богатый набор встроенных функций и возможностей, таких как циклы, условия, работа с формами и локализация.


Пример использования Thymeleaf: Создадим шаблон home.html с использованием Thymeleaf для отображения приветствия:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Home Page</title>
</head>
<body>
<h1>Welcome, <span th:text="${username}">User</span>!</h1>
</body>
</html>
Контроллер останется таким же, как и для JSP, так как Spring MVC подставит данные в модель одинаково для обеих технологий.


Сравнение JSP и Thymeleaf

JSP:
Поддержка HTML5 - ограничена
Обработка на сервере - необходим серверный контейнер
Поддержка Spring MVC - стандартная
Легкость отладки - ограничена

Thymeleaf:
Поддержка HTML5 - полная поддержка
Обработка на сервере - может работать offline
Поддержка Spring MVC - легкая интеграция и поддержка
Легкость отладки - высокая

Thymeleaf является более гибким и современным инструментом для работы с представлениями в Spring, а также поддерживает работу с HTML вне сервера. Это делает его популярным выбором для современных Java-разработчиков.

#Java #Training #Spring #JSP #Thymeleaf
Что выведет код?

public class Task111124_1 {
public static void main(String[] args) {
double x = Math.pow(2, 3);
double y = Math.sqrt(16);
double z = Math.floor(4.7) + Math.ceil(4.3);

double result = Math.max(x, y) - Math.min(y, z);
System.out.println(result);
}
}


#Tasks
Варианты ответа:
Anonymous Quiz
8%
2.0
17%
3.0
33%
4.0
17%
5.0
25%
Java
А что делать если я на удаленке?🧐😂

https://t.me/Java_for_beginner_dev

#Mems
Конфигурация шаблонов Thymeleaf в Spring

Thymeleaf — это мощный и гибкий шаблонизатор, который легко интегрируется с Spring Boot и Spring MVC, предоставляя возможности динамического отображения данных на основе HTML-шаблонов.

1. Конфигурация Thymeleaf в Spring Boot


При использовании Spring Boot Thymeleaf включается автоматически, если вы добавите зависимость spring-boot-starter-thymeleaf в файл pom.xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>


После добавления этой зависимости Spring Boot настроит Thymeleaf как основной механизм представления. По умолчанию шаблоны Thymeleaf должны располагаться в папке src/main/resources/templates.

Пример использования Thymeleaf в Spring Boot

Создайте HTML-шаблон greeting.html в папке src/main/resources/templates:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Greeting Page</title>
</head>
<body>
<h1 th:text="'Hello, ' + ${name} + '!'">Hello, User!</h1>
</body>
</html>


Создайте контроллер GreetingController:
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class GreetingController {

@GetMapping("/greeting")
public String greeting(@RequestParam(name = "name", required = false, defaultValue = "User") String name, Model model) {
model.addAttribute("name", name);
return "greeting";
}
}


Теперь при запросе к http://localhost:8080/greeting?name=John вы увидите страницу, приветствующую пользователя по имени: "Hello, John!".

2. Основные атрибуты Thymeleaf

Thymeleaf поддерживает множество атрибутов, которые позволяют динамически изменять содержимое страниц.

Вот некоторые из них:
th:text — вывод текста, заменяя существующее содержимое тега.
th:href — динамическое указание ссылки.
th:src — динамическое указание пути к изображению.
th:if / th:unless — условный рендеринг контента.
th:each — цикл для отображения коллекций.


Пример: Использование атрибутов th:if и th:each
В этом примере страница будет отображать список продуктов, используя Thymeleaf:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Product List</title>
</head>
<body>
<h1>Product List</h1>
<ul>
<li th:each="product : ${products}" th:text="${product}">Product Name</li>
</ul>
</body>
</html>


Контроллер:
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.Arrays;
import java.util.List;

@Controller
public class ProductController {

@GetMapping("/products")
public String productList(Model model) {
List<String> products = Arrays.asList("Laptop", "Tablet", "Smartphone");
model.addAttribute("products", products);
return "productList";
}
}
При обращении к /products пользователь увидит список товаров.


3. Конфигурация шаблонов Thymeleaf с кастомными настройками

Для кастомной настройки Thymeleaf можно использовать файл application.properties.

Например:
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.cache=false
Эти настройки изменяют путь к шаблонам, расширение файлов и управляют кэшированием (что полезно для разработки).


4. Поддержка международной локализации в Thymeleaf

Thymeleaf позволяет легко добавлять многоязычность в приложение. В Spring Boot нужно создать файл перевода, например, messages.properties, и добавить его в src/main/resources. Затем добавляем значения для разных языков (например, messages_en.properties, messages_ru.properties).

Пример:
# messages_en.properties
welcome.message=Welcome to our website!

# messages_ru.properties
welcome.message=Добро пожаловать на наш сайт!


Использование локализованных сообщений на странице:
<p th:text="#{welcome.message}">Welcome!</p>


#Java #Training #Spring #Thymeleaf
Что выведет код при обращении к URL "/hello"?

Задача по Spring. Thymeleaf. Сложность легкая.

Подробный разбор через 30 минут!🫡


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

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

@Controller
class HelloController1111 {

@GetMapping("/hello")
public String sayHello(Model model) {
model.addAttribute("name", "Spring User");
return "greeting";
}
}


#TasksSpring
Подробный разбор решения задачи Task111124_2

1. Контекст задачи:

Задача иллюстрирует работу с Thymeleaf в Spring Boot, где контроллер возвращает имя представления, которое Thymeleaf должен отобразить. Задача выявляет ошибку, связанную с отсутствием шаблона представления, и демонстрирует поведение Spring Boot в подобных ситуациях.

2. Ключевые элементы кода:

Аннотация @SpringBootApplication:
Эта аннотация указывает, что Main111124_2 является главным классом Spring Boot приложения. Она объединяет аннотации @Configuration, @EnableAutoConfiguration, и @ComponentScan, позволяя Spring Boot настраивать приложение, включая настройку Thymeleaf как механизма представлений.

Аннотация @Controller:
@Controller помечает класс HelloController1111 как контроллер Spring MVC. Это означает, что методы этого класса будут обрабатывать HTTP-запросы и возвращать имена представлений.

Метод sayHello(Model model):
Метод помечен аннотацией @GetMapping("/hello"), что делает его обработчиком GET-запросов на URL "/hello".
Model model: Этот объект передает данные от контроллера к представлению. В данном методе вызывается model.addAttribute("name", "Spring User"), добавляющий атрибут name со значением "Spring User", чтобы Thymeleaf мог его использовать в представлении.
return "greeting": Возвращает имя представления "greeting", ожидая, что Thymeleaf отобразит соответствующий файл greeting.html в папке src/main/resources/templates.


3. Сценарий работы программы:

Запуск приложения:
Программа запускается с помощью SpringApplication.run(Main1111.class, args);, и Spring Boot настраивает встроенный сервер (например, Tomcat).

Обработка запроса:
Когда поступает GET-запрос по адресу "/hello", Spring вызывает метод sayHello() в HelloController1111.
Метод sayHello() добавляет в модель атрибут name со значением "Spring User" и возвращает строку "greeting", которая должна соответствовать файлу greeting.html в каталоге представлений.


Ошибка Whitelabel Error Page:
Spring Boot использует ViewResolver для поиска представления с именем "greeting" в папке src/main/resources/templates.
Поскольку greeting.html отсутствует, ViewResolver не может найти файл, и Spring возвращает ошибку 404 Not Found с сообщением Whitelabel Error Page.
Whitelabel Error Page является стандартной страницей ошибки Spring Boot, которая появляется, если отсутствует явная настройка для страницы /error и соответствующий шаблон представления.


4. Ожидаемый результат:

Так как представление greeting.html отсутствует, будет выведена ошибка:
Whitelabel Error Page
There was an unexpected error (type=Not Found, status=404).


Это означает, что Spring Boot не смог найти требуемое представление.

5. Ключевые моменты и выводы:

Thymeleaf и ViewResolver:
ViewResolver в Spring Boot автоматически настроен на поиск шаблонов Thymeleaf в каталоге src/main/resources/templates. Если имя представления не совпадает с файлом в этом каталоге, возникает ошибка 404.

Whitelabel Error Page:
Whitelabel Error Page — это встроенная страница ошибки Spring Boot, которая отображается, когда приложение не может обработать запрос, и страница ошибки не определена. Она позволяет разработчику понять, что представление отсутствует или указано неправильно.

Использование Thymeleaf для представлений:
В Spring Boot Thymeleaf применяется для создания динамических HTML-страниц. Контроллер добавляет данные в модель, а Thymeleaf использует их для рендеринга представления.

6. Решение задачи:

Для корректного отображения страницы greeting.html нужно создать файл greeting.html в каталоге src/main/resources/templates со следующим содержимым:
<!-- src/main/resources/templates/greeting.html -->
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Greeting</title>
</head>
<body>
<p th:text="'Hello, ' + ${name} + '!'"></p>
</body>
</html>


После добавления файла, при обращении к URL "/hello", Spring Boot сможет найти шаблон, и вывод будет:

Hello, Spring User!

#Solution_TasksSpring
Всем привет!🖐

Вчера наш канал перевалил отметку в 4️⃣0️⃣0️⃣ подписчиков.

Для меня это очень важно, благодаря Вам я понимаю, что ежедневно пишу не зря, придумываю темы для воскресных лайф-кодингов и задачки (хотя порой не совсем успешно).
В планах у меня только развитие канала, введение дополнительных тем, активностей.
И если у Вас есть каких-либо идеи, без малейшего стеснения делитесь в комментариях!


От всей души благодарен каждому подписчику, кто сейчас на нашем канале, особенно тем, кто проявляет регулярную активность, гарантирую, что и дальше буду радовать Вас интересным контентом!
🫡
Формы и отправка данных в Spring MVC

В приложениях, использующих Spring MVC, формы играют важную роль, так как позволяют пользователям вводить и отправлять данные на сервер. Spring MVC предлагает удобные инструменты для работы с HTML-формами и их обработкой, включая валидацию данных и привязку к объектам модели.

Создание формы в HTML и отправка данных

Формы создаются с использованием HTML-тегов <form>, где задаются параметры, такие как метод передачи данных (GET или POST) и URL для обработки запроса. Spring MVC предлагает удобные способы интеграции данных формы в контроллеры, используя аннотации.

Пример: Создание простой формы для ввода имени пользователя и отправки его на сервер.
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>User Form</title>
</head>
<body>
<h2>Enter your name:</h2>
<form action="#" th:action="@{/submitForm}" method="post">
<label for="name">Name:</label>
<input type="text" id="name" name="name"/>
<button type="submit">Submit</button>
</form>
</body>
</html>
В этом примере форма отправляется на сервер по адресу /submitForm, используя метод POST. Поле name предназначено для ввода имени пользователя, которое будет передано в запросе.


Обработка данных формы в контроллере

Когда данные формы отправлены, контроллер Spring MVC может их обработать. Для получения данных в Spring используются аннотации @RequestParam и @ModelAttribute, что позволяет легко извлекать значения параметров и связывать их с моделью.

Пример контроллера:
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class UserController {

@PostMapping("/submitForm")
public String submitForm(@RequestParam("name") String name, Model model) {
model.addAttribute("name", name);
return "result";
}
}
В этом примере метод контроллера submitForm принимает параметр name и добавляет его в модель для дальнейшего отображения.


Работа с объектами модели

Вместо того чтобы передавать каждый параметр формы вручную, Spring MVC позволяет привязывать данные формы к объектам модели. Это удобно для работы с комплексными формами, содержащими несколько полей.

Пример: Использование объекта User для представления данных формы.

Модель User:
public class User {
private String name;

// Геттеры и сеттеры
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}


Контроллер:
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;

@Controller
public class UserController {

@PostMapping("/submitForm")
public String submitForm(@ModelAttribute User user, Model model) {
model.addAttribute("user", user);
return "result";
}
}
Здесь Spring автоматически связывает данные формы с полями объекта User, и это особенно полезно при работе с объектами, состоящими из множества свойств.


Валидация данных формы

Чтобы обеспечить правильность вводимых данных, в Spring MVC поддерживается встроенная валидация с использованием аннотаций, таких как @NotNull, @Size и других. Spring также поддерживает библиотеку Hibernate Validator для более продвинутой валидации.

Пример валидации данных формы:
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;

public class User {
@NotEmpty(message = "Name cannot be empty")
@Size(min = 3, max = 30, message = "Name must be between 3 and 30 characters")
private String name;

// Геттеры и сеттеры
}


При использовании валидации нужно добавить аннотацию @Valid к параметру метода контроллера, а также BindingResult для обработки ошибок.

#Java #Training #Spring #FormatDataOutSpringMVC
Что выведет код?

import java.util.HashMap;

public class Main121124_1 {
public static void main(String[] args) {
HashMap<Key, String> map = new HashMap<>();

map.put(new Key(1), "One");
map.put(new Key(2), "Two");
map.put(new Key(1), "New One");

System.out.println(map.size());
System.out.println(map.get(new Key(1)));
}
}

class Key {
private int id;

public Key(int id) {
this.id = id;
}
}


#Tasks
Варианты ответа:
Anonymous Quiz
43%
1, New One
33%
2, New One
24%
3, null
0%
2, null
Света это имя кукухи? 🫣🤪😂

https://t.me/Java_for_beginner_dev

#Mems
Обработка форм и привязка данных в Spring MVC

Обработка данных формы — важная часть работы с формами в Spring MVC.

Привязка данных с помощью @ModelAttribute

Аннотация @ModelAttribute позволяет автоматически привязывать данные формы к объектам модели, что делает код контроллера более чистым и понятным. Кроме того, @ModelAttribute можно использовать для подготовки данных, которые будут добавлены в модель перед рендерингом представления.

Пример использования @ModelAttribute для подготовки данных:
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class UserController {

@ModelAttribute("user")
public User user() {
return new User();
}

@RequestMapping("/showForm")
public String showForm(Model model) {
return "form";
}
}
Здесь метод user() будет вызываться каждый раз перед отображением представления, подготавливая пустой объект User для формы.


Валидация и обработка ошибок

Валидация позволяет убедиться, что данные формы соответствуют определенным требованиям, прежде чем обрабатывать их. В Spring MVC для валидации используется аннотация @Valid, а для обработки ошибок — BindingResult.

Пример контроллера с валидацией:

import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;

@Controller
public class UserController {

@PostMapping("/submitForm")
public String submitForm(@Valid @ModelAttribute("user") User user, BindingResult result, Model model) {
if (result.hasErrors()) {
return "form"; // Возвращаемся к форме, если есть ошибки
}
return "result";
}
}
Здесь, если есть ошибки валидации, представление form снова отобразится, и пользователь сможет исправить ошибки.


Отображение ошибок на странице

Spring MVC позволяет легко отображать ошибки валидации в представлении с использованием Thymeleaf или JSP. Например, используя Thymeleaf, ошибки можно вывести следующим образом:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>User Form</title>
</head>
<body>
<form th:action="@{/submitForm}" method="post" th:object="${user}">
<label for="name">Name:</label>
<input type="text" id="name" th:field="*{name}"/>
<p th:if="${#fields.hasErrors('name')}" th:errors="*{name}">Name Error</p>
<button type="submit">Submit</button>
</form>
</body>
</html>


#Java #Training #Spring #FormatDataInSpringMVC
Работа с комплексными объектами

Когда форма состоит из нескольких связанных объектов, Spring MVC позволяет легко привязывать их к объектам модели. Например, если у пользователя есть адрес, форма может включать поля для адреса, и Spring MVC автоматически привяжет их к соответствующему объекту.

Пример: форма для объекта пользователя с вложенным адресом.

Классы модели:
public class User {
private String name;
private Address address;

// Геттеры и сеттеры
}

public class Address {
private String street;
private String city;

// Геттеры и сеттеры
}


Форма Thymeleaf:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>User Form</title>
</head>
<body>
<form th:action="@{/submitForm}" method="post" th:object="${user}">
<label for="name">Name:</label>
<input type="text" id="name" th:field="*{name}"/>

<h3>Address</h3>
<label for="street">Street:</label>
<input type="text" id="street" th:field="*{address.street}"/>

<label for="city">City:</label>
<input type="text" id="city" th:field="*{address.city}"/>

<button type="submit">Submit</button>
</form>
</body>
</html>


Контроллер для обработки данных формы:
import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;

@Controller
public class UserController {

@PostMapping("/submitForm")
public String submitForm(@Valid @ModelAttribute("user") User user, BindingResult result) {
if (result.hasErrors()) {
return "form"; // Возвращаемся к форме, если есть ошибки
}
return "result";
}
}


#Java #Training #Spring #FormatDataInSpringMVC
@ModelAttribute в Spring MVC

Аннотация
@ModelAttribute в Spring MVC используется для связывания данных запроса с объектами модели и передачи данных между контроллерами и представлениями.

Она выполняет несколько важных функций:
Связывает данные запроса с полями объекта, который затем передается в контроллер.
Позволяет инициализировать и передавать значения в представление перед вызовом методов контроллера.
Используется для создания или заполнения объекта модели, который передается в представление.


Основные сценарии использования @ModelAttribute

Передача данных в представление: @ModelAttribute позволяет передавать данные, которые могут понадобиться представлению.
Связывание данных формы с объектом модели: автоматическая привязка данных из форм к полям объекта модели.
Предварительная инициализация данных: метод, аннотированный
@ModelAttribute, выполняется перед всеми методами контроллера, подготавливая необходимые данные.

Передача данных в представление с @ModelAttribute

Когда @ModelAttribute используется над методом, его результат становится доступным для всех представлений, обрабатываемых контроллером.

Пример использования:
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class ExampleController {

@ModelAttribute("message")
public String populateMessage() {
return "Welcome to Spring MVC!";
}

@GetMapping("/greet")
public String greetPage() {
return "greet";
}
}
Здесь метод populateMessage инициализирует строку и добавляет ее в модель. Теперь, при отображении представления greet.html, переменная message будет доступна.


greet.html:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Greeting Page</title>
</head>
<body>
<h1 th:text="${message}">Default Message</h1>
</body>
</html>


Связывание данных формы с объектом модели

Аннотация @ModelAttribute также позволяет автоматически привязывать данные формы к объекту модели. Рассмотрим пример формы, которая принимает данные пользователя, такие как имя и адрес электронной почты.

Класс модели User:
public class User {
private String name;
private String email;

// Геттеры и сеттеры
}


HTML-форма для ввода данных:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>User Form</title>
</head>
<body>
<form th:action="@{/submitForm}" method="post" th:object="${user}">
<label for="name">Name:</label>
<input type="text" id="name" th:field="*{name}"/>

<label for="email">Email:</label>
<input type="email" id="email" th:field="*{email}"/>

<button type="submit">Submit</button>
</form>
</body>
</html>


Контроллер для обработки данных:
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;

@Controller
public class UserController {

@PostMapping("/submitForm")
public String submitForm(@ModelAttribute("user") User user, Model model) {
model.addAttribute("userData", user);
return "result";
}
}
Когда форма отправляется, Spring MVC автоматически связывает значения полей формы с полями объекта User, используя аннотацию @ModelAttribute.


#Java #Training #Spring #ModelAttribute
Что выведет код?

import java.util.LinkedList;

public class Task131124_1 {
public static void main(String[] args) {
LinkedList<Integer> list = new LinkedList<>();
list.add(1);
list.add(2);
list.add(3);
list.addFirst(0);
list.addLast(4);

list.remove(1);
list.add(1, 10);

System.out.println(list.getFirst());
System.out.println(list.getLast());
System.out.println(list.get(2));
System.out.println(list.size());
}
}


#Tasks
Ну ведь для чего то они нужны?🧐😂

https://t.me/Java_for_beginner_dev

#Mems