Professional Documents
Culture Documents
Java Tecaj 12 Prezentacija
Java Tecaj 12 Prezentacija
2. dio
Marko Čupić
Lipanj, 2007.
Web formulari
• servleti i JSP-ovi s korisnikom
komuniciraju kroz parametre
– prijenos preko GET Æ parametri kroz URL
– prijenos preko POST Æ parametri putuju
kao tijelo zahtjeva (korisnik ih ne vidi)
• Važan link: Servlet specification v2.4
http://jcp.org/aboutJava/communityproc
ess/final/jsr154/index.html
Web formulari
• definirano od strane W3C:
http://www.w3.org/TR/html4/interact/fo
rms.html
Web formulari
• Kako bi se omogućilo da korisnik unosi
željene parametre Î Web formulari
• U HTML dokumentu to je tag <FORM>
• Osnovna struktura:
JMBAG=0012345678&Smjer=FER1
i poslati poslužitelju
Web formulari
• application/x-www-form-urlencoded
– Ovaj način kodiranja formular pretvara u
niz parova ime=vrijednost, pri čemu su
pojedini parovi razdvojeni znakom &
– Ako ime ili vrijednost sadrži takav znak (ili
neki drugi koji se posebno tretira), te
znakove treba zamijeniti odgovarajućom
escape sekvencom kako ne bi došlo do
zabune kod ponovne rekonstrukcije
sadržaja formulara na poslužitelju
Web formulari
• multipart/form-data
– Složeniji način
– Tipično se koristi zajedno s POST načinom
slanja kada se u sklopu formulara šalju
datoteke
Web formulari
• Tijelo formulara
– kontrole za unos različitih vrsta
– podataka
• linija teksta / šifre
• višelinijski unos
• isključive opcije
• višestruki izbor
• jednostavni izbornik
• skriveni parametri
• gumbi
Web formulari
• Primjer
Web formulari
• linija teksta / šifre
<input
type=”text”
name=”prezime”
value=”Peric”
size=”30”>
Web formulari
• linija teksta / šifre
<input
type=”password”
name=”zaporka”
value=”tajna”
size=”30”>
Web formulari
• Višelinijski unos
<textarea
name=”adresa”
rows=”5”
cols=”30”>
Nepoznato
</textarea>
Web formulari
• isključive opcije
<input
type=”radio”
name=”spol”
value=”M”
checked>Muško
• Više kontrola s istim imenom čini
međusobno isključivu grupu!
Web formulari
• višestruki izbor
<input
type=”checkbox”
name=”drustvo”
value=”ieee”
checked>IEEE
• Podržano više kontrola s istim
imenom!
Web formulari
• jednostavni izbornik / lista
<select name="posao" size="1">
<option value="nista" selected>Ništa od navedenog
<optgroup label="Edukacija">
<option value="edu1">Asistent
<option value="edu2">Nastavnik
</optgroup>
<optgroup label="Politika">
<option value="pol1">Političar
<option value="pol2">Glasnogovornik
</optgroup>
</select>
Web formulari
• skriveni parametri
<input
type=”hidden”
name=”rubrika”
value=”r18”>
• nema vizualne reprezentacije
Web formulari
• Gumbi
<input
type=”button”
value=”provjeri”
onClick=”neki_javascript_kod”
>
String
request.getRemoteUser();
boolean
request.isUserInRole();
Zaštita stranica
• Pojedini dijelovi Web aplikacije mogu se
zaštititi:
– programski
(“hardkodirati” provjere)
– deklarativno
(u web.xml datoteci)
Zaštita stranica
• Deklarativna zaštita:
u web.xml tag security-constraint
<security-constraint>
<display-name>Security Constraint for rokovi</display-name>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<url-pattern>/zasticeno/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<!-- Anyone with one of the listed roles may access this area -->
<role-name>manager</role-name>
<role-name>rokoviAdmin</role-name>
</auth-constraint>
</security-constraint>
Zaštita stranica
• U trenutku kada se zahtjeva
deklarativno zaštićena stranica:
– provjerava se je li korisnik već logiran
– ako je, provjerava se ima li potrebnu ulogu
– ako nije, prelazi se na fazu autentifikacije
– po uspješnoj autentifikaciji provjerava se
ima li korisnik potrebnu ulogu
Zaštita stranica
• Tomcat podržava nekoliko metoda
autentifikacije
• Dvije najčešće korištene:
– BASIC – sam klijent (Web preglednik) kroz
dijalog pita korisnika za username &
password
– FORM – Web aplikacija ima stranicu s
formularom za autentifikaciju
Zaštita stranica
• Metoda autentifikacije konfigurira se
tagom <login-config>:
<login-config>
<auth-method>FORM</auth-method>
<realm-name>
Example Form-Based Authentication Area
</realm-name>
<form-login-config>
<form-login-page>/jsp/secure/login.jsp</form-login-page>
<form-error-page>/jsp/secure/error.jsp</form-error-page>
</form-login-config>
</login-config>
Zaštita stranica
• Ako se koristi metoda BASIC
– <form-login-config> dio se izostavlja
Zaštita stranica
• Primjer formulara: login.jsp
<%@ page contentType="text/html; charset=utf-8" %>
<html>
<head><title>Login Page</title></head>
<body bgcolor="white“
onLoad="document.forms[0].j_username.focus();">
<form method="POST“
action='<%= response.encodeURL("j_security_check") %>'>
Username: <input type="text" name="j_username"><br>
Password: <input type="password" name="j_password"><br>
<input type="submit" value="Log In"> <input type="reset"><br>
</form>
</body>
</html>
Zaštita stranica
• Primjer formulara: error.jsp
<Realm
className="org.apache.catalina.realm.UserDatabaseRealm“
debug="0“
resourceName="UserDatabase"/>
Zaštita stranica
• Primjer datoteke
($CATALINA_HOME/conf/tomcat-users.xml)
<security-role>
<description>
Obican korisnik
</description>
<role-name>korisnik</role-name>
</security-role>
<security-role>
<description>
Administrator sustava
</description>
<role-name>administrator</role-name>
</security-role>
Zaštita stranica
• Osim ovoga, podaci se mogu dohvaćati
iz raznih baza (JDBCRealm), ...