Немедленное и отложенное вычисление
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

• Немедленное вычисление (JSP и JSF):

l ${выражение}

l Позволяет лишь получить значение выражения.

• Отложенное вычисление (JSF):

l #{ выражение}

l Выражение может использоваться различным образом в разные моменты жизненного цикла.

l Позволяет не только получать значения, но и записывать их (в т.ч. для свойств бинов).

Применение выражений с немедленным вычислением

• Выражения EL могут применяться:

l в статическом тексте

l в качестве значений атрибутов тегов

Пример 29.

<some:tag>

some text ${expr} some text

</some:tag>

<some:tag value="${expr}"/>

<some:tag value="some${expr}${expr}text${expr}"/>

Обращение к данным

• Компоненты JavaBeans

l ${beanName.propertyName}

l ${beanName["propertyName"]}

• Коллекции

l ${beanName.listName[i]}

l ${beanName.mapName["string key"]}

• Перечислимые типы JavaSE

l ${reference == "enumConstant"}

• Неявные объекты

l ${param["paramName"]}

• Вычисление выражений

l ${customer.age + 20}

Вызов методов

• Без параметров

l ${object.method}

l ${object["method"]}

• С параметрами

l ${object.method(param1, ..., paramN}

l ${object["method"](param1, ..., paramN)}

Литералы в выражениях

• Логические true, false

• Целочисленные 136

• С плавающей точкой 3.14, 1.0e10

• Строковые “string”

• Ссылочные null

Операторы в выражениях

• Доступ к элементам []

• Операторные скобки ()

• Унарные - not ! Empty (EmptyА возвращает true, если А – ноль)

• Арифметические * / div % mod + -

• Сравнение <><= >= lt gt le ge  == != eq ne

• Логические && and || or ? :

Неявные объекты

• Объекты доступа к другим объектам

l pageScope

l requestScope

l sessionScope

l applicationScope

• Часто используемые объекты

l pageContext

l session

l request

l response

l param

l cookie

l ...

Примеры выражений EL

Таблица 6 – Примеры выражений EL

Выражение Результат
${(10*10) ne 100} false
${'a' < 'b'} true
${1.2E4 + 1.4} 12001.4
${!empty param.Add} true, если параметр Add не null и не пустая строка
${pageContext.request.contextPath} Путь контекста
${param['mycom.productId']} Значение параметра mycom.productId
${departments[deptName]} Значение элемента deptName в departments
${header["host"]} Имя хоста

JSP- страница с применением EL

Пример 30. JSP -страница с применением EL

JSP-страница

${20 + 335}< br />

${! emptyparam . Add }< br />

Фрагментпримерногокодасервлета

out . write (( java . lang . String )

org.apache.jasper.runtime.PageContextImpl.evaluateExpression(

"${20 + 335}", java.lang.String.class,

(PageContext)_jspx_page_context, null));

out.write("<br/>\n");

out.write((java.lang.String)

org.apache.jasper.runtime.PageContextImpl.evaluateExpression(

"${!empty param.Add}", java.lang.String.class,

(PageContext)_jspx_page_context, null));

out.write("<br/>\n");

Custom tags

• Определяются пользователем и описывают часто используемые операции.

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

• Для использования тегов необходимо:

l Объявить библиотеку тегов

l Сделать ее доступной для web-приложения

<prefix:tag attr1="value" ... attrN="value" />

<prefix:tag attr1="value" ... attrN="value" >

body

</prefix:tag>

Библиотеки тегов

• Библиотеки тегов описываются в tld-файлах

• Библиотеки могут быть

l публичными и храниться в сети

l локальными и храниться в каталоге WEB-INF

• Для подключения библиотеки необходимо использовать директиву taglib

<%@ taglib prefix="tlt" uri="/WEB-INF/iterator.tld"%>

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

Обработка custom tags

• В процессе компиляции jsp-страницы теги будут преобразовываться в java-код в соответствии с описанием в библиотеке тегов.

• Если соответствующая библиотека не была подключена, относящиеся к ней теги будут трактоваться как статическая часть jsp-страницы и просто выводиться в отклик.

Пример 31. JSP -страница с применением customtags

JSP-страница

<c:if test="${!empty param.name}" var="nameExists" scope="request">

<b>Hello, ${param.name}!</b><br/>

</ c : if >

Фрагмент примерного кода сервлета

org.apache.taglibs.standard.tag.rt.core.IfTag _jspx_th_c_if_0 =

(org.apache.taglibs.standard.tag.rt.core.IfTag)

_jspx_tagPool_c_if_var_test_scope.get(

org.apache.taglibs.standard.tag.rt.core.IfTag.class);

_jspx_th_c_if_0.setPageContext(_jspx_page_context);

_jspx_th_c_if_0.setParent(null);

_jspx_th_c_if_0.setTest(((java.lang.Boolean)

org.apache.jasper.runtime.PageContextImpl.evaluateExpression(

"${!empty param.name}", java.lang.Boolean.class,

(PageContext)_jspx_page_context, null)).booleanValue());

_jspx_th_c_if_0.setVar("nameExists");

_jspx_th_c_if_0.setScope("request");

int _jspx_eval_c_if_0 = _jspx_th_c_if_0.doStartTag();

if (_jspx_eval_c_if_0 != javax.servlet.jsp.tagext.Tag.SKIP_BODY) {

do {

out.write("<b>Hello, ");

out.write((java.lang.String)

org.apache.jasper.runtime.PageContextImpl.evaluateExpression(

"${param.name}", java.lang.String.class,      

(PageContext)_jspx_page_context, null));

out.write("!</b><br/>\n");

int evalDoAfterBody = _jspx_th_c_if_0.doAfterBody();

if (evalDoAfterBody !=

javax.servlet.jsp.tagext.BodyTag.EVAL_BODY_AGAIN)

break;

} while (true);

}

JSP Standard Tag Library

• Библиотека включает в себя набор тегов, функциональность которых часто используется в web-приложениях.

• Эти теги должны обрабатываться единообразно в рамках всех контейнеров.

• Это позволяет:

l избежать использования различных библиотек.

l единообразно организовывать JSP-страницы .

Библиотеки JSTL

• JSTL поставляется в виде набора библиотек:

l Различные направления функциональности

l Различные пространства имен

• Библиотеки и соответствующие пути

l Core http://java.sun.com/jsp/jstl/core

l XML http://java.sun.com/jsp/jstl/xml

l Internationalization http://java.sun.com/jsp/jstl/fmt

l Database http://java.sun.com/jsp/jstl/sql

l Functions http://java.sun.com/jsp/jstl/functions

Таблица 7 – Библиотеки JSTL

Библиотека Функциональность Префикс

Core

Работа с переменными

c

Управление ходом выполнения
Работа с URL
Разное

XML

Базовые

x

Управление выполнением
Преобразования

I18n

Локализация

Fmt

Форматирование сообщений Форматирование чисел и дат Database SQL sql

Functions

Возможности коллекций

fn

Работа со строками

Таблица 8 – Библиотека Core

Функциональность Тэги
Работа с переменными remove set
Управление ходом выполнения choose (when, otherwise) forEach forTokens if
Работа с URL import (param) redirect (param) url (param)
Разное catch out

Таблица 9 – Библиотека XML

Функциональность Тэги
Базовая out parse set
Управление ходом выполнения choose (when, otherwise) forEach if
Преобразования transform (param)

Пример 32. Пример использования

<c:if test="${!empty param.Add}">

<c:set var="bid" value="${param.Add}"/>

<jsp:useBean id="bid" type="java.lang.String" />

<sql:query var="books"

  dataSource="${applicationScope.bookDS}">

select * from PUBLIC.books where id = ?

<sql:param value="${bid}" />

</sql:query>

<c:forEach var="bookRow" begin="0" items="${books.rows}">

<jsp:useBean id="bookRow" type="java.util.Map" />

<jsp:useBean id="addedBook" class="database.Book"
    scope="page" />

...

<% cart.add(bid, addedBook); %>

...

</c:if>


Язык JavaScript

JavaScript – это язык программирования

l Интерпретируемый

l Объектно-ориентированный

l Со слабой типизацией

l С динамической типизацией

l С автоматическим управлением памятью

l Вместо наследования классов используются прототипы объектов

l Функции являются объектами

Области применения

• Скриптовые фрагменты серверных приложений.

• Виджеты (примитивграфического интерфейса пользователя, имеющий стандартный внешний вид и выполняющий стандартные действия).

• Прикладное программное обеспечение.

• Букмарклеты (небольшие приложения, размещаемые в закладках браузера).

• Пользовательские скрипты в браузерах.

• Программы на стороне клиента в web-приложениях.

n Код встраивается в HTML-страницу.

n Код выполняется браузером.

n Возможно изменение структуры страницы, её элементов и их параметров.

n Изменения могут происходить без перезагрузки страницы.

n Могут выполняться дополнительные действия.

· Взаимодействие с браузером

· Взаимодействие с сервером

· Бизнес-логика в целом

Пример 33. Здравствуй , мир !!!

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title> Проверка JS</title>

</head>

<body>

<h1>

<script>

   document.write("Hello, world!!!");

</ script >

</ h 1>

</ body >

</ html >

Дата: 2019-02-19, просмотров: 363.