пятница, 24 апреля 2009 г.

Понимание формата URL в Application Express. Часть 2.

Продолжение поста "Понимание формата URL в Application Express. Часть 1."

Вызов страницы, используя синонимы приложения и страницы
Синоним для приложения или страницы не может содержать пробелов и не чувствительный к регистру. Ниже приведен пример запроса к странице, в котором используются синонимы страницы и приложения. Выполняется запрос к странице "home" приложения "myapp", используя текущую сессию:
f?p=myapp:home:&APP_SESSION.
где:


  • myapp - синоним для приложения

  • home - синоним для страницы

  • APP_SESSION - идентифифкатор сессии


Синоним приложения должен быть уникален в рамках рабочей области (workspace). Если приложения, располагающиеся в разнызх рабочих областях, имеют одинаковые синонимы, необходимо использовать "&c" аргумент, чтобы указать имя рабочей области. Например:
f?p=common_alias:home:&APP_SESSION.&c=WORKSPACE_A

Использование 0 вместо Session Id
Если страница APEX-приложения является обще доступной и не требует аутентификации, можно использовать "0" вместо идентификатора сессии.

При запросе страницы, в URL которой стоит 0 вместо session id, Application Express присваивает новый session id и отсылает его вместе с cookie обратно браузеру.
Таким образом, просматривая обще доступные страницы, можно видеть, что все генерируемые ссылки на обще доступные страницы будут содержать "0" в качестве session id. Однако, на самом деле Application Express будет использовать session id из cookie, чтобы переменные приложения были в актуальном состоянии.

Эта фича полезна, когда необходимо спрятать настоящий идентификатор сессии (session id). Это бывает полезно как минимум в двух случаях:

  • Создание закладок пользователями. Нет необходимости сохранять номер сессии в ссылке закладки.

  • Поисковые системы. Номер сессии будет недоступен для ботов поисковых систем. Естевственным следствие этого будет ликвидация дублирования контента в поисковых системах, так как при каждом обращении бота поисковой системы на одну и ту же страницу, будет гарантированно получен один и тот же URL.


Основы строк подстановки (Substitution Strings)
Строки подстановки можно использовать в шаблонах страниц или в регионах для того, чтобы заменить символьную строку каким-либо значением.
В Application Builder можно использовать строки подстановки следующим образом:

Подробнее...

среда, 1 апреля 2009 г.

Понимание формата URL в Application Express. Часть 1.

URL, которые отображаются для каждой страницы, однозначно определяют:

  • Адрес Application Express

  • Идентификатор приложения (application ID) - уникальное число, однозначно идентифицирующее приложение. Уникален в рамках рабочей области (workspace)

  • Номер страницы (page number) - число, однозначно идентифицирующее страницу в приложении. Уникально в рамках приложения.

  • Идентификатор сессии (session ID)

Приложения и страницы могут иметь символьные псевдонимы (alphanumeric aliases).Так же, как и идентификаторы приложений и страниц, псевдоним приложения уникален в рамках рабочей области (workspace), а псевдоним страницы уникален в рамках приложения.

При запуске приложения Application Express генерирует идентификатор сессии, который является ключем для доступа к значениям переменных приложения.

Понимание URL для страниц


Все очень просто. Достаточно рассмотреть пример:
http://apex.oracle.com/pls/apex/f?p=4350:1:220883407765693447
где:

  • apex.oracle.com - адрес сервера

  • pls - признак использования mod_plsql

  • apex - название дескриптора доступа к БД (DAD). DAD описывает, как HTTP-сервер соединяется с сервером БД, чтобы обработать HTTP-запрос. Значение по умолчанию - apex.

  • f?p= - префикс, используемый Oracle Application Express

  • 4350 - вызываемое приложение (application ID)

  • 1 - вызываемая страницы приложения(page number)

  • 220883407765693447 - идентификатор сессии(session ID)


Использование синтаксиса "f?p"


Для создания переходов между страницами можно использовать следующий синтаксис:

f?p=App:Page:Session:Request:Debug:ClearCache:itemNames:itemValues:PrinterFriendly


Синтаксис Описание
AppИдентификатор (application ID) или символьный псевдоним (alias) приложения
PageНомер (page number) или символьный псевдоним (alias) страницы
SessionИдентификатор сессии (session ID). Идентификатор сесси имеет смысл указывать в том случае, если создается ссылка на страницу, в которой необходимо использовать теже переменные, что и в текущей странице. Получить значение идентификатор текущей сессии можно следующими способами:

  • Строка подстановки: "&SESSION."
  • PL/SQL: "V('SESSION')"
  • Bind переменная: ":APP_SESSION"
RequestВыставляется при нажатии кнопки на странице приложения. Заполняется именем нажатой кнопки. Получить значение можно следующими способами:
  • Строка подстановки: "&REQUEST."
  • PL/SQL: "V('REQUEST')"
  • Bind переменная: ":REQUEST"
DebugОтвечает за вывод отладочной информации при обработке страницы. Допустимые значения: "NO", "YES". Получить значение можно следующими способами:
  • Строка подстановки: "&DEBUG."
  • PL/SQL: "V('DEBUG')"
  • Bind переменная: ":DEBUG"
ClearCacheОчищает кэш. Выставляет значение указанных переменных в NULL. Пример: f?p=100:5:&APP_SESSION.::NO:THE_EMPNO,THE_DEPTNO Очищает кэш переменных THE_EMPNO и THE_DEPTNO.
Ключевое слово "RP" вызывает сброс навигации (region pagination) на странице. Например:
f?p=6000:6003:&APP_SESSION.::NO:RP,6004,6014
Очищает состояние всех переменных на страницах 6004 и 6014. Сбрасывает состояние навигации (region pagination -RP) на странице 6003.
Ключевое слово "APP" вызывает сброс кэша во всем приложении.
Ключевое слово "SESSION" работает аналогично ключевому слову "APP", за исключением того, что очищает значение переменных, связанных со всеми приложениями, которые были использованы в рамках заданной сессии.
itemNamesСписок переменных через запятую, для которых необходимо выставить значение.
itemValuesСписок значений переменных через запятую. Не допустимо использование двоеточия (:) в качестве значения. Допустимо использование запятой в качестве значения, если значение заключено в обратные слеши (\123,45\).
PrinterFriendlyОпределяет, будет ли страница выведена в режиме "на печать" (значение - "Yes"). Может быть использовано для условного вывода того или иного элемента страницы при выводе на печать. Получить значение можно следующими способом: V('PRINTER_FRIENDLY').
Если задано, то Application Express не будет отображать закладки или навигационные области. Кроме того, все элементы форм будут выводиться как текстовые поля.

Продолжение следует...

Подробнее...