1. Обзор
В этом руководстве мы хотим посмотреть, как вернуть HTML из контроллера Spring MVC.
Давайте посмотрим, что нужно сделать.
2. Зависимость от Maven
Во- первых, мы должны добавить зависимость Maven spring-boot-starter-web
для нашего контроллера MVC:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<versionId>1.3.7.RELEASE</versionId>
</dependency>
3. Контроллер
Далее создадим наш контроллер:
@Controller
public class HtmlController {
@GetMapping(value = "/welcome", produces = MediaType.TEXT_HTML_VALUE)
@ResponseBody
public String welcomeAsHTML() {
return "<html>\n" + "<header><title>Welcome</title></header>\n" +
"<body>\n" + "Hello world\n" + "</body>\n" + "</html>";
}
}
Мы используем аннотацию @Controller
, чтобы сообщить DispatcherServlet
, что этот класс обрабатывает HTTP-запросы.
Затем мы настраиваем нашу аннотацию @GetMapping
для создания вывода MediaType.TEXT_HTML_VALUE
.
И, наконец, аннотация @ResponseBody
сообщает контроллеру, что возвращаемый объект должен быть автоматически сериализован в настроенный тип носителя, то есть TEXT_HTML_VALUE
или text/html
.
Без этой последней аннотации мы получили бы ошибку 404, поскольку возвращаемое значение String
по умолчанию относится к имени представления.
Имея этот контроллер, мы можем протестировать его:
curl -v localhost:8081/welcome
Вывод будет выглядеть примерно так:
> ... request ...
>
< HTTP/1.1 200
< Content-Type: text/html;charset=UTF-8
< ... other response headers ...
<
<html>
<header><title>Welcome</title></header>
<body>
Hello world
</body>
</html>
Как и ожидалось, мы видим, что Content-Type
ответа — text/html
. Кроме того, мы видим, что ответ также имеет правильный HTML-контент.
4. Вывод
В этой статье мы рассмотрели, как вернуть HTML из контроллера Spring MVC.
Как всегда, образцы кода доступны на GitHub .