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>