vezbe 05 - obrada parametara

11
VEŽBE 05 – OBRADA PARAMETARA Elementi forme prosleđeni na obradu kupe se na sledeći način. getParameter Svi elementi forme se automatski prosleđuju na krajni cilj naveden u action parametru. Na krajnom cilju (target - JSP stranica ili Servlet) parametar se preuzima pomoću request objekta metodom: request.getParameter(„ime parametra forme“); Pošto se sa kroz http salje samo tekst to znači da se svaki prosleđeni parametar šalje kao String. Zato getParameter vraća String kao rezultat i to vrednost parametra određenog imena. PRIMER: Prosleđivanje parametra „ime“ sa forme i njegovo prihvatanje. FORMA JSP / SERVLET <input type="text" name="ime"> String ime = request.getParameter("ime"); Ukoliko se prosleđuje više parametara istog imena (combo grupa) koristi se o request.getParameterValues(“ime") Link sa parametrima U velikom broju slučajeva neophodno je pomoću nekog linka pozvati Servlet ili JSP stranicu i u isto vreme proslediti im i parametre za obradu. PRIMER: Link ka Servletu ServletOsoba sa parametrima akcija=“ispis“ i br=“3“. 1

Upload: serbiaduke

Post on 09-Nov-2015

219 views

Category:

Documents


2 download

DESCRIPTION

Java internet programiranje

TRANSCRIPT

VEBE 05 OBRADA PARAMETARAElementi forme prosleeni na obradu kupe se na sledei nain.

getParameterSvi elementi forme se automatski prosleuju na krajni cilj naveden u action parametru.Na krajnom cilju (target - JSP stranica ili Servlet) parametar se preuzima pomou request objekta metodom:

request.getParameter(ime parametra forme);Poto se sa kroz http salje samo tekst to znai da se svaki prosleeni parametar alje kao String. Zato getParameter vraa String kao rezultat i to vrednost parametra odreenog imena.

PRIMER: Prosleivanje parametra ime sa forme i njegovo prihvatanje.FORMAJSP / SERVLET

String ime = request.getParameter("ime");

Ukoliko se prosleuje vie parametara istog imena (combo grupa) koristi se request.getParameterValues(ime") Link sa parametrimaU velikom broju sluajeva neophodno je pomou nekog linka pozvati Servlet ili JSP stranicu i u isto vreme proslediti im i parametre za obradu.

PRIMER: Link ka Servletu ServletOsoba sa parametrima akcija=ispis i br=3.

ISPIS

Ovako prosleeni parametri se u Servletu kupe u doGet metodi sa: String akcija = request.getParametar("akcija");String br = request.getParametar("br");

NAPOMENA: nije vano ko e proslediti parametar, ve ime parametra koji se alje.

Primer 1: Realizovati sabiranje 2 sabirka, celobrojnog tipa, koristei JSP stranicu. Na jednoj JSP stranici definisati formu (kao to je raeno u HTML 3), a zatim pozvati drugu JSP stranicu koja e generisati rezultat i ispisati ga.

Sabiranje pomocu JSP prvi:
drugi:

Sabiranje pomocu JSP - REZULTAT Zbir je:

NAPOMENA : proveriti da li su prvi i drugi integeri, tj da li je mogue uraditi parseInt.

Resenje: Zaokruiti nesiguran kod sa try catch blokom

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);

ZADATAK 1: Za kreiranu formu za piceriju (sa prethodnog asa) sa svim elementima forme proslediti zahtev servletu ServletTest koji e da proita prosleene parametre i da kreira stranicu izgleda prikazanog ispod.

Reenje:

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("");}

Prednosti JSP

Pomou JSP se mogu uraditi iste stvari kao i pomou servleta, ali korienje JSP olakava pisanje samog HTML koda

itanje i odravanje HTML koda U odnosu na korienje servleta imamo: Jednostavnije kreiranje HTML koda Korienje standardnih alata (npr. Adobe Dreamweaver)

Podela posla izmeu Java programera i dizajnera (HTML)

NAPOMENA: JSP programeri moraju poznavati servlet programiranjeZADATAK 2: Kreiranje JSP stranice sa vrednostima prosleenim sa forme iz prethodnog primera. Dodati i proveru unete ifre. Ako korisnik unese ifru 12345 moe da kupuje u suprotnom dobija obavetenje NEMATE PRAVO NA PORUIVANJE !!!Reenje:

PICERIJA

Vasa porudzbina :

PICA :

komada:

velicina:

DODACI:

,


Podaci o poruciocu:


Ime:


Telefon:


Adresa:

NEMATE PRAVO NA PORUIVANJE !!!

1