Компьютеры Windows Интернет

Условные конструкции. Рабочая среда Eclipse. Идентификаторы в Java

В основе синтаксиса языка Java лежит синтаксис языка C. Но имеются следующие отличия:

идентификаторы :

  • при записи идентификатора могут использоваться как латинские буквы, так и буквы национальных алфавитов.
  • идентификатор может содержать знак доллара .

Вот основные правила синтаксиса

  • Прописные и строчные буквы считаются разными символами, поэтому J и j относятся совершенно к разным переменным.
  • При записи идентификатора используются латинские буквы и буквы национальных алфавитов, цифры, знак подчеркивания и знак доллара. Идентификатор не может начинаться с цифры и содержать пробельные символы. Длина идентификатора не ограничена, но ради удобства чтения программы необходимо стремиться использовать короткие и осмысленные имена.
  • Существуют два вида комментариев.
    • Многострочный комментарий. Комментарии в тексте заключаются в скобки вида
      /* это текст комментария */
      и могут вводиться в любом месте, в частности и внутри операторов.
    • Однострочный комментарий. Комментарий вида:
      //это текст комментария – действует только до конца строки
  • Каждое предложение заканчивается « ; ».
  • В строке можно размещать несколько операторов.
  • Фигурные скобки { } означают составной оператор. Все операторы, помещенные между ними, воспринимаются как один оператор.
  • Все используемые типы должны быть описаны до их первого использования. Объявления могут располагаться в любом месте программы.
  • Символ заключается в одинарные кавычки, строка в двойные.

Ключевые слова

Ключевые слова имеют специальное значение для компилятора и эти слова можно использовать только в том смысле, в котором они определены. В качестве пользовательских идентификаторов зарезервированные слова использоваться не могут.

Любое изменение в переменных одного изменяет переменные другого. Когда объект объявлен, извлекается адрес ячейки памяти, который обычно является адресом первой ячейки памяти зарезервированной области, содержащей все данные, относящиеся к объекту. Любые манипуляции с этим объектом относятся к этому адресу. Сравнение двух экземпляров объекта выполняется по ссылкам этих экземпляров.

Пример кода перечисления в Java

Это процесс, который добавляет функциональность классу без необходимости переписывать весь код в этом классе. Новый класс наследует все данные и методы класса, из которого он получен. Тогда необходимо, чтобы в материнском классе существовал конструктор без параметра. Например, для рисования сплошных прямоугольников можно использовать другой подход, чем тот, который уже был рассмотрен, например, путем создания нового прямоугольного класса, который наследует прямоугольный родительский класс. к данным прямоугольника, они должны быть общедоступными, что противоречит принципу инкапсуляции.

В языке Java зарезервированы следующие слова ключевые слова

Зарезервированные слова true , false и null не являются ключевыми, но их нельзя использовать в качестве идентификаторов в программе.

Ключевые слова можно разбить по группам:

Решение состоит в том, чтобы определить переменные класса с защищенным модификатором. Члены класса, защищенного «защищенным», доступны из производных классов, но не из других классов. Нажмите в контексте апплета, чтобы активировать его. Многие языки допускают передачу аргументов либо по значению, либо по адресу. Поскольку фактические адреса аргументов неизвестны методом, метод не может их модифицировать.

Что такое условная структура?

В случае прохождения аргумента на адрес адрес метода переменной аргумента передается методу: изменения, внесенные в значение переменной методом, являются немедленными и окончательными. Условные структуры называются инструкциями для проверки, является ли условие истинным или нет. Эти условные структуры могут быть связаны со структурами, которые повторяются в соответствии с реализацией условия, эти структуры называются петлевыми структурами.

Примитивные типы данных

byte, short, int, long, char, float, double, boolean

Циклы и ветвления

if, else, switch, case, default, while, do, break, continue, for

Исключения

try, catch, finally, throw, throws

Области видимости private, protected, public
Объявление, импорт

import, package, class, interface, extends, implements, static, final, void, abstract, native

Более короткий способ проведения теста

Синтаксис этого выражения. Можно провести испытание с гораздо менее тяжелой структурой благодаря следующей структуре, называемой тройным оператором.

  • Условие должно быть между круглыми скобками.
  • Когда условие истинно, выполняется левая инструкция.
  • Когда условие является ложным, выполняется правильная инструкция.
Когда тестовое выражение равно одному из значений, следующих за полем, выполняется следующий список команд.

Ocновные операции языка

Ключевое слово по умолчанию предшествует списку операторов, которые будут выполняться, если выражение никогда не будет равно одному из значений. Эти структуры иногда называют повторяющимися инструкциями или итерациями. Наиболее распространенным способом выполнения цикла является создание счетчика и остановка цикла, когда счетчик превышает определенное значение.

Создание, возврат, вызов

new, return, this, super

Многопоточность

synchronized, volatile

Зарезервированные ключевые слова
Специальное назначение

instanceof, enum, assert, transient, strictfp

Знаки операций

Знаки операций предназначены для обозначения арифметических, логических и других действий. Наиболее часто используемые знаки операций приведены в таблице

Этот оператор выполняет список команд, пока выполняется условие. Может потребоваться цикл одного или нескольких значений без окончания цикла. Синтаксис этого выражения является «непрерывным», он обычно ассоциируется с условной структурой, иначе линии между этой инструкцией и концом цикла будут устаревшими.

Соответствующие дискуссии, найденные на форуме

К счастью, благодаря непрерывной инструкции можно рассматривать это значение отдельно, а затем продолжить цикл! Напротив, может потребоваться остановить цикл преждевременно, для другого условия, чем указанное в заголовке цикла. У нас будет три аспекта идентификаторов, которые вы должны усвоить. Действительные идентификаторы: правила, используемые компилятором для определения того, является ли имя действительным. Вы должны знать и использовать их в своих будущих приложениях. . Идентификатор - это имя, которое идентифицирует класс, переменную или метод в программе.

Операция Краткое описание
+ Сложение
- Вычитание
* Умножение
/ Деление
= Присвоение
++

Инкремент (увеличение на 1); x++; эквивалентно x=x+1;

--

Декремент (уменьшение на 1); x--; эквивалентно x=x-1;

+= y+=x; эквивалентно y=y+x;
-= y-=x; эквивалентно y=y-x;
*= y*=x; эквивалентно y=y*x;
/= y/=x; эквивалентно y=y/x;
%= y%=x; эквивалентно y=y%x;
== Равно
!= не равно
> Больше
< Меньше
>= больше или равно
<= меньше или равно
% остаток от целочисленного деления
&& логическое И
|| логическое ИЛИ
! логическое отрицание НЕ

Примечание.

Вот правила, которые вам нужно знать. На практике нет ограничений на количество символов, которые может содержать идентификатор. Вы не можете использовать ключевое слово в качестве идентификатора в своих программах.

  • Он не должен начинаться с числа.
  • Ниже приведен полный список доступных ключевых слов.
Вот несколько примеров действительных идентификаторов.

Вот несколько примеров недопустимых идентификаторов, вы должны знать, почему. Если вы согласны с этими соглашениями и начнете кодирование, они позволят вам уменьшить усилия, связанные с тестированием, обслуживанием и улучшением. А также подумайте о фигурных скобках, их иногда пишут в одной строке, что делает код неразборчивым.

          1. Деление
            • Если делятся два целых числа, то имеем результат целочисленного деления:
              5/3 = 1. А вот остаток от целочисленного деления равен 5%3 = 2.
            • если один из аргументов вещественное число, то имеем обычное деление:
              5 / 2.0 = 2.5
          2. Инкрементирование и декрементирование

Имеется две формы инкремента: префиксная форма, постфиксная форма.

Кроме того, имена обычно должны быть комбинацией имени глагола. . Это просто частные переменные экземпляра. Единственный способ, которым они могут получить доступ из-за пределов своего класса, - это методы класса. Методы, которые изменяют значение свойства, называются сеттерами, а методы, которые получают значение свойства, называются геттерами. Имейте в виду, что не обязательно иметь переменную именованную метку в вашем классе. Имя свойства выводится из геттеров и сеттеров, а не из переменных в вашем классе. Модель событий часто используется в графических приложениях, когда запускается событие, подобное щелчку, другие объекты которые могут иметь методы лечения, когда это событие происходит, получают информацию.

Префиксная форма

Cначала произойдет увеличение (или уменьшение) переменной на единицу, затем с новым значением будет произведены дальнейшие вычисления

int a = 5; int b = 5; int y= 10 + --a; int z= 10 + ++b; System.out.println("a= "+a); System.out.println("b= "+b); System.out.println("y= "+y); System.out.println("z= "+z);

Будет выведено:

a= 4
b= 6
y= 14
z= 16

В данном примере переменная a сначала уменьшается на 1, b увеличится на единицу, а потом произойдет вычисления выражения для y и z .

Эти объекты называются слушателями. Имена методов, используемые для добавления слушателя с источником события, должны использовать префикс добавления, за которым следует тип слушателя. Имена методов, используемые для удаления слушателя, должны использовать префикс удаления, за которым следует тип слушателя, используя те же правила, что и метод добавления записи. Тип слушателя, который необходимо добавить или удалить, должен быть передан в качестве аргумента для метода. Помните, что допустимый идентификатор для переменной также является допустимым идентификатором для метода или класса.

Постфиксная форма

Для постфиксной формы сначала выполняется расчет выражения со старым значением переменной и значение переменной увеличивается (или уменьшится) на единицу после вычисления выражения.

int a = 5; int b = 5; int y= 10 + a--; int z= 10 + b++; System.out.println("a= "+a); System.out.println("b= "+b); System.out.println("y= "+y); System.out.println("z= "+z);

Будет выведено:
a= 4
b= 6
y= 15
z= 15

Другими словами, вы должны признать, что идентификатор является законным, даже если он не соответствует стандартам именования. Здесь мы имеем дело с одной из важнейших глав: условия - это еще одно фундаментальное понятие программирования. В классе чтение и выполнение выполняются последовательно, то есть по строкам. С условиями мы сможем управлять разными сценариями, не читая весь код. Вы быстро поймете, что все ваши проекты - это только последовательности и взаимосвязи условий и циклов.

Пойдем прямо к сути дела. Прежде чем вы сможете создавать и оценивать условия, вам нужно будет знать, что для этого мы будем использовать так называемые «логические операторы». Они в основном используются в условиях для оценки различных возможных случаев. знать.

Вычисление выражения будет происходить со старым значением переменных. После вычисления выражений для y и z переменная a уменьшается на 1, переменная b увеличится на единицу.

Логические операции

Если первое значение в операции «&&» ложно, то второе значение не проверяется, в операции «или» наоборот, если первое значение истинно, то второе не проверяется.

Для последнего вы лучше поймете пример, который будет приведен в конце этой главы. Это позволяет указать условие «Тот же бой, что и предыдущий». . Представьте себе программу, которая просит пользователя ввести относительное целое. Условные структуры позволят нам управлять этими тремя сценариями. Структура этих условий выглядит следующим образом.

Давайте применим наш маленький пример. В этом случае наш класс отображает «число положительное». Давайте объясним, что происходит. Когда вы представили нам структуру условий, вы кладете фигурные скобки, и там вы их не ставите. Фактически, фигурные скобки присутствуют в «нормальной» структуре условий, но когда код внутри одного из них состоит только из одной линии, фигурные скобки становятся необязательными.

Таблица истинности операций «&&», «||»

A B A && B A || B
False False False False
False True False True
True False False True
True True True True

Вот пример.

Это называется отступом! Будет очень полезно найти вас в ваших будущих программах. Представьте себе две секунды, что у вас есть программа из 700 строк с 150 условиями и что все написано вдоль левого края. Трудно будет отличить тесты от кода. Прежде чем двигаться дальше, вы должны знать, что вы не можете проверить равенство строк! Мы обсудим этот момент позже. Теперь мы будем использовать логические операторы, которые мы видели вначале, проверяя, принадлежит ли данное число известному интервалу.

Например, будет проверено, является ли целое число от 50 до. Этот оператор вводит вас в понятие пересечения множеств. Здесь мы имеем два условия, каждый из которых определяет множество. Таким образом, условие перегруппирует числа, принадлежащие этим двум наборам, то есть числа от 51 до 99 включительно. Рассмотрим интервал, который вы хотите определить.

boolean a = true; boolean b = true; boolean c = false; boolean d = false; System.out.println("true && true=" + (a&&b)); // true true результат true System.out.println("true && false=" + (a&&c)); // true false результат false System.out.println("false && true=" + (c&&a)); // false ture результат false System.out.println("false && frue=" + (c&&d)); // false false результат false System.out.println("true || true=" + (a||b)); // true true результат true System.out.println("true || false=" + (a||c)); // true false результат true System.out.println("false || true=" + (c||a)); // false ture результат true System.out.println("false || false=" + (c||d)); // false false результат false

Переключатель в основном используется, когда мы хотим, чтобы условия «а ля карт». Возьмем пример опроса с двумя вопросами: для каждого из них мы можем получить только 0 или 10 баллов, что дает нам три примечания и, следовательно, три возможных оценки, например.

Приходите перечитать эту главу по случаю. . В этом случае мы используем переключатель, чтобы избежать лишнего, если многократно, и немного облегчить код. Вот операции, выполняемые этим выражением. Класс оценивает выражение после коммутатора, в противном случае он переходит к следующей вкладке и так далее. Чтобы лучше оценить полезность этой инструкции, удалите все перерывы; и скомпилируйте свою программу. Тройные условия довольно сложны и относительно мало используются. Особенность этих условий заключается в том, что задействованы три операнда, но также и то, что эти условия используются для присвоения данных переменной.

Будет выведено:

true && true=true
true && false=false
false && true=false
false && false=false
true || true=true
true || false=true
false || true=true
false || false=false

Страницы JSP имеют комбинированный синтаксис: объединение стандартного синтаксиса, соответствующего спецификации HTML, и синтаксиса JSP, определенного спецификацией Java Server Pages. Синтаксис JSP определяет правила записи страниц JSP, состоящих из стандартных тегов HTML и тегов JSP.

Вот как выглядит структура этого типа. Украсьте, что происходит. Назначение действует: вы можете использовать свою максимальную переменную. Вы также можете выполнять вычисления, прежде чем влиять на значения. Не забывайте, что значение, которое вы собираетесь назначить переменной, должно быть того же типа, что и ваша переменная. Также обратите внимание, что ничто не мешает вам вставить трехмерное условие в другое тернарное условие.

Условия позволяют выполнять только определенные фрагменты кода. . Если блок команд содержит более одной строки, вы должны окружать его фигурными фигурными скобками, чтобы четко определить начало и конец блока команд. Чтобы иметь возможность поставить условие на место, вы должны сравнивать переменные с помощью логических операторов.

Страницы JSP, кроме HTML-тегов, содержат теги JSP следующих категорий:

JSP директивы

JSP директивы обеспечивают глобальную информацию, касающихся конкретных запросов, направляемых в сервер, и предоставляют информацию, необходимую на стадии трансляции. Директивы всегда помещаются в начале JSP-страницы до всех остальных тегов, чтобы parser (анализатор) JSP при разборе текста в самом начале выделил глобальные инструкции. Таким, образом, JSP Engine (среда исполнения JSP), анализируя код, создает из JSP сервлет. Директивы представляют собой сообщения контейнеру JSP.

Вы можете поместить столько сравнений, возвращающих логическое значение, как вы хотите в состоянии. Роль циклов состоит в том, чтобы повторять одни и те же операции несколько раз. Все программы, или почти все, нуждаются в такой функции. Мы будем использовать циклы, чтобы позволить программе начинать с самого начала, ждать определенного действия пользователя, просматривать серию данных и т.д.

Цикл выполняется до тех пор, пока выполняется условие. Поэтому мы будем использовать понятия предыдущей главы! Это означает, что почти «до тех пор, пока». Тогда у нас есть условие: он позволяет остановить цикл. Цикл полезен только тогда, когда мы можем его контролировать, и, следовательно, заставляем его повторять инструкцию определенное количество раз.

Синтаксис JSP директив выглядит следующим образом:

<%@ директива имяАтрибута="значение" %>

Синтаксис задания директив на XML:

JSP директива может иметь несколько атрибутов. В этом случае директива может быть повторена для каждого из атрибутов. В то же время пары "имяАтрибута=значение" могут располагаться под одной директивой с пробелом в качестве разделителя.

Существует три типа директив:

  • page (страница)
  • taglib (библиотека тегов)
  • include (включить)

JSP директива page

JSP директива page определяет свойства страницы JSP, которые воздействуют на транслятор. Порядок следования атрибутов в директиве page не имеет значения. Нарушение синтаксиса или наличие нераспознанных атрибутов приводит к ошибке трансляции. Примером директивы page может служить следующий код:

<%@ page buffer="none" isThreadSafe="yes" errorPage="/error.jsp" %>

Директива page объявляет, что данная страница JSP не использует буферизацию, что возможно одновременное обращение к данной странице JSP многих пользователей, и что поддерживается страница ошибок с именем error.jsp .

JSP директива page может содержать информацию о странице:

<%@ page info = "JSP Sample 1" %>

Список возможных атрибутов директивы page представлен в таблице.

Наименование атрибута Значение Описание
language Строка Определяет язык, используемый в скриптлетах файла JSP, выражениях или любых включаемых файлах, в том числе, в теле оттранслированного кода. По умолчанию принимается значение "java"
extends Строка Задает суперкласс для генерируемого сервлета. Этот атрибут следует использовать с большой осторожностью, поскольку возможно что сервер уже использует какой-нибудь суперкласс
import Строка Определение импортируемых пакетов., например:
<%@ page import="java.util.* %>
Session true или false Значение true (принимается по умолчанию) свидетельствует о том, что заранее определенная переменная session (тип HttpSession) должна быть привязана к существующей сессии, если таковая имеется, в противном случае создается новая сессия, к которой осуществляется привязка. Значение false определяет что сессии не будут использоваться, и попытки обращения к переменной session приведут к возникновению ошибки при трансляции JSP страницы в сервлет
Buffer none или размер буфера в кБ. Задает размер буфера для JspWriter out. Значение принимаемое по умолчанию зависит от настроек сервера, и не должно превышать 8 кБ. Если значение равно none вывод происходит непосредственно в объект ServletResponse
autoFlush true или false Определяет, должен ли буфер освобождаться автоматически, когда он переполнен или произошла ошибка. По умолчанию значение true
isThreadSafe true или false Значение true (принимается по умолчанию) задает нормальный режим выполнения сервлета, когда множественные запросы обрабатываются одновременно с использованием одного экземпляра сервлета, исходя из соображения, что автор синхронизировал доступ к переменным этого экземпляра. Значение false ("ложь") сигнализирует о том, что сервлет должен наследовать SingleThreadModel (однопоточную модель), при которой последовательные или одновременные запросы обрабатываются отдельными экземплярами сервлета
info Строка Определяет строку информации о странице JSP, которая будет доступна с помощью метода Servlet.getServletInfo ()
errorPage Строка Значение атрибута представляет собой URL страницу, которая должна выводиться в случае возможных ошибок, вызывающих исключения
isErrorPage true или false Сигнализирует о том, может ли эта страница использоваться для обработки ошибок для других JSP страниц. По умолчанию принимается значение false
contentType Строка Определяет кодировку для страницы JSP и ответа, а также MIME-тип ответа JSP. Значение по умолчанию типа содержания - text/html , кодировки - ISO-8859-1. Например:
contentType="text/html;charset=ISO-8859-1"
pageEncoding Строка Определяет кодировку символов страницы JSP. По умолчанию используется charset из атрибута contentType , если оно там определено. Если значение charset в атрибуте contentType не определено, значение pageEncoding устанавливается равным ISO-8859-1

JSP директива taglib

JSP директива taglib объявляет, что данная страница JSP использует библиотеку тегов, уникальным образом идентифицируя ее с помощью URI, и ставит в соответствие префикс тега, с помощью которого возможны действия в библиотеке. Если контейнер не может найти библиотеку тегов, возникает фатальная ошибка трансляции.

Директива taglib имеет следующий синтаксис:

<%@ taglib uri="URI включаемой библиотеки тегов " prefix="имяПрефикса " %>

Префикс "имяПрефикса " используется при обращении к библиотеке. Пример использования библиотеки тегов mytags :

<%@ taglib uri="http://www.taglib/mytags" prefix="customs" %> . . .

В данном примере библиотека тегов имеет URI-адрес "http://www.taglib/mytags" , в качестве префикса назначена строка customs , которая используется в странице JSP при обращении к элементам библиотеки тегов.

JSP директива include

JSP Директива include позволяет вставлять текст или код в процессе трансляции страницы JSP в сервлет. Синтаксис директивы include имеет следующий вид:

<%@ include file="Относительный URI включаемой страницы " %>

Директива include имеет один атрибут - file . Она включает текст специфицированного ресурса в файл JSP. Эту директиву можно использовать для размещения стандартного заголовка об авторских правах на каждой странице JSP:

<%@ include file="copyright.html" %>

Контейнер JSP получает доступ к включаемому файлу. Если включаемый файл изменился, контейнер может перекомпилировать страницу JSP. Директива include рассматривает ресурс, например, страницу JSP, как статический объект.

Заданный URI обычно интерпретируется относительно JSP страницы, на которой расположена ссылка, но, как и при использовании любых других относительных URI, можно задать системе положение интересующего ресурса относительно домашнего каталога WEB-сервера добавлением в начало URI символа "/". Содержимое подключаемого файла обрабатывается как обычный текст JSP и поэтому может включать такие элементы, как статический HTML, элементы скриптов, директивы и действия.

Многие сайты используют небольшую панель навигации на каждой странице. В связи с проблемами использования фреймов HTML часто эта задача решается размещением небольшой таблицы сверху или в левой половине страницы, HTML код которой многократно повторяется для каждой страницы сайта. Директива include - это наиболее естественный способ решения данной задачи, избавляющий разработчика от кошмара рутины копирования HTML в каждый отдельный файл.

Поскольку директива include подключает файлы в ходе трансляции страницы, то после внесения изменений в панель навигации требуется повторная трансляция всех использующих ее JSP страниц. Если же подключенные файлы меняются довольно часто, можно использовать действие jsp:include , которое подключает файл в процессе обращения к JSP странице.

JSP директива declarations

JSP директива declarations предназначены для определения переменных и методов на языке скриптов, которые в дальнейшем используются на странице JSP. Синтаксис declarations имеет следующий вид:

<%! код Java %>

declarations располагаются в блоке объявлений, а вызываются в блоке выражений страницы JSP. Код в блоке объявлений обычно пишется на языке Java, однако серверы приложений могут использовать синтаксис и других скриптов. Объявления иногда используются для того, чтобы добавить дополнительную функциональность при работе с динамическими данными, получаемыми из свойств компонентов JavaBeans. Примеры объявлений представлены в таблице.

Declarations может содержать несколько строк, как например, в приведенном ниже коде вычисления значения функции fact (int n) , которая должна быть равна 1 при n меньше 2 и n! при положительном значении n;

<%! public static int fact (int n) { if (n <= 1) return 1; else return n * fact (n - 1); } %>

declarations не производят никакого вывода в стандартный выходной поток out . Переменные и методы, декларированные в объявлениях, инициализируются и становятся доступными для скриптлетов и других объявлений в момент инициализации страницы JSP.

Скриптлеты scriptlets

scriptlets включают различные фрагменты кода, написанного на языке скрипта, определенного в директиве language . Фрагменты кода должны соответствовать синтаксическим конструкциям языка скриптлетов , т.е., как правило, синтаксису языка Java. scriptlets имеют следующий синтаксис:

<% текст скриптлета %>

Эквивалентом синтаксиса скриптлета для XML является:

текст скриптлета

Если в тексте скриптлета необходимо использовать последовательность символов %> именно как сочетание символов, а не как тег - признак окончания скриптлета , вместо последовательности %> следует использовать следующее сочетание символов %\>.

В спецификации JSP приводится простой и понятный пример скриптлета , обеспечивающего динамическое изменение содержимого страницы JSP в течение дня.

<% if (Calendar.getInstance ().get (Calendar.AM_PM) == Calendar.AM) {%> Good Morning <% } else { %> Good Afternoon <% } %>

Необходимо отметить, что код внутри скриплета вставляется в том виде, как он записан, и весь статический HTML-текст (текст шаблона) до или после скриплета конвертируется при помощи оператора print . Это означает что скриплеты не обязательно должны содержать завершенные фрагменты на Java, и что оставленные открытыми блоки могут оказать влияние на статический HTML-текст вне скриплета .

Скриплеты имеют доступ к тем же автоматически определенным переменным, что и выражения. Поэтому, например, если есть необходимость вывести какую-либо информацию на страницу, необходимо воспользоваться переменной out .

<% String queryData = request.getQueryString (); out.println ("Дополнительные данные запроса: " + queryData); %>

Выражения expressions

Выражения expressions в странице JSP - это исполняемое выражение, написанное на языке скрипта, указанного в объявлении language (как правило Java). Результат выражения JSP, имеющий обязательный тип String, направляется в стандартный поток вывода out с помощью текущего объекта JspWriter . Если результат выражения не может быть приведен к типу String , возникает либо ошибка трансляции, если проблема была выявлена на этапе трансляции, либо возбуждается исключение ClassCastException , если несоответствие было выявлено в процессе выполнения запроса. Выражение имеет следующий синтаксис:

<%= текст выражения %>

альтернативный синтаксис для JSP expressions при использовании XML:

текст выражения

Порядок выполнения expressions на странице JSP слева-направо. Если выражение появляется более чем в одном атрибуте времени выполнения, то оно выполняется слева-направо в данном теге. Выражение должно быть полным выражением на определенном скрипте (как правило Java).

expressions выполняются во время работы протокола HTTP. Значение выражения преобразуется в строку и включается в соответствующую позицию файла JSP.

Выражения обычно используются для того, чтобы вычислить и вывести на экран строковое представление переменных и методов, определенных в блоке объявлений страницы JSP или полученных от компонентов JavaBeans, которые доступны из JSP. Следующий код expressions служит для отображения даты и времени запроса страницы:

Текущее время: <%= new java.util.Date () %>

Для того чтобы упростить expressions существует несколько заранее определенных переменных, которые можно использовать. Наиболее часто используемые переменные:

  • request, HttpServletRequest;
  • response, HttpServletResponse;
  • session, HttpSession - ассоциируется с запросом, если таковой имеется;
  • out, PrintWriter - буферизированный вариант типа JspWriter для отсылки данных клиенту.