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:
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.