vezbe 04 - forme i servleti

Post on 25-Sep-2015

245 Views

Category:

Documents

7 Downloads

Preview:

Click to see full reader

DESCRIPTION

JAVA

TRANSCRIPT

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

top related