JavaWeb application

Spring Boot część 7 – Niejawne przekazanie argumentów do metody kontrolera

Aby metoda kontrolera mogła zostać wywołana należy:

  • wywołać poprawny endpoint wraz z właściwą metodą HTTP;
  • odpowiednio ją sparametryzować jeśli przyjmuje argumenty.

W Spring dopuszczalne jest pobranie do metody parametru, który wcześniej nie był definiowany. Wówczas mówimy o parametrze przekazanym w sposób niejawny. Przykładem takiego parametru jest na przykład HttpServletRequest. Poniższy kod prezentuje jego wykorzystanie.

@RequestMapping("/getExample")
@ResponseBody
public void implicitTransfer(HttpServletRequest request) {
    // some code...
}

Aby wywołać tą metodę w aplikacji, która pracuje lokladnie wystarczy zwykłe odwołanie się do adresu:
http://localhost:8080/getExample

Do adresu nie jest przekazywana żadna wartość a mimo to metoda wywoła się poprawnie. Dzieje się tak ponieważ informacje są przekazywane jednak w postaci niejawnej. Instancja klasy HttpServletRequest przechwytuje informacje na temat otrzymanego żądania.

HttpServletRequest dostarcza szeroki zbiór informacji przykładowo takich jak:

  • informacje o sesji;
  • informacje o ciasteczkach;
  • adres IP;
  • przeglądarka z której wykonane zostało żądanie;
  • typ autentykacji;
  • inne.

Poniższy przykład prezentuje w jaki sposób pobrać przykładowe informacje z żądania – takie jak adres przeglądarka oraz adres IP nadawcy, a następnie zwrócić te informacje w odpowiedzi.

@RequestMapping("/getExample")
@ResponseBody
public String implicitTransfer(HttpServletRequest request) {
    String browserName = request.getHeader("User-Agent");
    String ipAddress = request.getRemoteAddr();
    return "Browser name: " + browserName + System.lineSeparator()+
            "IP address: " + ipAddress;
}

Działanie tego fragmentu kodu da następujący efekt:

Przekazanie parametru HttpServletRequest

Zostały również zawarte informacje na temat systemu operacyjnego na jakim pracuje przeglądarka. Metoda była testowana na przeglądarce Chrome. Ponieważ Chrome w swojej implementacje korzysta również z bibliotek innych, to rezultat zawiera również te szczegółowe informacje.

W kolejnej części opisany zostanie sposób tworzenia, oraz wczytywania danych z pliku konfiguracyjnego.

Cały kurs opisujący mechanikę i działanie Spring Boot od podstaw znajdziesz tutaj: Kurs Spring Boot
Tags:
Show Buttons
Hide Buttons