8
VEŽBE 09 – DATABASE ACCESS OBJECT (DAO) ZADATAK: M Kreirati klasu Osoba opisanu sa atributima: idosoba, ime, prezime, JMBG, vremeUpisa (Timestamp) Dodati potrebne get i set metode kao i konstruktore. Kreirati klasu OsobaDAO koja u konstruktoru podešava konekciju sa MySQL bazom podataka i kao funkcionalnosti pri radu implementira sledeće metode: public void insertOsoba(Osoba osoba) public void deleteOsoba(int idosoba) public Osoba getOsobaById(int idosoba) public ArrayList<Osoba> getLast10Osoba() V Kreirati stranicu index.jsp sa linkom na stranicu unos.jsp i linkom na ServletOsaba sa parametrom akcija=ispis“. Kreirati stranicu unos.jsp sa formom za prosleđivanje imena, prezimena i JMBG na ServletOsaba metodom POST. Kreirati stranicu ispis.jsp koji preuzima prosleđenu listu studenata i ispisuje je u tabelu sledećeg formata. C Kreirati ServletOsoba koji u : 1

Vezbe 09 - DAO

Embed Size (px)

DESCRIPTION

Java

Citation preview

Page 1: Vezbe 09 - DAO

VEŽBE 09 – DATABASE ACCESS OBJECT (DAO)

ZADATAK:

M

Kreirati klasu Osoba opisanu sa atributima:

idosoba, ime, prezime, JMBG, vremeUpisa (Timestamp)

Dodati potrebne get i set metode kao i konstruktore.

Kreirati klasu OsobaDAO koja u konstruktoru podešava konekciju sa MySQL bazom podataka i kao funkcionalnosti pri radu implementira sledeće metode:

public void insertOsoba(Osoba osoba) public void deleteOsoba(int idosoba) public Osoba getOsobaById(int idosoba) public ArrayList<Osoba> getLast10Osoba()

V

Kreirati stranicu index.jsp sa linkom na stranicu unos.jsp i linkom na ServletOsaba sa parametrom akcija=ispis“.

Kreirati stranicu unos.jsp sa formom za prosleđivanje imena, prezimena i JMBG na ServletOsaba metodom POST.

Kreirati stranicu ispis.jsp koji preuzima prosleđenu listu studenata i ispisuje je u tabelu sledećeg formata.

C

Kreirati ServletOsoba koji u :

post metodi obrađuje akciju „unos“, provera da li JMBG ima 13 karaktera i ako je OK unosi studenta u bazu, u suprotnom vraća poruku „JMBG pogrešan“

get metodi obrađuje akciju „ispis“. Iz baze uzima poslednjih 10 studenata metodom DAO klase i tako dobijenu listu studenata prosleđuje na ispis.jsp

1

Page 2: Vezbe 09 - DAO

REŠENJE: VAŽNIJI DELOVI KODA

public class Osoba {private int idosoba;private String ime;private String prezime;private String JMBG;private Timestamp vremeUpisa;

}

public class OsobaDAO { private DataSource ds;

// DEFINICIJA KONEKCIONIH STRINGOVAprivate static String INSERTOSOBA =

"INSERT INTO osoba (ime, prezime, JMBG, vremeUpisa) VALUES (?, ?, ?, CURRENT_TIMESTAMP)";

// DEFINICIJA KONSTRUKTORA ZA PODESAVNJE KONEKCIJEpublic OsobaDAO(){try {

InitialContext cxt = new InitialContext();if ( cxt == null ) { } ds = (DataSource) cxt.lookup( "java:/comp/env/jdbc/mysql" ); if ( ds == null ) { } } catch (NamingException e) {}

}

// DEFINICIJA METODE ZA UNOS OSOBE U BAZUpublic void insertOsoba(Osoba osoba){

Connection con = null;PreparedStatement pstm = null;

try {con = ds.getConnection();pstm = con.prepareStatement(INSERTOSOBA);

pstm.setString(1, osoba.getIme());pstm.setString(2, osoba.getPrezime());pstm.setString(3, osoba.getJMBG());

pstm.execute();}

catch (SQLException e) {

e.printStackTrace();}try {

con.close();} catch (SQLException e) {

e.printStackTrace();}

}// DEFINICIJA OSTALIH METODA ...

}

2

Page 3: Vezbe 09 - DAO

public class ServletOsoba extends HttpServlet {

protected void doGet(request, response) {//prikupljanje parametara

String akcija = new String(request.getParameter("akcija"));

//inicijalizacija DAO klase za konekciju sa bazomOsobaDAO od = new OsobaDAO();ArrayList<Osoba> lo = new ArrayList<Osoba>();

//obavezna provera tacnosti prosledjenih parametara if (akcija != null && akcija.length()>0){

if(akcija.equals("ispis")){

// poziv DAO metodelo = od.getLast10Osoba();

// setovanje atributa ListaOsoba lorequest.setAttribute("lo", lo);

// prosledjivanje odgovora na ispis.jsp request.getRequestDispatcher("ispis.jsp").forward(request, response);

}}else{

//odgovor za lose primljene parametre request.setAttribute("msg","Greska!!!"); request.getRequestDispatcher("unos.jsp").forward(request, response);}

}

protected void doPost(request, response) {

// prikupljanje parametaraString ime = new String(request.getParameter("ime"));String prezime = new String(request.getParameter("prezime"));String JMBG = new String(request.getParameter("JMBG"));String akcija = new String(request.getParameter("akcija"));

// inicijalizacija DAO klase za konekciju sa bazomOsobaDAO od = new OsobaDAO();

// obavezna provera tacnosti prosledjenih parametaraif (ime != null && ime.length()>0 &&

prezime != null && prezime.length()>0 && JMBG != null && JMBG.length()>0 && akcija != null && akcija.length()>0){

// obrada zahteva ako su svi parametri dobro prosledjeni if(akcija.equals("UNOS")){

if (JMBG.length()!= 13){ request.setAttribute("msg", "JMBG pogresan !!!"); request.getRequestDispatcher("unos.jsp").forward(request, response);}else{

// kreiranje osobe od prosledjenih parametaraOsoba osoba = new Osoba(ime, prezime, JMBG);

// unos osobe u bazu pomocu metode DAO klaseod.insertOsoba(osoba);

3

Page 4: Vezbe 09 - DAO

// odgovor posle obradjenih parametara request.setAttribute("msg", "Uspesan unos !!!"); request.getRequestDispatcher("unos.jsp").forward(request, response);}

}}else{

//odgovor ako parametri nisu dobro prosledjeni request.setAttribute("msg","Morate popuniti sva polja !!!");request.getRequestDispatcher("unos.jsp").forward(request, response);

}}}index.jsp<a href="unos.jsp"><font color="blue"> UNOS </font></a><br><a href="ServletOsoba?akcija=ispis"><font color="blue"> ISPIS </font></a><br>unos.jsp<table>

<form name="myform" action="ServletOsoba" method=post><tr height="25">

<td align="right" width="20%" bgcolor="#FFFF66">IME :</td><td><input type="text" name="ime" id="ime" size="20"></td>

</tr><tr height="25">

<td align="right" width="20%" bgcolor="#FFFF66">PREZIME :</td><td><input type="text" name="prezime" id="prezime" size="20"></td>

</tr><tr height="25">

<td align="right" width="20%" bgcolor="#FFFF66">JMBG :</td><td><input type="text" name="JMBG" id="adresa" size="20"></td>

</tr><tr height="25">

<td align="center" width="20%" colspan="2"><input type="submit"name="akcija" value="UNOS"></td>

</tr></form><tr height="25">

<td colspan="2"> <a href="index.jsp"><font color="blue"><<== povratak </font></a> </td>

</tr><%String msg = (String) request.getAttribute("msg");if (msg!= null && msg.length()>0){%><tr height="25">

<td colspan="2"><%= msg %></td></tr>

<%} %></table>ispis.jsp

<table width="70%" border="0" cellspacing="1" align="center"><tr height="12">

<td colspan="6"></td></tr><tr bgcolor="#C2B1F0">

<td align="center">RB</td><td align="center">ID OSOBE</td><td align="center">IME</td><td align="center">PREZIME</td><td align="center">JMBG</td><td align="center">VREME UNOSA</td>

</tr>

4

Page 5: Vezbe 09 - DAO

<%ArrayList<Osoba> lo = (ArrayList<Osoba>)request.getAttribute("lo");

if (lo != null) {ListIterator itr = lo.listIterator();

int i = 0;

while (itr.hasNext()) {Osoba pom = (Osoba) itr.next();

%><tr bgcolor="#EBC7D0">

<td align="center"><%= ++i %></td><td align="center"><%= pom.getIdosoba()%></td><td align="center"><%= pom.getIme()%></td><td align="center"><%= pom.getPrezime()%></td><td align="center"><%= pom.getJMBG()%></td><td align="center"><%= pom.getVremeUpisa().toLocaleString()%></td>

</tr><%}

}%>

<tr><td align="center" colspan="8">

<a href="index.jsp"><font color="blue"> <<== povratak </font></a> </td>

</tr></table>

5