Читать «Java 7 (Наиболее полное руководство)» онлайн - страница 426
Ильдар Шаукатович Хабибуллин
5. Что означает процедура установки сервлета?
6. Может ли сервлет отправить клиенту не страницу HTML, а другой документ?
7. Может ли сервлет обрабатывать параллельно несколько запросов?
8. Могут ли сервлеты, установленные в один контейнер, обмениваться информацией?
9. Может ли сервлет установить сеанс связи с клиентом?
ГЛАВА 27
Страницы JSP
Как видно из приведенных в предыдущей главе листингов, большую часть сервлета занимают операторы вывода в выходной поток тегов HTML, формирующих результат — страницу HTML. Эти операторы почти без изменений повторяются из сервлета в сервлет. Возникла идея не записывать теги HTML в операторах Java, а, наоборот, записывать операторы Java в коде HTML с помощью тегов специального вида. Затем обработать полученную страницу препроцессором, распознающим все теги и преобразующим их в код сервлета Java.
Так получился язык разметок JSP (JavaServer Pages), расширяющий язык HTML тегами вида <%
Программист может даже расширить язык JSP своими собственными, как говорят,
В листинге 27.1 приведен пример JSP-страницы "Hello, World!" с текущей датой.
Листинг 27.1. Простейшая страница JSP
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN"> <%@ page contentType=Mtext/html;charset=windows-1251M %>
<%@ page import="java.util.*, java.text.*" %> <html><head><title> Простейшая страница JSP </title>
<META http-equiv=Content-Type
content="text/html; charset=windows-1251">
</head><body>
Hello, World!<p>
Сегодня <%= getFormattedDate() %>
</body></html>
String getFormattedDate(){
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy hh:mm"); return sdf.format(new Date());
}
%>
Контейнер сервлетов расширили препроцессором, переводящим запись, подобную листингу 27.1, в сервлет. В контейнере сервлетов Tomcat такой препроцессор называется Jasper. Препроцессор срабатывает автоматически при первом обращении к странице JSP. Полученный в результате его работы сервлет тут же компилируется и выполняется. Откомпилированный сервлет затем хранится в контейнере, так же как и все сервлеты, и выполняется при следующих вызовах страницы JSP.
Для сервлетов и страниц JSP придумано общее название —
Весь статический текст HTML, называемый в документации JSP