Dzisiaj pierwsza część notatek dotyczących SCWCD. Na pierwszy ogień idą podstawy, cytując wymagania:

Section 1: The Servlet Technogy Model

  • For each of the HTTP Methods (such as GET, POST, HEAD, and so on) describe the purpose of the method and the technical characteristics of the HTTP Method protocol, list triggers that might cause a Client (usually a Web browser) to use the method; and identify the HttpServlet method that corresponds to the HTTP Method.

Protokół HTTP definiowany jest przed dokument RFC 2616, jest to nam wszystkim dobrze znany protokół na którym oparta jest sieć WWW. Protokół ten jest protokołem bezstanowym. Standard opisuje osiem typów metod, które mogą być stosowane podczas komunikacji:

  • OPTIONS - informacje o opcjach i wymaganiach dotyczących żądanego URI,
  • GET - pobranie zasobu istniejącego pod żądanym URI,
  • HEAD - pobranie jedynie nagłówków bez właściwego zasobu,
  • POST - metoda “służąca do wysyłania formularzy”, od GET różni się sposobem dołączania parametrów zawartych w request’cie (dołączone do ciała request’a a nie URL’a), na egzaminie jedyna metoda uważana za “non-idempotent” (posiadająca efekty uboczne),
  • PUT - metoda służąca do przesyłania danych do serwera, według specyfikacji pod URI musi znaleźć się zasób przesyłany w ciele request’a,
  • DELETE - specyfikacja mówi o tym, ze metoda ta powinna usuwać zasób identyfikowany przez URI,
  • TRACE - “debuggowanie” protokołu HTTP, serwer otrzymujący request tego typu powinien zwrócić otrzymana wiadomość,
  • CONNECT - specyfikacja mówi o tym, ze metoda ta może być wykorzystana przez proxy w celu tunelowania zapytań.

W codziennym użytku są głównie metody GET, POST i PUT. Pozostałe są rzadko stosowane. Co wyzwala takie requesty? Prosty link, czy defaultowy form (bez method) to metoda GET. POST z kolei to formularz z jasno określoną metodą. PUT, jak można wywnioskować z wcześniejszego opisu, to najzwyklejsze wysyłanie plików. Oczywiście każda z tych metod może być także symulowana przy użyciu javascript.

7 z 8 metod protokołu HTTP posiada swoje odpowiedniki w klasie HttpServlet. Ich sygnatury pasują do wzorca doMetoda np. doPost(HttpServletRequest, HttpServletResponse) czy doPut(HttpServletRequest, HttpServletResponse). Jedyną metodą protokołu HTTP, która nie ma swojego odpowiednika w klasie HttpServlet jest CONNECT.