Спецификация Java Server Pages 1.2


JSP.4.1 <jsp:useBean> - часть 2


  • JSP-контейнер будет ассоциировать объект (компонент JavaBean) с именованным значением и получать доступ по этому имени в различных контекстах через объект

    page-context, описанный далее в этой спецификации.

  • Это name используется также для экспонирования переменной (имени) в среде языка скриптинга. Область видимости переменной языка скриптинга зависит от правил видимости и возможностей языка скриптинга, используемого на этой странице.


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


    В детально рассматривается случай, когда атрибут language - ”java”.

    Пример использования правил правил области видимости, только что упомянутых, дан здесь:

    <% { // вводится новый блок %>

    ...

    <jsp:useBean id=”customer” class=”com.myco.Customer” />

    <%

    /*

    * тэг создаёт или получает ссылку на Customer Bean,

    * ассоциирует её с именем “customer”

    * в PageContext и объявляет переменную языка программирования Java

    * с тем же именем, которое инициализировано для ссылки на объект

    * в пределах видимости этого блока.

    */

    %>

    ...

    <%= customer.getName(); %>

    ...

    <% } // закрывает блок %>

    <%

    // переменная customer находится сейчас вне области видимости,

    // но объект всё ещё действует (и доступ к нему осуществляется через PageContext)

    %>

    Атрибут  scope

    Пара атрибут/значение scope=”page|request|session|application” ассоциирована с (и модифицирует) поведением атрибута id, описанного выше (она (пара) имеет семантику и времени трансляции, и времени процессинга запроса клиента).


    Конкретнее, она описывает пространство имён, предполагаемый жизненный цикл ссылки на объект, ассоциированной с name, и API, используемые для доступа к этой ассоциации, таким образом:

    Таблица JSP.4-1

    page Именованный объект, доступный из javax.Servlet.jsp.PageContext

    для данной страницы.

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

    Не допускается изменение объекта экземпляра, ассоциированного таким образом, что его (объекта?) тип времени прогона/выполнения является поднабором типа текущего объекта, ассоциированного ранее.

    request

    Именованный объект, доступный из объекта ServletRequest текущей страницы через использование метода getAttribute(name).

    Эта ссылка должна быть уничтожена после выполнения текущего клиентского запроса.

    Не допускается изменение значения объекта экземпляра, ассоциированного таким образом, что его (объекта?) тип времени прогона/выполнения является поднабором(-ами) типа объекта, ассоциированного ранее таким же образом.

    sessionИменованный объект, доступный из объекта HttpSession текущей страницы (который, в свою очередь, может быть получен из объекта ServletRequest) через использование методаgetAttribute(name).

    Эта ссылка должна быть уничтожена после аннулирования текущей сессии.

    Не допускается изменение значения объекта экземпляра, ассоциированного таким образом, чтобы его новый тип времени прогона был поднабором(-ами) типа объекта, ассоциированного ранее.

    Заметьте, что будет фатальной ошибкой трансляции попытка использовать область видимости сессии, когда JSP-страница, делающая эту попытку, объявляется через директиву <%@ page ... %>

    (см. далее) так, что она не участвует в сессии.

    application Именованный объект, доступный из объекта ServletContext текущей страницы через использование метода getAttribute(name).

    Эта ссылка должна быть уничтожена после использования ServletContext.

    Не допускается изменение значения объекта экземпляра, ассоциированного таким образом, чтобы его новый тип времени прогона был поднабором(-ами) типа объекта, ассоциированного ранее таким же образом.

    <


    Начало  Назад  Вперед