Ответ
В Spring MVC загрузка страницы реализуется через @Controller, который возвращает имя представления (view name). Spring затем разрешает это имя в конкретный шаблон (HTML, JSP и т.д.) с помощью настроенного ViewResolver.
Пример базового контроллера:
@Controller
public class HomeController {
@GetMapping("/home")
public String showHomePage(Model model) {
// Добавление данных в модель для передачи в представление
model.addAttribute("welcomeMessage", "Добро пожаловать!");
model.addAttribute("serverTime", LocalDateTime.now());
// Возвращает имя представления "home"
return "home";
}
}
Ключевые аспекты:
- SSR (Server-Side Rendering): Контроллер подготавливает данные на сервере и отправляет клиенту готовый HTML.
- View Resolution: Имя
"home"преобразуется в путь к файлу (например,/templates/home.html) с помощьюThymeleafViewResolver,InternalResourceViewResolverи др. - Типы возвращаемых значений: Метод контроллера может возвращать:
String— имя представления.ModelAndView— объект, содержащий и модель данных, и имя представления.void(при использованииHttpServletResponse).
- Комбинация с REST: Один контроллер может обрабатывать и HTML-страницы (через
@Controller), и JSON API (через@ResponseBodyили отдельный@RestController).
Актуальность: Такой подход (SSR) остается востребованным для SEO-критичных страниц, административных панелей или в гибридных архитектурах, где часть контента генерируется на сервере, а часть — на клиенте (SPA).