5.1 include
Есть еще несколько волшебных директив, о которых хотелось бы рассказать. Первая такая директива – это директива include. Она позволяет вставить другой файл в то место страницы, где она указана. Общий формат такой директивы имеет вид:
<%@ include file="url"%>
Можно задать не просто файл, а, например, другой jsp-сервлет, или даже url.
Пример:
<%@ include file="header.jsp"%>
<%
double num = Math.random();
if (num > 0.95) {
out.print(num);
}
%>
<%@ include file="footer.jsp"%>
Можно, например, вынести верхнюю часть всех страниц сайта в header.jsp, а нижнюю – в footer.jsp и собирать все страницы как конструктор.
5.2 forward
Помнишь, что в классических сервлетах есть возможность выполнить redirect или forward на другой url? В JSP это тоже возможно и для этого есть специальное действие. Его вид немного отличается от того, что ты видел раньше:
<jsp:forward page="url"/>
Также есть более продвинутый вариант – с параметрами:
<jsp:forward page="url" >
<jsp:param name="имя" value="значение"/>
<jsp:param name="имя" value="значение"/>
<jsp:param name="имя" value="значение"/>
</jsp:forward>
Пример:
<html>
<head>
<title>The Forward Example</title>
</head>
<body>
<center>
<h2> Forward example </h2>
<jsp:forward page="login.jsp"/>
</center>
</body>
</html>
5.3 Редирект
Для редиректа специальной директивы нет, но можно его выполнить с помощью вызова Java-кода.
Пример:
<body>
<%
String redirectURL = "https://javarush.com/";
response.sendRedirect(redirectURL);
%>
</body>
Этот пример отправит 302
редирект. Если тебе нужен 301
редирект, то надо написать на пару строк кода больше:
<body>
<%
response.setStatus(301);
response.setHeader("Location", "https://javarush.com/");
response.setHeader("Connection", "close");
%>
</body>