vezbe 07 - prosledjivanje atributa
DESCRIPTION
JAvaTRANSCRIPT
VEBE 07 PROSLEIVANJE ATRIBUTASet i Get Atribute U MVC modelu Servlet ima ulogu da kontrolie tok informacija i prosleuje odgovarajue podatke na eljene stranice.Objekat bilo kojeg tipa se iz Servleta moe poslati preko request objekta metodom:
request.setAttribute(ime atributa, objekat);Na JSP stranici (ili Servlet-u) se objekat preuzima takoe preko request objekta metodom:
request.getAttribute(ime atributa);Poto se sa getAttribute moe pokupiti bilo koji tip objekta neophodno je uraditi kastovanje ili naznaku kojeg tipa je pokupljeni atribut.
PRIMER: Prosleivanje atributa msg iz Servleta i njegovo prihvatanje na JSP strani.
SERVLETJSP
request.setAttribute("msg", msg);String msg = (String) request.getAttribute("msg");
Sa ovako osmiljenim prenosom atributa JSP se moe dizajnirati da predstavlja VIEW za odreeni tip objekta ili njegovu kolekciju, stim to nije vano ko e proslediti objekat na ispis, pod pretpostavkom da zna ime atributa koji se alje.
Link sa parametrimaU velikom broju sluajeva neophodno je pomou nekog linka pozvati Servlet i u isto vreme proslediti mu i parametre za obradu.
PRIMER: Link ka Servletu ServletOsoba sa prosleenim parametrom 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");
ZADATAK:Kreirati klasu Auto sa :
parametrima: marka, cena, godite.
Konstuktorima
Get i set metodama
Kreirati stranicu index.jsp sa linkovima na: Stranicu unos.jsp.
ServletAuto sa parametrom ispis=lista ServletAuto sa parametrom ispis=jedan i br=3Kreirati stranicu unos.jsp koja:
Sadri formu za prosleivanje marke, cene i godita na ServletAuto post metodom.
Kupi atribut msg i ispisuje ga ako postojiKreirati stranicu auto.jsp za ispis jednog prosleenog auta tako to:
Kupi atribut Auto auto.
Kreira odgovarajuu tabelu i ispisuje podatke auta
Kreirati stranicu listaAuta.jsp za ispis prosleene liste auta tako to:
Kupi atribut ArrayListlistaAuta.
Kreira odgovarajuu tabelu i ispisuje podatke svih autaKreirati servlet ServletAuto koji u metodama :
doPost kupi parametre sa forme, proverava format cene i godita, kreira auto i prosleuje ga na auto.jsp preko imena atributra auto doGet kupi parametar ispis, i ako je ispis jednako:
lista kreira jednu listu auta i prosleuje je na listaAuta.jsp
jedan kupi parametar br i prosleuje auto iz liste sa pozicije br na auto.jsp.
PROBATI ZA VEBU grupni rad na projektu:
GRUPA 1 : kreira, index.jsp, listaAuta.jsp GRUPA 2: kreira unos.jsp, Auto.jsp,
GRUPA 3: kreira Auto.java, ServletAuto.java
Kada odgovarajua grupa zavri svoj deo kopira ga na server u odgovarajui zajedniki folder da ga preuzmu druge dve grupe.
Ako se ispotuju pravila saradnje po kompletiranju projekta sve bi trebalo da radi !!!
REENJE:public class Auto {
private String marka;
private int cena;
private int godiste;
public Auto(String marka, int cena, int godiste ) {
this.marka = marka;
this.cena = cena;
this.godiste = godiste;
} public Auto(){}
public String getMarka(){ return marka;}
public void setMarka(String marka){this.marka = marka;}
public int getCena(){return cena;}
public void setCena(int cena){this.cena = cena;}
public int getGodiste(){return godiste;}
public void setGodiste(int godiste){this.godiste = godiste;}}
index.jsp UNOS
LISTA
JEDAN
unos.jsp
MARKA :
CENA :
GODISTE :
poetna
0) {
%>
auto.jsp
PODACI O AUTOMOBILU
MARKA
CENA
GODISTE
listaAuta.jsp
PODACI O AUTOMOBILIMA
MARKA
CENA
GODISTE
ServletAuto.jsppublic class ServletAuto extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(
HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
ArrayList la = new ArrayList();
// simuliramo listu od 5 auta
la.add(new Auto("Skoda", 2000, 1998));
la.add(new Auto("BMW", 5800, 2004));
la.add(new Auto("Toyota", 3500, 2002));
la.add(new Auto("Audi", 4000, 2005));
la.add(new Auto("Kec", 750, 1998));
String ispis = req.getParameter("ispis");
if (ispis != null && ispis.length()>0){
if (ispis.equals("lista")){
// prosledjivanje liste na ispis
req.setAttribute("listaAuta",la);
req.getRequestDispatcher("listaAuta.jsp").forward(req, resp);
}else if (ispis.equals("jedan")){
String br = req.getParameter("br");
if (br != null && br.length()>0){
// prosledjivanje auta na ispis
req.setAttribute("auto",la.get(new Integer(br)));
req.getRequestDispatcher("auto.jsp").forward(req, resp);
}
}
}else {
req.setAttribute("msg","Parametri nisu dobrog formata !!!");
req.getRequestDispatcher("index.jsp").forward(req, resp);
}
}// kraj doGet
protected void doPost(
HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String marka = req.getParameter("marka");
String cenaStr = req.getParameter("cena");
String godisteStr = req.getParameter("godiste");
if (marka != null && marka.length()>0 &&
cenaStr != null && cenaStr.length()>0 &&
godisteStr != null && godisteStr.length()>0){
try {
int cena = Integer.parseInt(cenaStr);
int godiste = Integer.parseInt(godisteStr);
Auto a = new Auto(marka, cena, godiste);
req.setAttribute("auto", a);
req.getRequestDispatcher("auto.jsp").forward(req, resp);
} catch (Exception e) {
req.setAttribute("msg","Cena, godiste nisu dobrog formata");
req.getRequestDispatcher("unos.jsp").forward(req, resp);
}
}else{
req.setAttribute("msg","morate popuniti sva polja !!!");
req.getRequestDispatcher("unos.jsp").forward(req, resp);
}
}// kraj doPost}
1