_request

Data vztahující se k aktuálně zpracovávanému HTTP požadavku (HTTP request).

Objekt má následující podhodnoty:

url
(String) Absolutní URL požadavku (bez parametrů).
queryString
(String) Řetězec s parametry URL, například "a=b&c=d".
scheme
serverName
serverPort
uri
Komponenty url: (String) scheme je schéma požadavku, například "http"; (String) serverName je jméno serveru, například "www.google.com"; (Integer) serverPort je port, typicky 80. (String) uri je zbývající část, tedy "relativní URL".
contextPath
servletPath
pathInfo
Komponenty uri – zhruba platí, že uri = contextPath + servletPath + pathInfo.
remoteAddr
remoteHost
remoteUser
Údaje o původu požadavku: (String) remoteAddr je IP adresa klienta, od kterého požadavek vzešel, (String) remoteHost je odpovídající plně kvalifikované jméno (nebo opět IP adresa) a (String) remoteUser je uživatel.
protocol
(String) Protokol, například "HTTP/1.1".
method
(String) Metoda požadavku, například "GET" nebo "POST".
contentType
(String) Typ těla požadavku, tedy zhruba řečeno obsah hlavičky "Content-Type". Pro požadavky metodou GET, které nemají žádné tělo, bude typicky nenastaveno.
contentLength
(String) Obsah hlavičky "Content-Length". Pro požadavky metodou GET bude typicky 0.
characterEncoding
(String) Kódování těla požadavku.
referrer
(String) Obsah hlavičky HTTP Referer.
authType
(String) Typ autentikace.
params
headers
cookies
Struktury zpřístupňující po řadě parametry požadavku, HTTP hlavičky a data uložená jako cookie. Jejich podrobnější popis dále následuje.

Kromě toho je jako podhodnota dostupný každý atribut HTTP požadavku.

_request.params

Podhodnota se dá použít pro přístup k parametrům požadavku, a to bez ohledu na to, zda jde o parametry URL, nebo parametry POST požadavku obsažené v jeho těle.

Pokud je možné s jistotou předpokládat, že parametr s daným názvem je v požadavku obsažený jen jednou, lze k němu přistupovat jako k podhodnotě objektu _request.params.

Příklad: Přečtení parametru "query"
Vstup
<input type="text" name="query"
       value="{_request.params.query}" />
Příklad: Vypsání všech parametrů předaných v requestu
Šablona
{while _request.params}
	{thisParamKey := _.key}
	{thisParamValue := map(_request.params, thisParamKey)}
{/while}

K parametrům s více hodnotami je možné přistupovat pouze iterací přes objekt _request.params; při takové iteraci je v každém kroku dostupná struktura, ve které podhodnota key je název parametru a podhodnota value je pole všech hodnot pro daný název.

Příklad: Parametr s více hodnotami
Vstup
{while _request.params
 if _.key == "category" let category := _.value /if
/while}

<select name="category" multiple="multiple">
{while asMap(
  "news", "Aktuality",
  "products", "Produkty",
  "all", "Vše"
)}
 <option value="{_.key}"
  {if in(_.key, category)} selected="selected"{/if}>
   {_.value}
 </option>
{/while}
</select>

 

Přistoupit k nim je také možné přes _request.paramLists obsahující mapu listů – mapa, kde klíči jsou názvy parametrů a hodnotami pole všech jejich hodnot.

_request.headers

Objekt _request.headers se chová jako struktura, jejíž podhodnoty odpovídají HTTP hlavičkám požadavku.

Hodnota každé hlavičky je dostupná:

  • pod klíčem shodným s názvem hlavičky,
  • pod klíčem, který se z názvu hlavičky odvodí záměnou všech velkých písmen za malá a záměnou všech jiných znaků než písmena a číslice za podtržítko.

Druhá možnost má usnadňovat přístup k obsahu hlavičky – eliminuje nutnost použít funkci map.

Příklad: Zjištění obsahu hlavičky Accept-Charset
Šablona
{_request.headers.accept_charset}<br>
{map(_request.headers, "Accept-Charset")}
Výstup
windows-1250,utf-8;q=0.7,*;q=0.3<br>
windows-1250,utf-8;q=0.7,*;q=0.3

_request.cookies

Objekt se chová jako struktura nebo jako seznam dále strukturovaných objektů – jednotlivých cookie. Každá jednotlivá cookie je tedy dostupná buď při iteraci přes objekt _request.cookies, nebo jako podhodnota tohoto objektu dostupná pod názvem cookie.

V obou případech má samotná cookie následující podhodnoty:

name
Název cookie. Smysl má, pokud se ke cookie přistupuje iterací, jinak se shoduje s klíčem použitým pro přístup ke cookie.
value
Hodnota cookie.
version
comment
domain
maxAge
secure
path
Příklad: Přečtení hodnoty cookie
Vstup
{_request.cookies.__utmb.name}<br>
{_request.cookies.__utmb.value}
Výstup
__utmb<br>
1.32.10.1273752969

Viz také funkci setCookie.

Pro vložení příspěvku do diskuse se přihlašte.