最高人民法院、最高人民检察院关于办理利用互联网、移动通讯终端、声讯台制作、复制、出版、贩卖、传播淫秽电子信息刑事案件具体应用法律若干问题的解释(二)
JSP je technológia Java, ktorá pomáha softvérovym vyvojárom obsluhova? dynamicky generované webové stránky, zalo?ené na HTML, XML alebo ostatnych typoch dokumentov.
Na internete sa mo?no stretnú? s dvoma základnymi typmi stránok, statické a dynamické. Obsah statickej stránky je rovnaky a to bez oh?adu na to aky u?ívate? sa ku stránke prihlási. Naproti tomu dynamické stránky prisp?sobujú svoj obsah u?ívate?ovi t. j. reagujú na jeho impulzy, menia pod?a jeho potrieb, pam?tá si jeho nastavenie od minulej náv?tevy a dáva mu len informácie, ktoré potrebuje.[1]
JSP patrí medzi technológiu tvorby dynamickych stránok na webovom serveri; okrem nej sa mo?no stretnú? s CGI (Common Gateway Interface), ASP (Active Server Pages), PHP (PHP: Hypertext Preprocessor) a JavaScript (ide o technológiu pou?ívanú na strane klienta).[1] JSP dokument je zmesou kódu Javy, XML, JDBC, HTML a JavaScriptu.
Technológia JSP
[upravi? | upravi? zdroj]Stránka JSP sa skladá z viacerych ?astí:
- Skriptovacie elementy,
- direktívy,
- in?trukcie (akcie),
- elementy XML.
Príklad jednoduchej stránky JSP:
<% if (session.isNew()) %>
Prosím nech sa pá?i vstúpi?!
<% else %>
Vitajte sp??!
V ?preklade“ to znamená:
JAVA: Ak u?ívate? e?te nenav?tívil tento webovy server
HTML: Prosím nech sa pá?i vstúpi?!
JAVA: inak
HTML: Vitajte sp??!
Preklad JSP dokumentu
[upravi? | upravi? zdroj]Popis procesu prekladu dokumentu JSP:
- Vytvorenie dokumentu JSP napr. index.JSP
- Umiestnenie dokumentu na server, kde be?í kontajner JSP
- U?ívate? nav?tívi dokument index.JSP
- Po zadaní prvého po?iadavku na dokument kontajner JSP prelo?í dokument do jazyku Java. Vysledny prelo?eny dokument bude ma? názov _index.java
- Preklad _index.java do bytového kódu _index.class
- Kontajner JSP na?íta súbor triedy a na základe zistenej definície vytvorí novy objekt. Dochádza k inicializácii v?etkych premennych. Tento krok m??eme pomenova? ako inicializácia samotného dokumentu JSP.
- Kontajner vytvorí zodpovedajúci dokument a odo?le ho k u?ívate?ovi. Tento dokument neobsahuje ?iadny zostatkovy kód JSP t. j. u?ívate? dostane dokument (Prosím nech sa pá?i vstúpi?!) alebo dokument (Vitajte sp??!).
- Pri ?al?ích po?iadavkách na dokument JSP sa vraciame len k bodu ?íslo 7 a? do chvíle kym kontajner príslu?nej triedy neodstráni.
- Ak kontajner JSP potrebuje uvo?ni? ?as? pam?te a nikto dokument JSP nepo?aduje m??e kontajner súbor triedy z pam?ti vymaza? alebo ke? správca systému sa rozhodne kontajner JSP vypnú?. Objekt je z pam?te uvo?neny.
- Pri ?al?ej náv?teve sa kontajner JSP vracia k bodu 6.[1]
Skriptovacie zna?ky
[upravi? | upravi? zdroj]Dokument JSP obsahuje dva druhy zna?iek resp. elementov a to HTML a príkazy JSP. HTML elementy sú ohrani?ené ?picatymi zátvorkami (znakmi nerovnosti < a > ). Príkazy JSP ?picaté zátvorky a znak %. Technológia JSP pou?íva tri druhy skriptovacích elementov a to deklarácia, vyrazy a skriplety.[1]
Deklarácia
[upravi? | upravi? zdroj]Deklarácia sa vytvára tak, ?e sa zapí?e v jazyku Java medzi zna?ky <%! a %>. Príklad:
<%! int pocet=100; %>
Príklad vytvorí premennú ?pocet dátového typu int“ a inicializuje sa na hodnotu 100. Hodnota premennej sa m??e meni?. K inicializácii dokumentu dochádza ve?mi zriedka (mo?no ho poklada? za jednorazovú ?innos?).[1]
Vyrazy (Expressions)
[upravi? | upravi? zdroj]Vyraz JSP vzniká napísaním vyrazu v jazyku Java a uzatvorenia ho medzi zna?ky <%= a %>.
<%= pocet+1 %>
Vyraz JSP sa vyhodnotí ako 101. Pri náv?teve stránky sa na miesto premennej po?et doplní jej hodnota t. j. 100. D?le?ité je, ?e vyraz ?pocet + 1“ nemení hodnotu premennej ?pocet“, ktorá ostáva na hodnote 100.[1]
Skriplety
[upravi? | upravi? zdroj]Skriplet ?as? kódu v jazyku Java ohrani?eny znakmi <% a %>.
<%
For (int i=100; i >=0; i--){
%>
Na polici stojí <%= i %> f?a?iek piva. <br>
<%
}
%>
Alebo
<%
For (int i=100; i >=0; i--){
out.println(“Na polici stojí” + i + “ f?a?iek piva.”`;
}
%>
Rozdiel medzi skripletom a deklaráciou mo?no popísa? nasledovne. Pri deklarácií je hodnota ?pocet“ inicializovaná na 100, to v?ak prebieha len pri inicializácií dokumentu (?o nie je a? tak ?asto). Skriplet je prevedeny pri ka?dej po?iadavke na stránku, t. j. premenná i je nastavená na 100, ale ka?dou náv?tevou sa zni?uje a? kym jej hodnota nie je 0.[1]
Deklarácia | Skriplet | Vyraz | |
---|---|---|---|
Znaky uzatvorenia | <%! %> | <% %> | <%= %> |
Obsahuje | Jednu alebo viacej deklarácií v jazyku Java. | Kód v jazyku Java. | Jeden vyraz v jazyku Java. |
ú?el | Vytvorí názov a m??e mu priradi? i hodnotu. | Poskytuje informáciu systému, aby urobil ur?itú akciu. | Vracia hodnotu. |
Spustenie | Pri prvej náv?teve stránky alebo v okamihu, ke? kontajner JSP op?tovne inicializuje stránku. | Kedyko?vek, ke? niekto nav?tívi stránku. | Kedyko?vek, ke? niekto nav?tívi stránku. |
Komentáre
[upravi? | upravi? zdroj]Komentár je ?as? textu, ktory neprekladá ani kontajner JSP ani webovy prehliada?. Príklady komentárov:
<%!
int count=100; //Hodnota premennej count
%>
<!- Zobrazí inzerát ?íslo ->
<%-
Za predpokladu, ?e máme obrázky o?íslované
od 100 do 111.
-%>
Platnos? a ?ivotnos? identifikátorov
[upravi? | upravi? zdroj]Základné definície
Názov (identifikátor) je slovo pou?ité k ozna?eniu nie?oho napr. názvy premennych, názvy metód a pod.
Platnos? názvu je oblas? kódu, v ktorej je mo?né dany názov pou?íva? pre ozna?enie ur?itého vyznamu.
?ivotnos? názvu je dynamicky interval, ktory ur?uje, ako dlho bude názov rezervovany v pam?ti. Lokálna premenná metódy (premenná s platnos?ou metódy) je deklarovaná vo vnútri metódy jazyka Java. Platnos? tejto premennej sa obmedzuje iba na danú metódu. ?ivotnos? premennej sa obmedzuje na jedno volanie metódy. Ak je metóda volaná po druhykrát, je premenná znovu vytvorená a op?tovne inicializovaná.[1]
Premenná na úrovni triedy (premenná s platnos?ou triedy) je deklarovaná mimo metódy. Platnos? tejto premennej m??e zahrňova? mnoho metód. Premenná pre?ije zavolanie jedinej metódy a pokia? je metóda zavolaná po druhykrát, premenná sa znovu nevytvára a nie je znovu inicializovaná.[1] Príklad:
<%!
int i=30;
public void mojaMetoda (JspWriter out) throws Exception {
int j=10;
out.println(“Vnútri metódy: sa i rovná“ + i);
out.println(“Vnútri metódy: sa j rovná“ + j);
i++;
}
%>
Mimo metódy: <br />
i sa rovná <%= i %>. <br />
Ke? sa pri?íta k premennej i hodnotu 1 <% i++ %> bude
sa hodnota premennej i rovna? <%= i %>. <p>
Volanie metódy mojaMetoda():<br />
<% mojaMetoda(out); %><br />
<% mojaMetoda(out); %><br />
Premenná j je deklarovaná vnútri metódy mojaMetoda () t. j. premenná j je lokálnou premennou tejto metódy. Prístup k tejto premennej má len kód vnútri danej metódy. Premenná i nie je deklarovaná vnútri metódy t. j. má teda platnos? triedy, ?o znamená, ?e ju mo?no pou?íva? na celej JSP stránke. Hodnota premennej i má platnos? triedy, tak?e jej hodnota je inicializovaná len pri inicializácií dokumentu JSP, tak pri ?al?ej náv?teve táto hodnota sa mení.[1]
Premenná i nie je deklarovaná vo vnútri metódy. Má teda platnos? triedy. Je ju mo?né pou?íva? na celej stránke. Premenná i má rovnako ako iné premenné s platnos?ou triedy, dlhú ?ivotnos?. Existuje tak dlho, dokia? nie je odstránená stránka JSP, na ktorej bola definovaná. Hodnota 30 je inicializovaná iba pri inicializácií dokumentu JSP. Ke? premenná i objaví na stránke po druhykrát, rovná sa jej hodnota u? ?íslu 31 a nie 30.[1]