Serwlety - żądanie HTTP klienta

Kiedy przeglądarka żąda strony internetowej, wysyła wiele informacji do serwera WWW, których nie można odczytać bezpośrednio, ponieważ te informacje są przesyłane jako część nagłówka żądania HTTP. Możesz sprawdzić protokół HTTP, aby uzyskać więcej informacji na ten temat.

Poniżej znajdują się ważne informacje nagłówka, które pochodzą ze strony przeglądarki i których często używasz w programowaniu stron internetowych -

Sr.No. Nagłówek i opis
1

Accept

Ten nagłówek określa typy MIME, które przeglądarka lub inni klienci mogą obsługiwać. Wartościimage/png lub image/jpeg to dwie najczęstsze możliwości.

2

Accept-Charset

Ten nagłówek określa zestawy znaków, których przeglądarka może używać do wyświetlania informacji. Na przykład ISO-8859-1.

3

Accept-Encoding

Ten nagłówek określa typy kodowania, które przeglądarka potrafi obsługiwać. Wartościgzip lub compress to dwie najczęstsze możliwości.

4

Accept-Language

Ten nagłówek określa preferowane języki klienta na wypadek, gdyby serwlet mógł generować wyniki w więcej niż jednym języku. Na przykład en, en-us, ru itp

5

Authorization

Ten nagłówek jest używany przez klientów do identyfikowania się podczas uzyskiwania dostępu do stron sieci Web chronionych hasłem.

6

Connection

Ten nagłówek wskazuje, czy klient może obsługiwać trwałe połączenia HTTP. Stałe połączenia umożliwiają klientowi lub innej przeglądarce pobieranie wielu plików za pomocą jednego żądania. WartośćKeep-Alive oznacza, że ​​należy używać trwałych połączeń.

7

Content-Length

Ten nagłówek ma zastosowanie tylko do żądań POST i podaje rozmiar danych POST w bajtach.

8

Cookie

Ten nagłówek zwraca pliki cookie do serwerów, które wcześniej wysłały je do przeglądarki.

9

Host

Ten nagłówek określa hosta i port zgodnie z oryginalnym adresem URL.

10

If-Modified-Since

Ten nagłówek wskazuje, że klient chce mieć stronę tylko wtedy, gdy została zmieniona po określonej dacie. Serwer wysyła kod 304, co oznaczaNot Modified nagłówek, jeśli nie ma nowszego wyniku.

11

If-Unmodified-Since

Ten nagłówek jest odwrotnością If-Modified-Since; określa, że ​​operacja powinna się powieść tylko wtedy, gdy dokument jest starszy niż podana data.

12

Referer

Ten nagłówek wskazuje adres URL odsyłającej strony internetowej. Na przykład, jeśli jesteś na stronie internetowej 1 i klikniesz łącze do strony internetowej 2, adres URL strony internetowej 1 zostanie umieszczony w nagłówku strony odsyłającej, gdy przeglądarka zażąda strony internetowej 2.

13

User-Agent

Ten nagłówek identyfikuje przeglądarkę lub innego klienta wysyłającego żądanie i może być używany do zwracania różnych treści do różnych typów przeglądarek.

Metody odczytu nagłówka HTTP

Istnieją następujące metody, których można użyć do odczytania nagłówka HTTP w programie serwletu. Metody te są dostępne z obiektem HttpServletRequest

Sr.No. Metoda i opis
1

Cookie[] getCookies()

Zwraca tablicę zawierającą wszystkie obiekty Cookie wysłane przez klienta z tym żądaniem.

2

Enumeration getAttributeNames()

Zwraca wyliczenie zawierające nazwy atrybutów dostępnych dla tego żądania.

3

Enumeration getHeaderNames()

Zwraca wyliczenie wszystkich nazw nagłówków, które zawiera to żądanie.

4

Enumeration getParameterNames()

Zwraca wyliczenie obiektów typu String zawierające nazwy parametrów zawartych w tym żądaniu

5

HttpSession getSession()

Zwraca bieżącą sesję skojarzoną z tym żądaniem lub, jeśli żądanie nie ma sesji, tworzy ją.

6

HttpSession getSession(boolean create)

Zwraca bieżącą sesję HttpSession skojarzoną z tym żądaniem lub, jeśli nie ma bieżącej sesji, a wartość create to true, zwraca nową sesję.

7

Locale getLocale()

Zwraca preferowane ustawienia regionalne, w których klient będzie akceptować zawartość, na podstawie nagłówka Accept-Language.

8

Object getAttribute(String name)

Zwraca wartość nazwanego atrybutu jako Object lub null, jeśli żaden atrybut o podanej nazwie nie istnieje.

9

ServletInputStream getInputStream()

Pobiera treść żądania jako dane binarne przy użyciu ServletInputStream.

10

String getAuthType()

Zwraca nazwę schematu uwierzytelniania używanego do ochrony serwletu, na przykład „BASIC” lub „SSL” albo null, jeśli strona JSP nie była chroniona.

11

String getCharacterEncoding()

Zwraca nazwę kodowania znaków używanego w treści żądania.

12

String getContentType()

Zwraca typ MIME treści żądania lub wartość null, jeśli typ nie jest znany.

13

String getContextPath()

Zwraca część identyfikatora URI żądania, która wskazuje kontekst żądania.

14

String getHeader(String name)

Zwraca wartość określonego nagłówka żądania jako ciąg.

15

String getMethod()

Zwraca nazwę metody HTTP, za pomocą której wykonano to żądanie, na przykład GET, POST lub PUT.

16

String getParameter(String name)

Zwraca wartość parametru żądania jako ciąg lub null, jeśli parametr nie istnieje.

17

String getPathInfo()

Zwraca wszelkie dodatkowe informacje o ścieżce skojarzone z adresem URL wysłanym przez klienta podczas wysyłania tego żądania

18

String getProtocol()

Zwraca nazwę i wersję protokołu żądania.

19

String getQueryString()

Zwraca ciąg zapytania zawarty w adresie URL żądania po ścieżce.

20

String getRemoteAddr()

Zwraca adres protokołu internetowego (IP) klienta, który wysłał żądanie.

21

String getRemoteHost()

Zwraca w pełni kwalifikowaną nazwę klienta, który wysłał żądanie.

22

String getRemoteUser()

Zwraca login użytkownika wysyłającego to żądanie, jeśli użytkownik został uwierzytelniony, lub zerowy, jeśli użytkownik nie został uwierzytelniony.

23

String getRequestURI()

Zwraca część adresu URL tego żądania od nazwy protokołu do ciągu zapytania w pierwszym wierszu żądania HTTP.

24

String getRequestedSessionId()

Zwraca identyfikator sesji określony przez klienta.

25

String getServletPath()

Zwraca część adresu URL tego żądania, która wywołuje stronę JSP.

26

String[] getParameterValues(String name)

Zwraca tablicę obiektów String zawierającą wszystkie wartości, które ma dany parametr żądania, lub null, jeśli parametr nie istnieje.

27

boolean isSecure()

Zwraca wartość logiczną wskazującą, czy to żądanie zostało wysłane przy użyciu bezpiecznego kanału, takiego jak HTTPS.

28

int getContentLength()

Zwraca długość w bajtach treści żądania i udostępnioną przez strumień wejściowy lub wartość-1, jeśli długość nie jest znana.

29

int getIntHeader(String name)

Zwraca wartość określonego nagłówka żądania jako liczbę całkowitą.

30

int getServerPort()

Zwraca numer portu, na którym otrzymano to żądanie.

Przykład żądania nagłówka HTTP

Poniżej znajduje się przykład, który używa getHeaderNames()metoda HttpServletRequest, aby odczytać informacje nagłówka HTTP. Ta metoda zwraca Enumeration, które zawiera informacje nagłówka skojarzone z bieżącym żądaniem HTTP.

Gdy już mamy Enumeration, możemy zapętlić Enumeration w standardowy sposób, używając metody hasMoreElements () do określenia, kiedy zatrzymać i używając metody nextElement () , aby uzyskać nazwę każdego parametru

// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
 
// Extend HttpServlet class
public class DisplayHeader extends HttpServlet {
 
   // Method to handle GET method request.
   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      // Set response content type
      response.setContentType("text/html");
 
      PrintWriter out = response.getWriter();
      String title = "HTTP Header Request Example";
      String docType =
         "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";

      out.println(docType +
         "<html>\n" +
         "<head><title>" + title + "</title></head>\n"+
         "<body bgcolor = \"#f0f0f0\">\n" +
         "<h1 align = \"center\">" + title + "</h1>\n" +
         "<table width = \"100%\" border = \"1\" align = \"center\">\n" +
         "<tr bgcolor = \"#949494\">\n" +
         "<th>Header Name</th><th>Header Value(s)</th>\n"+
         "</tr>\n"
      );
 
      Enumeration headerNames = request.getHeaderNames();
    
      while(headerNames.hasMoreElements()) {
         String paramName = (String)headerNames.nextElement();
         out.print("<tr><td>" + paramName + "</td>\n");
         String paramValue = request.getHeader(paramName);
         out.println("<td> " + paramValue + "</td></tr>\n");
      }
      out.println("</table>\n</body></html>");
   }
   
   // Method to handle POST method request.
   public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

      doGet(request, response);
   }
}

Teraz wywołanie powyższego serwletu wygeneruje następujący wynik -

HTTP Header Request Example

Header Name Header Value(s)
accept */*
accept-language en-us
user-agent Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; MS-RTC LM 8)
accept-encoding gzip, deflate
host localhost:8080
connection Keep-Alive
cache-control no-cache