Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к экзамену по ПИИ.docx
Скачиваний:
107
Добавлен:
26.03.2015
Размер:
207.29 Кб
Скачать

Атрибуты запроса

Для доступа к атрибутам запроса используются следующие методы интерфейса HttpServletRequest: getAttribute (получить значение атрибута), setAttribute (установить значение атрибута), getAttributeNames (получить список имен атрибутов), removeAtribute (удалить атрибут).

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

public class Hhh extends HttpServlet implements Servlet {

protected void doGet(HttpServletRequest rq, HttpServletResponse rs)

throws ServletException, IOException {

String is = "qwerty";

Integer ia = 12345;

jspclass.Regimex oa = new jspclass.Regimex();

rq.setAttribute("atr1", "qwerty");

rq.setAttribute("atr2", ia);

rq.setAttribute("atr3", oa);

rq.getRequestDispatcher("/jjj.jsp").forward(rq, rs);

}

}

На рис. приведен фрагмент jsp-страницы, в скриплете которой осуществляется доступ к атрибутам запроса с помощью методов неявного объекта request.

<!- ............................................ -->

<body>

<%

String vatr1 = (String) request.getAttribute("atr1");

Integer vatr2 = (Integer) request.getAttribute("atr2");

jspclass.Regimex vatr3 = (jspclass.Regimex) request

.getAttribute("atr3");

%>

<br> vatr1 =

<%=vatr1%>

<br> vatr2 =

<%=vatr2%>

<br> vatr2 =

<%=vatr3.GetHOUR()%>

</body>

<!- ............................................ -->

Атрибуты сессии

Создание, корректировка и удаление атрибутов осуществляется точно таким же способом, как и в предыдущих случаях. Единственным отличием является то, что методы, выполняющие эти операции являются собственностью интерфейса HttpSession. Объект сессии в jsp-странице становится доступным с помощью методаgetSession неявного объектаrequest.

  1. Заголовки http-запросов и ответов. Назначение. Принципы применения. Заголовки запроса

Заголовки http-запроса представляют собой предшествующие телу запроса пары «имя-значение», которые формируются клиентом web-приложения (браузером) и пересылаются серверу. В общем случае одному заголовку может соответствовать несколько значений.

В простых сервлетах или jsp-странице разработчику доступны только три метода для работы с заголовками запроса: getHeader(получить первое значение заголовка по егоимени), setHeaders (получить все значения заголовка по имени), и getHeaderNames (получить все имена заголовков запроса).

Если же запрос формируется с помощью классов пакета httpclient (раздел 3.4), тотодaddRequestHeader объекта типаGetMethod(илиPostMethod) позволяет добавить собственные заголовки запроса, как это сделано в примере.

protected void doGet(HttpServletRequest rq, HttpServletResponse rs)

throws ServletException, IOException {

HttpClient hc = new HttpClient();

String uri = "http://localhost:8080/ANaive/Jjj";

GetMethod gm = new GetMethod(uri);

gm.addRequestHeader("MyHeader1", "MyHeadetValue1");

gm.addRequestHeader("MyHeader2", "MyHeadetValue2");

gm.addRequestHeader("MyHeader3", "MyHeadetValue3");

hc.executeMethod(gm);

rs.setContentType("text/html");

InOutServlet inout = new InOutServlet(rs.getOutputStream(),

gm.getResponseBodyAsStream());

inout.perform();

}

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

Кроме строкового значения заголовков запроса могут быть целочисленного типа или типа Date. В этих случаях можно воспользоваться двумя другими разновидностями метода getHeader:getIntHeaderилиgetDateHeader.