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> ");
}
}
Працює. Чудово!
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ