1. JSP-директиви

Якщо ми з'ясували, що JSP-файл перетворюється на звичайний сервлет, то в ньому можна писати звичайний Java-код. І в цьому Java-коді можна використовувати різні класи (Math із прикладу). Це ще краще! Але ми бачимо, що весь код було перенесено до методу doGet() сервлета. А отже, в нас одразу виникає кілька запитань:

  • Як зробити так, щоб код був перенесений до методу doPost()?
  • Як додати свій код до методу init()?
  • Як, зрештою, прописати імпорти класів?

Чудові питання і, звісно, на них є відповідь – JSP-директиви. Увесь не-HTML-код всередині JSP потрібно огорнути в спеціальні дужки <% та %>. Усі JSP-директиви встановлюються шаблоном:


        <%@ directive %>
        

Ось список найпопулярніших атрибутів директиви сторінки:

Приклад Опис
1 import <%@ page import="java.util.Date" %> Імпортує клас
2 contentType <%@ page contentType=text/html %> Вказує contentType
3 extends <%@ page extends="Object" %> Можна вказати базовий клас
4 info <%@ page info="Автор: Петро Іванович; версія:1.0" %> Зазначає дані для getServletInfo()
5 buffer <%@ page buffer="16kb" %> Зазначає розмір буфера відповіді
6 language <%@ page language="java" %> Встановлює мову за замовчуванням Java
7 isELIgnored <%@ page isELIgnored="true" %> Дозволяє вимкнути EL скрипти
8 isThreadSafe <%@ page isThreadSafe="false" %> Вказує на threadsafe
9 autoFlush <%@ page autoFlush="false" %> Керує записом у буфер
10 session <%@ page session="false" %> Можна вимкнути сесію для сторінки
11 pageEncoding <%@ page pageEncoding="UTF-8"%> Можна зазначити кодування сторінки
12 errorPage <%@ page errorPage="errorpage.jsp" %> Можна вказати сторінку для помилок

2. Імпорти

Давай заради цікавості додамо до нашого JSP-файлу кілька імпортів і зазначимо базовий клас.

Приклад JSP-файлу:


    <%@ page import="java.util.Date" %> 
    <%@ page import="java.lang.Math" %> 
    <%@ page extends="com.javarush.MyHttpServlet" %> 
 
    <html> 
    <body> 
    <%
        double num = Math.random();
        if (num > 0.95) {
     %>
         <h2>Ти везунчик, user!</h2><p>(<%= num %>)</p>
    <%
    }
    %> 
  </body> 
   </html> 

І ось що з нього вийде:


import java.util.Date;
import java.lang.Math;

public class HelloServlet extends com.javarush.MyHttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)  throws Exception {
    PrintWriter out = response.getWriter();
    out.print("<html>  ");
    out.print("<body> ");
        double num = Math.random();
        if (num >  0.95) {
             out.print("<h2> Ти везунчик, user! </h2> <p> (" + num + ")</p> ");
        }
    out.print("</body> ");
    out.print("</html> ");
    }
}

Працює. Чудово!