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 та збирати усі сторінки як конструктор.

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>

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>