You are on page 1of 8

VEBE 05 OBRADA PARAMETARA

Elementi forme prosleeni na obradu kupe se na sledei nain.

getParameter
Svi 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.


FORMA
<input type="text" name="ime">

JSP / SERVLET
String ime = request.getParameter("ime");

Ukoliko se prosleuje vie parametara istog imena (combo grupa) koristi se


o request.getParameterValues(ime")

Link sa parametrima
U 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.
<a href="ServletOsoba?akcija=ispis&br=3">ISPIS </a>

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.
<!-- index.jsp -->
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<html>
<head>
<title>Sabiranje pomocu JSP</title>
</head>
<body>
<form name="forma" method="post" action="rezultat.jsp">
prvi: <input type="text" name="prvi">
<br>
drugi: <input type="text" name="drugi">
<br>
<input type="submit" value="Saberi">
</form>
</body>
</html>
<!-- rezultat.jsp -->
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%!
int a, b, zbir;
String prvi, drugi;
%>
<%

prvi = request.getParameter("prvi");
drugi = request.getParameter("drugi");
a = Integer.parseInt(prvi);
b = Integer.parseInt(drugi);
zbir = a+b;

%>
<html>
<head>
<title>Sabiranje pomocu JSP - REZULTAT</title>
</head>
<body>
<h1>Zbir je: <%=zbir%> </h1>
</body>
</html>

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,
throws ServletException, IOException {
// ovde se resava problematika GET metode
}

HttpServletResponse response)

protected void doPost(HttpServletRequest request,


throws ServletException, IOException {
// ovde se resava problematika POST metode
}
}

HttpServletResponse response)

Dve osnovne metode su doGet , doPost sa parametrima


HttpServletRequest request, HttpServletResponse response

o Request se koristi za prikupljanje prosleenih parametara sa forme


o Response se koristi za prosleivanje kreiranog odgovora

Postoje jo i sledee metode:


o Init: radi inicijalizaciju i poziva se samo jednom
o Service: obrauje vie zahteva i poziva druge metode
o Destroy: poziva se samo jednom pri iskljuenju servleta

Prilikom kreiranja ServletTest se mapira u web.xml fajlu i dobija se sledei kod

<servlet>
<description></description>
<display-name>ServletTest</display-name>
<servlet-name>ServletTest</servlet-name>
<servlet-class>rs.ac.kg.tfc.ServletTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletTest</servlet-name>
<url-pattern>/ServletTest</url-pattern>
</servlet-mapping>

o 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


o U okviru taga <form></form> podeava se akcja na servlet (preko imena
servelta) i metod zahteva
<form action="ServletTest" method="get">

itanje podataka u servletu sa prosleene html forme


o request.getParameter(ime")
Dobija se String vrednost prvog elementa koji se zove ime
Rezultat je null ako ne postoji takav parametar u elementima forme
o 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
4

o 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 ime

protected void doGet(HttpServletRequest request, HttpServletResponse


response) throws ServletException, IOException {
response.setContentType("text/html");
String ime = request.getParameter("ime");
PrintWriter out = response.getWriter();
String docType =
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "+
"Transitional//EN\">\n";
out.println(docType +
"<HTML>\n" +
"<HEAD><TITLE>Hello</TITLE></HEAD>\n"+
"<BODY BGCOLOR=\"#FDF5E6\">\n" +
"<H1>Hello "+ime+"</H1>\n" +
"</BODY></HTML>");
}

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(
"<HTML>\n" +
"<HEAD><TITLE>Hello</TITLE></HEAD>\n"+
"<BODY>\n" +
"<H1>PICERIJA</H1><br>");
out.println(
"vasa porudzbina :<br>"+
"PICA : komada: "+ num+" velicina:
"+size+"<br><H3>DODACI:</H3>");
for(String pom: top)
out.println(pom+", ");
out.println("<br><H3>Podaci o poruciocu:</H3>" +
"<br>Ime:"+name+
"<br>Telefon:"+phone+
"<br>Adresa:"+adress

);
out.println("</BODY></HTML>");
}

Prednosti JSP

Pomou JSP se mogu uraditi iste stvari kao i pomou servleta, ali korienje JSP olakava
o

pisanje samog HTML koda

itanje i odravanje HTML koda

U odnosu na korienje servleta imamo:


o

Jednostavnije kreiranje HTML koda

Korienje standardnih alata (npr. Adobe Dreamweaver)

Podela posla izmeu Java programera i dizajnera (HTML)

NAPOMENA: JSP programeri moraju poznavati servlet programiranje

ZADATAK 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:
<%
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");
%>
<body>
<H1>PICERIJA</H1><br>
<% if (pass.equals("12345")){ %>
Vasa porudzbina :<br>
PICA : <br>
komada: <%=num %> <br>
velicina: <%=size %><br>
<H3>DODACI:</H3>
<%for(String pom: top){ %>
<%=pom %>,
<%} %>
<br>
<H3>Podaci o poruciocu:</H3>
<br>Ime:<%=name %>
<br>Telefon:<%=phone %>
<br>Adresa:<%=adress %>
<%}else{%>
NEMATE PRAVO NA PORUIVANJE !!!

<%} %>
</body>

You might also like