vezbe 06 - mvc uvod

10
VEŽBE 06 – (UVOD U MVC) PRIMER 1: Modifikovati Primer 5 sa prošlih vežbi tako da ako je pri sabiranju 2 sabirka celobrojnog tipa zbir: veći 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 rađeno u HTML jeziku), a zatim pozvati drugu JSP stranicu koja će generisati rezultat i ispisati ga. Na error.jsp stranici da pise GRESKA. <!-- 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" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 1

Upload: serbiaduke

Post on 25-Sep-2015

11 views

Category:

Documents


0 download

DESCRIPTION

Java internet programiranje

TRANSCRIPT

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