Ответ
В Spring MVC контроллер возвращает имя представления (View) в виде строки. Механизм ViewResolver затем сопоставляет это имя с конкретным шаблоном (JSP, Thymeleaf, FreeMarker) для рендеринга.
Типичный поток работы:
- Запрос поступает в метод контроллера, аннотированный
@GetMapping,@PostMappingи т.д. - Контроллер обрабатывает параметры, вызывает сервисный слой (бизнес-логику) и помещает результаты в объект
Model. - Контроллер возвращает
Stringс именем представления. ViewResolverнаходит физический файл шаблона по этому имени (например, в/WEB-INF/views/).- Движок шаблонов рендерит представление, подставляя данные из
Model, и отправляет HTML клиенту.
Пример с Thymeleaf:
@Controller
public class GreetingController {
@GetMapping("/greet")
public String showGreeting(Model model) {
// Добавляем атрибут в модель для передачи в представление
model.addAttribute("message", "Hello, Spring MVC!");
// Возвращаем логическое имя представления.
// ViewResolver преобразует 'greetPage' в '/WEB-INF/views/greetPage.html'
return "greetPage";
}
}
Ключевые моменты:
- Для REST API (возврат JSON) используется
@RestController(комбинация@Controller+@ResponseBody). - Можно явно возвращать объект
ModelAndView. - Префикс, суффикс и путь к шаблонам настраиваются в конфигурации
ViewResolver.