Запрос клиента

Когда мы пытаемся получить доступ к любой веб-странице, мы оправляем запрос на сервер, который содержит определенную информацию, которая не может быть обработана, так как является частью заголовка HTTP-запроса.

Ниже приведен список часто используемых атрибутов заголовка:

Заголовок Описание
Accept Определяет MIME типы. которые могут быть обработаны браузером.
Accept-Charset Определяет, кодировки, который могут быть отображены в браузере.
Accept-Encoding Указывает тип кодировки, которые могут быть обработаны.
Accept-Language Указывает предпочитаемый клиентом язык.
Authorization Используется для самоидентификации при доступе к страницам, которые защищены паролем.
Connection Указывает, может ли клиент работать с HTTP-соедине- ниями.
Content-Length Применяется только для POST заголовков и определяет размер передаваемых данных в байтах.
Cookie Возвращает cookie серверу, которые были предварительно отправлены в браузер.
Host Определяет хост и порт, которые указаны в URL.
If-Modified-Since Указывает, что клиент хочет получить данные о странице только, если она была изменена с момента крайнего посещения. Если она не была изменена, от сервера приходит код ответа 304.
If-Unmodified-Since Указывает, что операция должна быть выполнена только, если документ старше, чем указано.
Referer Указывает URL страницы, с которой мы обращаемся к следующей странице.
User-Agent Определяет браузер или клиента, который выполняет запрос (Firefox, Chrome и т.д.)

Работая с сервлетами, мы можем получить доступ к заголовкам HTTP-документа.
Для этого мы можем использовать методы класса HttpServletRequest.
Базовые методы указаны ниже:

Метод и его описание
1 Cookie[] getCookies() Возвращает массив Cookie, который хранится в заголовке.
2 Enumeration getAttributeNames() Возвращает перечисление, которое содержит имена всех доступных атрибутов данного запроса.
3 Enumeration getHeaderNames() Возвращает перечисление имен всех заголовков в данном запросе.
4 HttpSession getSession() Возвращает сессию, связан- ную с данным запросом. Если сессия не создана – соз-дает новую сессию.
5 Object getAttribute(String name) Возвращает значение указанного аттрибута заголовка.
6 String getProtocol() Возвращает имя и версию протокола запроса.
7 boolean isSecure() Возвращает, является ли запрос безопасным или нет (HTTPS).
8 int getServerPort() Возвращает номер порта, который получил текущий запрос.

Рассмотрим простой пример создания клиентского запроса.
В качестве основы возьмем приложение из данной статьи.

Класс ServletRequestDemo

package net.proselyte.servletstutorial;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

/**
 * Simple servlet that demonstrates {@link HttpServletRequest} in action.
 *
 * @author Eugene Suleimanov
 */

public class ServletRequestDemo extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter writer = response.getWriter();
        String title = "HTTP Request Example";

        String contentType = "
<
!DOCTYPE html
>
\n";

        writer.println(contentType + "
<
html
>
\n" +
                "
<
head
>
<
title
>
" + title + "
<
/title
>
<
/head
>
" +
                "
<
body
>
" +
                "
<
h1
>
HTTP Servlet Request Example 
<
/h1
>
"
        );
        Enumeration headers = request.getHeaderNames();

        while (headers.hasMoreElements()) {
            String parameterName = (String) headers.nextElement();
            String parameterValue = request.getHeader(parameterName);
            writer.println("
<
h3
>
" + parameterName + ": " + parameterValue + "
<
/h3
>
" + "\n");
        }

        writer.println("
<
/body
>
");

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

Файл web.xml

<
!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" 
>
<
web-app
>
<
display-name
>
Servlets Tutorial
<
/display-name
>
<
servlet
>
<
servlet-name
>
SimpleServlet
<
/servlet-name
>
<
servlet-class
>
net.proselyte.servletstutorial.SimpleServlet
<
/servlet-class
>
<
/servlet
>
<
servlet
>
<
servlet-name
>
StatusCodeDemo
<
/servlet-name
>
<
servlet-class
>
net.proselyte.servletstutorial.StatusCodeDemo
<
/servlet-class
>
<
/servlet
>
<
servlet
>
<
servlet-name
>
ServletRequestDemo
<
/servlet-name
>
<
servlet-class
>
net.proselyte.servletstutorial.ServletRequestDemo
<
/servlet-class
>
<
/servlet
>
<
servlet-mapping
>
<
servlet-name
>
SimpleServlet
<
/servlet-name
>
<
url-pattern
>
/SimpleServlet
<
/url-pattern
>
<
/servlet-mapping
>
<
servlet-mapping
>
<
servlet-name
>
StatusCodeDemo
<
/servlet-name
>
<
url-pattern
>
/StatusCodeDemo
<
/url-pattern
>
<
/servlet-mapping
>
<
servlet-mapping
>
<
servlet-name
>
ServletRequestDemo
<
/servlet-name
>
<
url-pattern
>
/ServletRequestDemo
<
/url-pattern
>
<
/servlet-mapping
>
<
/web-app
>

Выполним в консоли следующую команду:

mvn tomcat7:run

И перейдем по ссылке:

http://localhost:8088/ServletRequestDemo

В результате получим следующую страницу:

results matching ""

    No results matching ""