vezbe 06 - mvc uvod
DESCRIPTION
Java internet programiranjeTRANSCRIPT
VEBE 06 (UVOD U MVC)
PRIMER 1: Modifikovati Primer 5 sa prolih vebi tako da ako je pri sabiranju 2 sabirka celobrojnog tipa zbir:
vei od 10 : TITLE jsp stranice e biti VECI a body bgcolor =blue.
manji od 10 : TITLE jsp stranice e biti MANJI a body bgcolor =green.
Jednak 10 : TITLE jsp stranice e biti TACNO a body bgcolor =red.
NAPOMENA: Na jednoj JSP stranici definisati formu (kao to je raeno u HTML jeziku), a zatim pozvati drugu JSP stranicu koja e generisati rezultat i ispisati ga. Na error.jsp stranici da pise GRESKA.
Sabiranje pomocu JSP
prvi :
drugi :
10){%>
VECE
Zbir je
10){%>
veci od 10.
manji od 10.
tacno 10.
Error Page
Greska!
MANE: mnogo logike na jednoj strani i kod postaje pomalo konfuzan za praenje pogotovu pri sloenijim primerima
MODEL VIEW CONTROLLER (MVC)
JSP uloga u prikazu dinamikih vrednosti
SERVLET kontrolie tok informacija
BAZA + KLASE predstavljaju model podataka
PRIMER 2: UVOD U MVC: Modifikovati Primer 1 tako da postoje 3 jsp stranice: manje, vece, tacno, error, na kojima nema java koda ve su statiki pripremljene da stranica:
Vece.jsp ima : TITLE VECI , body bgcolor =blue, ispis Zbir je veci od 10.
Manje.jsp ima : TITLE MANJI a body bgcolor =green, ispis Zbir je manji od 10.
Tacno.jsp ima : TITLE TACNO a body bgcolor =yellow, ispis Zbir je tacno 10.
Error.jsp ima TITLE GRESKA a body bgcolor =red i ispis Greska
Na index.jsp stranici definisati HTML formu za unos dva broja koja e post metodom da pozove MathServlet koji ima za cilj da u zavisnosti od prosleenih vrednosti dva broja donese odluku na koju stranicu e da prosledi klijentu.
MVC prvi primer
MVC pristup resavanja problema
Unesite prvi broj:
Unesite drugi broj:
Vece
Zbir je veci od 10
Manje
Zbir je manji od 10.
Nula
Zbir je tacno 10.
Error Page
Greska!
package servlets;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MathServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost
(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String prvi = request.getParameter("prvi");
String drugi = request.getParameter("drugi");
String address;
int a = 0, b = 0;
try {
a = Integer.parseInt(prvi);
b = Integer.parseInt(drugi);
int zbir = a + b;
if (zbir > 10) {
address = "/vece.jsp";
} else if (zbir < 10) {
address = "/manje.jsp";
} else {
address = "/tacno.jsp";
}
} catch (NumberFormatException nfe) {
address = "/error.jsp";
}
// prosledjivanje odgovora na odgovarajucu stranicu : address
request.getRequestDispatcher(address).forward(request, response);
}
}
MANE: vie kreiranih stranica
PREDNOSTI: svaka stranica je laka za tumaenje i logika i prezentacija su odvojene
ZADATAK 1: Potrebno je uneti podatke u formu i na kontrolnom servletu proveriti prosleene vrednosti. U konzoli ispisati prosleene vrednosti okoliko su svi zahtevi ok, u suprotnom ispisati ta je pogreno. Potrebno je kreirati:
Index.jsp ima formu za unos imena, prezimena, godina jedne osobe. Takoe na dnu strane neophodno je uneti rezultat prikazane matematike operacije (zbir dva random broja) radi provere napada.
ServletValidacija uitava prosleene parametre i proverava :
da li su svi parametri uneti,
da li je godina int
da li je sifra 12345
da li je taan rezultat matematike operacije.
// index.jsp
VALIDACIONA FOMRA
IME:
PREZIME:
GODINE:
SIFRA:
+=
// ServletValidacija
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
// ucitavanje parametara
String ime = request.getParameter("ime");
String prezime = request.getParameter("prezime");
String godine = request.getParameter("godine");
String sifra = request.getParameter("sifra");
String zbir = request.getParameter("zbir");
String prvi = request.getParameter("prvi");
String drugi = request.getParameter("drugi");
// OBAVEZNO : provera da li su svi parametri pokupljeni
if (ime!= null && ime.length()>0 &&
prezime!= null && prezime.length()>0 &&
godine!= null && godine.length()>0 &&
sifra!= null && sifra.length()>0 &&
zbir!= null && zbir.length()>0 &&
prvi!= null && prvi.length()>0 &&
drugi!= null && drugi.length()>0 ){
// pokusaj pretvaranja godine i zbira u ceo broj
try {
int godInt = Integer.parseInt(godine);
int zbirInt = Integer.parseInt(zbir);
// provera sifre i zbira
if(sifra.equals("12345") &&
(zbirInt == new Integer(prvi)+ new Integer(drugi))){
System.out.println("SVE OK !!!");
//OSTATAK LOGIKE POSLE USPESNE VALIDACIJE IDE OVDE
}else{
System.out.println("Pogresna sifra ili zbir !!!");
}
} catch (Exception e) {
System.out.println("Niste uneli ceo broj !!!");
}
}else {
System.out.println("Morate popuniti sva polja !!!");
}
}
NAPOMENA:
System.out.println() ispisuje vrednosi u eclipse konzoli (kontrolna ispisivanja)
Out.println() kreira sadrzaj stranice tj. vidi se u browser-u (nije MVC)
SERVLET KONTOLIE PODATKE I DONOSI ODLUKE.
Sledeci cas ceo MVC, prosleivanje atributa na stranicu za ispis
7