2.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.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> ");
}
}
Работает. Отлично!
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ