Download - Vezbe 04 - Forme i Servleti
VEBE 04 FORME I SERVLETI
VEBE 04 FORME I SERVLETIFORMEZa implementaciju formi koristi se osnovni tag . Opti oblik ovog taga je:
...
Najvanija dva atributa taga su:
ACTION - koji sadri adresu (URL) programa na serveru;
METHOD - kojim je opisana metoda prenosa argumenata programa. Ovaj atribut moe imati vrednosti GET ili POST.
ELEMENTI FORME
Unutar forme moe postojati nekoliko elemenata pomou kojih se prosleuju vrednosti.
Tekstualno polje (text, hidden, textarea)Ime:
Sifra:
Opis: tekst
Polje za potvrdu (checkbox)Koje predmete ste
polozili?
UUP
PJ
OOP
IP
Radio dugme (radio button)Koji predmet najvise
volite?
UUP
PJ
OOP
IP
Padajua lista (select) Koji predmet trenutno
slusate?
Matematika 1 Internet programiranje Hemiju
Dugme (button)
NAPOMENA:
SVI ELEMENTI KOJI SE ELE PROSLEDITI MORAJU BITI UNUTAR TAGA Moraju da imaju razliito ime (name) radi identifikacije (osim kada su u grupi)PRIMER FORME SA SVIM ELEMENTIMA
Picerija CAO :)
PiceKoliko pica elite?
Tip
Velika
Srednja
Mala
Dodaci
PecurkeKecapJajeMaslinePodaci o poruciocu:Ime: Telefon:
Adresa:
Sifra:
FORMA 1 sve opcijeOvako popunjena forma se pritiskom na dugme Posalji prosleuje servletu Servlet na obradu metodom GET. Zaglavlje zahteva izgleda ovako:
http://localhost:8080/IP_-_04/ Servlet?num=1&size=s&top=p&top=j&top=m&name=Milan&phone=064%2F000000&address=+Svetog+Save&sifra=123321321
Vidimo da posle znaka pitanja ? redom se prosleuju vrednosti parametara po nazivima koje smo im dali u okviru atributa nameAko se zahtev alje metodom POST zaglavlje zahteva izgleda ovako:
http://localhost:8080/IP_-_04/Servlet
Prikrivaju se vrednosti prosleenih parametara to je veoma vano u sluajevima gde se unose neke poverljive informacije kao to je u ovom sluaju bila ifra koja se pri GET slanju mogla videti.SERVLETI Izvravaju logiku na serverskoj strani Obrauju zahteve i mogu da kreiraju odgovor u vidu kompletnih html stranica
Kreiraju se u okviru dinamikog projekta u okviru src dela
Nakon kreiranja dobija se sledei kod:
public class TEST extends HttpServlet {
private static final long serialVersionUID = 1L;public TEST() { super();}protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// ovde se resava problematika GET metode
}protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {// ovde se resava problematika POST metode
}}
Dve osnovne metode su doGet , doPost sa parametrima
HttpServletRequest request, HttpServletResponse response Request se koristi za prikupljanje prosleenih parametara sa forme Response se koristi za prosleivanje kreiranog odgovora
Postoje jo i sledee metode:
Init: radi inicijalizaciju i poziva se samo jednom
Service: obrauje vie zahteva i poziva druge metode
Destroy: poziva se samo jednom pri iskljuenju servleta
Prilikom kreiranja ServletTest se mapira u web.xml fajlu i dobija se sledei kod ServletTest ServletTest rs.ac.kg.tfc.ServletTest
ServletTest /ServletTest
NAPOMENA: nikada ne kopirati servlet iz drugog projekta jer ga nee imati u web.xml fajlu pa ga samim tim nee ni server prepoznati
Poziv servleta sa html stranice U okviru taga podeava se akcja na servlet (preko imena servelta) i metod zahteva
itanje podataka u servletu sa prosleene html forme
request.getParameter(ime")
Dobija se String vrednost prvog elementa koji se zove ime Rezultat je null ako ne postoji takav parametar u elementima forme
request.getParameterValues(ime")
Dobija se niz String[] vrednosti za sve elemente koji se zovu ime Dobija se niz sa jednim elementom, ako se ime pojavljuje samo jednom
Rezultat je null ako ne postoji takav parametar u elementima forme
request.getParameterNames() ili request.getParameterMap()
Dobija se Enumeration ili Map objekti od poslatih elemenata i obiajeno je da je rezervisano za debagovanje Obrada prikupljenih podataka sa forme koja ima jedno polje imeprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html");
String ime = request.getParameter("ime");
PrintWriter out = response.getWriter();
String docType =
"\n";
out.println(docType +
"\n" +
"Hello\n"+
"\n" +
"Hello "+ime+"\n" +
"");
}
Veoma je vano ispitati da li je uspeno uitan parametar pre njegovog korienja
Svi parametri se UVEK prosleuju kao String pa se moraju konvertovati u eljeni format u try-catch bloku ako je potrebna njihova obrada.
try{ a=Integer.parseInt(prvi); b=Integer.parseInt(drugi); } catch(NumberFormatException nfe){
// ovde preduzeti neophodne korake u sluaju pogrenih parametara
nfe.printStackTrace(); }
Mi emo servlete koristi najvie u delu kontrole aplikacije a ne u kreiranju stranica zbog komplikovanosti. Servlet moe da prosledi obradu drugom servletu ili da kreirani odgovor prosledi na jsp stranicu
request.getRequestDispatcher("index.jsp").forward(request, response);
VEBA: Za kreiranu formu za piceriju (Forma 1 sve opcije) sa svim elementima forme proslediti zahtev servletu ServletTest koji e da proita prosleene parametre i da kreira stranicu ovakvog izgleda.
Resenje:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String num = request.getParameter("num");
String size = request.getParameter("size");
String[] top = request.getParameterValues("top");
String name = request.getParameter("name");
String phone = request.getParameter("phone");
String adress = request.getParameter("address");
String pass = request.getParameter("pass");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println(
"\n" +
"Hello\n"+
"\n" +
"PICERIJA
");
out.println(
"vasa porudzbina :
"+
"PICA : komada: "+ num+" velicina:
"+size+"
DODACI:");
for(String pom: top)
out.println(pom+", ");
out.println("
Podaci o poruciocu:" +
"
Ime:"+name+
"
Telefon:"+phone+
"
Adresa:"+adress
);
out.println("");}
1