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

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

Наименование объектаТип объектаНазначение
request (запрос) javax.servlet.HttpServletRequest Запрос HttpServletRequest, требующий обслуживания. Область видимости - запрос. Основные методы : getAttribute, getParameter, getParameterNames, getParameterValues Запрос request обеспечивает обращение к параметрам запроса через метод getParameter, типу запроса (GET, POST, HEAD, и т.д.), и входящим HTTP заголовкам (cookies, Referer и т.д.).
response (ответ) javax.servlet.HttpServletResponse Ответ на запрос HttpServletResponse. Область видимости - страница. Поскольку поток вывода буферизован, можно изменять коды состояния HTTP и заголовки ответов, даже если это недопустимо в обычном сервлете, но лишь в том случае, если какие-то данные вывода уже были отправлены клиенту.
out (вывод) javax.servlet.jsp.JspWriter ОбъектJspWriter пишет в выходной поток. Область видимости - страница. Основные методы : clear, clearBuffer, flush, getBufferSize, getRemaining. Необходимо помнить, размер буфера можно изменять и даже отключить буферизацию, изменяя значение атрибута buffer директивы page. Также необходимо обратить внимание, что out используется практически исключительно скриплетами, поскольку выражения JSP автоматически помещаются в поток вывода, что избавляет от необходимости явного обращения к out.
pageContext (содержание страницы) javax.servlet.jsp.pageContext Содержимое JSP-страницы. Область видимости - страница. pageContext поддерживает доступ к полезным объектам и методам, обеспечивающим явный доступ реализации JSP к специфическим объектам. Основные методы : getSession, getPage, findAttribute, getAttribute, getAttributeScope, getAttributeNamesInScope, getException.
session (сеанс) javax.servlet.HttpSession Объект типа Session, создаваемый для клиента, приславшего запрос. Область видимости - страница. Основные методы getId, getValue, getValueNames, putValue.
Сессии создаются автоматически, и переменная session существует даже если нет ссылок на входящие сессии. Единственным исключением является ситуация, когда разработчик отключает использование сессий, используя атрибут session директивы page. В этом случае ссылки на переменную session приводят к возникновению ошибок при трансляции JSP страницы в сервлет.
application (приложение) javax.servlet.ServletContext Контекст сервлета ServletContext, полученный из объекта конфигурации сервлета при вызове методов getServletConfig и getContext. Область видимости - приложение. Основные методы : getMimeType, getRealPath.
config (конфигурация) javax.servlet.ServletConfig Объект ServletConfig текущей страницы JSP. Область видимости - страница. Основные методы : getInitParameter, getInitParameterNames
page (страница) java.lang.Object Экземпляр класса реализации текущей страницы JSP, обрабатывающий запрос. Область видимости - страница. Объект доступен, но, как правило, используется редко. По сути является синонимом для this.
exception (исключение) java.lang.Throwable Объект Throwable, выводимый в страницу ошибок error page. Область видимости - страница. Основные методы : printStackTrace, toString, getMessage, getLocalizedMessage.

Пример JSP страницы с использованием неявных объектов implicit objects

<%@ page language="java" contentType="text/html; charset=UTF-8" 
                                              pageEncoding="UTF-8"%> 
<%@ page import="java.util.Date" %> 
<%@ page import="java.util.*, java.text.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
         "http://www.w3.org/TR/html4/loose.dtd">
<%! 
 String getFormattedDate() 
 { 
     SimpleDateFormat sdf = new SimpleDateFormat ("dd.MM.yyyy hh:mm:ss"); 
     return sdf.format (new Date ()); 
 } 
%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Пример JSP страницы</title>
    </head>
    <body>
        <h1>Добро пожаловать</h1>
        <%-- Запросы объектов (request object) --%>
        <b>Текущая дата</b>: <% 
                     out.print(getFormattedDate()); %><br><br>
        <b>Заголовок User-Agent</b>: 
                    <%= request.getHeader("User-Agent") %><br><br>

        <%-- Добавить cookie --%>
        <%response.addCookie(new Cookie("Test","Value")); %>

        <%-- ServletConfig --%>
        <b>Значение параметра ServletName </b> : 
                    <%= config.getServletName() %><br><br>
                  
        <%-- Объект application --%>
        <b>Контейнер сервлетов поддерживает версию</b> : 
             <%= out.print(application.getMajorVersion() + "." + 
                           application.getMinorVersion()); %><br><br>

        <%-- Объект session --%>
        <b>Идентификатор сессии SessionID</b> : 
                               <%= session.getId() %><br><br>

        <%-- Объект pageContext --%>
        <p>Установлен атрибут pageContext : 
                                 ключ "Account", значение "Serg".</p>
        <% pageContext.setAttribute("Account", "Serg"); %>
        <b>Атрибут PageContext</b> : { 
                     Key = "Account", Value = "<%= 
                        pageContext.getAttribute("Account")%>"}<br><br>

        <%-- Объект page --%>
        <b>Имя сгенерированного класса сервлета</b> : 
                            <%= page.getClass().getName() %>
    </body>
</html>

Скриншот рассмотренного примера :

Скачать пример

Исходный код примера JSP с использованием неявных объектов, рассмотренного на странице, можно скачать здесь (5.56 Кб).

  Рейтинг@Mail.ru