vezbe 05 - obrada parametara
DESCRIPTION
Java internet programiranjeTRANSCRIPT
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