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

Vezbe 05 - Obrada Parametara

Embed Size (px)

DESCRIPTION

Java internet programiranje

Citation preview

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