JSP (Java Server Pages) — технология, позволяющая веб-разработчикам легко создавать содержимое, которое имеет как статические, так и динамические компоненты. По сути, страница JSP является текстовым документом, который содержит текст двух типов: статические исходные данные, которые могут быть оформлены в одном из текстовых форматов (HTML, XML), и JSP элементы, которые конструируют динамическое содержимое.
JSP — одна из высокопроизводительных технологий. Контейнеры сервлетов, способные исполнять JSP страницы, написаны на языке Java, который может работать на различных платформах. JSP страницы загружаются на сервере, а весь код страницы транслируется в java код сервлета, и затем компилируется в байт-код виртуальной машины java (JVM).
Комментарии могут быть вставлены двумя способами
<%-- comment --%> Или <!-- comment -->
Служат для объявления переменных и методов, которые будут в дальнейшем использованы на jsp страничке. Можно также использовать один из двух видов написания:
<%! declaration; [ declaration; ]+ ... %>
или
<jsp:declaration> code fragment [ declaration; ]+ ... </jsp:declaration>
Например:
<%! int i = 0; %> <%! int a, b, c; %> <%! Circle a = new Circle(2.0); %>
В самом теле объявления, мы можем объявить и проинициализировать переменные, перед их дальнейшем использовании. Сам текст объявления полностью соответствует синтаксису языка Java.
Данный тег содержит в себе выражение на языке Java. Выглядеть он будет следующим образом:
<%= expression %>
или
<jsp:expression> expression </jsp:expression>
Например:
Текущее время: <%= new java.util.Date() %> Имя вашего хоста: <%= request.getRemoteHost() %>
Выражение внутри тега вычисляется, преобразуется к типу String и будет вставлено в ответ (response). Заметьте, что выражение может быть только одно и в его конце нет точки с запятой.
Позволяют вставить в JSP страницу любое количество выражений и объявлений языка Java.
<% code fragment %>
или
<jsp:scriptlet> code fragment </jsp:scriptlet>
Например:
<% if (Math.random() < 0.5) { %> <B>Удачного</B> вам дня! <% } else { %> <B>Неудачного</B> вам дня! <% } %>
Скриплеты также имеют доступ к тем же заранее определённым переменным, что и выражения.
JSP страница может послать сообщение соответствующему контейнеру с указаниями какие действия необходимо провести. Эти сообщения называются директивами. Все директивы начинаются с <%@, затем следует название директивы и один или несколько атрибутов со значениями, и заканчиваются %>
Служит для включения в JSP страницу статичного файла. Синтаксис:
<%@ include file="relativeURL" %>
или
<jsp:directive.include file="relativeURL" />
Например:
include.jsp:
<html> <head><title>An Include Test</title></head> <body bgcolor="white"> <font color="blue"> The current date and time are <%@ include file="date.jsp" %> </font> </body> </html>
date.jsp:
<%@ page import="java.util.*" %> <%= (new java.util.Date() ).toLocaleString() %>
На странице выведется:
The current date and time are
Jul 24, 2012 12:01:40
Директива include вставляет текст или код из файла в JSP страницу во время трансляции, когда JSP файл уже откомпилирован. Процесс вставки статичен, т.е. текст из включаемого файла просто будет добавлен в JSP страницу. URL также может содержать путь к файлу, например, «directory1/directory2/date.jsp».
Предоставляет атрибуты для JSP страницы. Атрибуты, определённые в этой директиве, внедряются в данную JSP страницу и на все её вложенные статические элементы. Синтаксис:
<%@ page [ language="java" ] [ extends="package.class" ] [ import="{package.class | package.*}, ..." ] [ session="true|false" ] [ buffer="none|8kb|sizekb" ] [ autoFlush="true|false" ] [ isThreadSafe="true|false" ] [ info="text" ] [ errorPage="relativeURL" ] [ contentType="mimeType [ ; charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ] [ isErrorPage="true|false" ] [ pageEncoding="characterSet | ISO-8859-1" ] [ isELIgnored="true|false"] %>
или
<jsp:directive.page [ language="java" ] [ extends="package.class" ] [ import="{package.class | package.*}, ..." ] [ session="true|false" ] [ buffer="none|8kb|sizekb" ] [ autoFlush="true|false" ] [ isThreadSafe="true|false" ] [ info="text" ] [ errorPage="relativeURL" ] [ contentType="mimeType [ ; charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ] [ isErrorPage="true|false" ] [ pageEncoding="characterSet | ISO-8859-1" ] [ isELIgnored="true|false"] />
Например: <java java> <%@ page import=«java.util.*, java.lang.*» %> <%@ page buffer=«5kb» autoFlush=«false» %> <jsp:directive.page errorPage=«error.jsp» /> </code>
Каждый атрибут, за исключением import, может быть использован только один раз. Далее рассмотрим некоторые атрибуты директивы page:
import=пакет.class1, пакет.class2, …, пакет.classN — Позволяет вам задать пакеты.
language=java — Данный атрибут предназначен для задания используемого языка программирования.
buffer=размерkb|none — Данный атрибут задаёт объём буферной памяти.
autoflush=true|false — Значение true устанавливает, что при переполнении буферной памяти он автоматически очистится.
errorPage=url — Задаёт JSP страницу, которая вызывается в случае возникновения ошибок и исключений.