Sunday 19 May 2013

IS2 - JSP Pages and Servlet - Examples

Napomena!
JSP stranice zbog ustede na prostoru ubacicemo samo tag "body", jedan primjer zaglavlja i kod nece biti fino formatiran

Iz servleta cemo izbaciti import i dio generickog koda

Zaglavlje JSP stranica...
If you want to translate this code to HTML 5 you need to write Docture type like this <!DOCTYPE html> 

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1" %>
    <%@ page isELIgnored="false"  %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>

ZADUZENJE CLANA JSP

 <body>
<c:if test="${!empty clan}">
<form action="/library/GetSlobodniPrimerciZaNaslov">
<table>
<tr><td>Clanski broj:</td><td>${clan.clanskiBroj}</td></tr>
<tr><td>Ime:</td><td>${clan.ime}</td></tr>
<tr><td>Prezime:</td><td>${clan.prezime}</td></tr>
<tr><td>Kategorija:</td><td>${clan.kategorija.nazivkategorije}</td></tr>
</table>
<br><br><br>
Naslov knjige za zaduzenje: <input name="naslovFind" type="text"> <input type="submit" value="Nadji">
</form>
<c:if test="${!empty primerci}">
<table>
<thead><td>Naslov</td><td>Autor</td><td>Godina izdanja</td><td>Inventarni broj</td><td>Zaduzi</td></thead>
<c:forEach var="primerak" items="${primerci}">
<tr><td>${primerak.knjiga.naslov}</td><td>${primerak.knjiga.autor}</td><td>${primerak.knjiga.godinaIzdanja}</td>
<td>${primerak.invBroj}</td><td><a href="/library/ZaduziClana?invBroj=${primerak.invBroj}">Zaduzi</a></td></tr>
</c:forEach </table> </c:if> </c:if> </body>

RAZDUZI CLANA JSP

<body>
<c:if test="${!empty clan}">
<table>
<tr><td>Clanski broj:</td><td>${clan.clanskiBroj}</td></tr>
<tr><td>Ime:</td><td>${clan.ime}</td></tr>
<tr><td>Prezime:</td><td>${clan.prezime}</td></tr>
<tr><td>Kategorija:</td><td>${clan.kategorija.nazivkategorije}</td></tr>
</table> <br> Nerazduzena zaduzenja <br><br>
<table border=1>
<thead><td>Datum zaduzenja</td><td>Inventarni broj</td><td>Naslov knjige</td></thead>
<c:forEach var="zaduzenje" items="${clan.zaduzenjes}" >
<c:if test="${empty zaduzenje.datumVracanja}">
<tr><td>${zaduzenje.datumZaduzenja}</td><td>${zaduzenje.primerak.invBroj}</td>
<td>${zaduzenje.primerak.knjiga.naslov}</td><td><a href="/library/RazduziClana?idZad=${zaduzenje.id}">Razduzi</a></td></tr>
</c:if> </c:forEach> </table> </c:if> </body>

FIND CLANA JSP

<body>
<form action="/library/ReturnClanForClanskiBroj?action=zaduzi" method="post">
Clanski broj: <input name="clanskiBroj" type="text">
<input type="submit">
</form> </body>

SHOW SVE KNJIGE JSP

<body>
<table border=1>
<thead><td>Naslov</td><td>Autor</td><td>Izdavac</td><td>Godina</td></thead>
<c:forEach var="knjiga" items="${sveKnjige}">
<tr><td>${knjiga.naslov}</td>
    <td>${knjiga.autor}</td>
    <td>${knjiga.izdavac}</td>
    <td>${knjiga.godinaIzdanja}</td></tr>
</c:forEach> </table> </body>

PRINT MESSAGE JSP

<html> <head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head> <body>
${poruka}
</body> </html>

SHOW ZADUZENJA JSP

<body> <table>
    <tr><td>ID Clana</td><td><input value="${clbroj}" name="id2" type="text"></td></tr>
    <tr><td>Ime</td><td><input value="${ime}" name="ime" type="text"></td></tr>
    <tr><td>Prezime</td><td><input value="${prz}" name="prezime" type="text"></td></tr>
</table> ${poruka} <table>
    <tr><td>Inv. Broj</td><td>Naslov</td><td>Autor</td><td>Razduzi</td><tr>
    <c:forEach var="zad" items="${zaduzenja}">
    <tr><td><div>${zad.primerak.invBroj}</div></td><td><div>${zad.primerak.knjiga.naslov}</div></td><td><div>${zad.primerak.knjiga.autor}</div></td><td><a href="/library/RazduziClana?id=${zad.id}">Link</a></td><tr>
    </c:forEach> </table> </body>


SERVLET


GET SVE KNJIGE / GET BOOKS

@WebServlet("/GetSveKnjigeServlet")

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        KnjigaManager kmg = new KnjigaManager();
        List<Knjiga> sveKnjige = kmg.listKnjige();
        request.setAttribute("sveKnjige", sveKnjige);
        RequestDispatcher rd = getServletContext().getRequestDispatcher("/izvestaji/prikaziSveKnjige.jsp");
        rd.forward(request, response);       
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

RAZDUZI CLANA

@WebServlet("/RazduziClana")

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String idZaduzenja = request.getParameter("idZad");
        ZaduzenjeManager zm = new ZaduzenjeManager();
        Zaduzenje z = zm.getZaduzenjeForId(Integer.parseInt(idZaduzenja));       
        boolean ok = zm.razduziZaduzenje(z);
        ClanManager cmg = new ClanManager();
        Clan clan = cmg.getClanAndZaduzenjesForId(z.getClan().getClanskiBroj());
        request.setAttribute("clan", clan);
        RequestDispatcher rd = getServletContext().getRequestDispatcher("/zaduzenja/RazduzivanjeClana.jsp");
        rd.forward(request, response);
  }



SNIMANJE CLANA / SAVE CLAN (USER)

 @WebServlet("/SnimanjeClanaServlet")

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String clanskiBroj = request.getParameter("clanskiBroj");
        String ime = request.getParameter("ime");
        String prezime = request.getParameter("prezime");
        String adresa = request.getParameter("adresa");
        //datumi
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String datumRodjenjaStr = request.getParameter("datumRodjenja");
        String datumUpisaStr = request.getParameter("datumUpisa");
        String idKategorije = request.getParameter("kategorija");
        KategorijaManager kmg = (KategorijaManager)request.getSession().getAttribute("kategorijaManager");
           String poruka;
            try {
            Date datumRodjenja = sdf.parse(datumRodjenjaStr);
            Date datumUpisa = sdf.parse(datumUpisaStr);
            ClanManager cmg = new ClanManager();
            Kategorija kat = kmg.getKategorijaForId(Integer.parseInt(idKategorije));
            boolean ok = cmg.saveClan(Integer.parseInt(clanskiBroj), ime, prezime, adresa, datumRodjenja, datumUpisa, kat);
            if(ok)
                poruka = "Clan je uspesno sacuvan.";
            else
                poruka = "Doslo je do greske. Clan nije sacuvan.";           
          } catch (ParseException e) {
            poruka="Clan nije sacuvan. Neispravan format datuma.";
        }catch(NumberFormatException ex){
            poruka = "Clan nije sacuvan. Neispravan format broja.";
        }
        request.setAttribute("poruka", poruka);
        RequestDispatcher rd = getServletContext().getRequestDispatcher("/unos/unosClana.jsp");
        rd.forward(request, response);
    }

SNIMANJE KNJIGE / SAVE BOOK IN DATABASE

@WebServlet("/SnimanjeKnjigeServlet")

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String idKnjige = request.getParameter("idKnjige");
        String naslov = request.getParameter("naslov");
        String autor = request.getParameter("autor");       
        String izdavac = request.getParameter("izdavac");
        String godinaIzdanja = request.getParameter("godinaIzdanja");
        KnjigaManager kmg = new KnjigaManager();
        Knjiga k = kmg.createAndStoreKnjiga(Integer.parseInt(idKnjige), naslov, autor, godinaIzdanja, izdavac);       
        String forwardPageURL= "/unos/unosKnjigeJSP.jsp";;
        if(k!=null){
            request.setAttribute("poruka", "Knjiga je uspesno sacuvana.");           
          }else{           
            request.setAttribute("poruka","Doslo je do greske, knjiga nije sacuvana.");
          }
         RequestDispatcher rd = getServletContext().getRequestDispatcher(forwardPageURL);
        rd.forward(request, response);   
        }

UNOS PRIMJERKA / INSERT NEW COPY OF SINGLE BOOK

@WebServlet("/UnesiPrimjerak")

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String broj = request.getParameter("broj");
        int idK = (int) request.getSession().getAttribute("idKnjige");
        int br = Integer.parseInt(broj);
        KnjigaManager k = new KnjigaManager();
        List p = k.addPrimeraks(idK, br);
        String poruka = "";
        if (p.size() > 0) {
            poruka = "Success...";
        }
        else {
            poruka = "Error";
        }
        request.setAttribute("poruka", poruka);
        request.setAttribute("lista", p);
        request.setAttribute("brojInv", p.size());
        RequestDispatcher rd = getServletContext().getRequestDispatcher("/UnosPodataka/Izvjestaj.jsp");
        rd.forward(request, response);
    }



NOVI KOD


 JavaBEAN - Vraca sve kategorije / GET ALL CATEGORIES

public class SveKategorijeBean  {
    private List<Kategorija> sveKategorije = null;
    public SveKategorijeBean() {
        try {
            Session session = HibernateUtil.getSessionFactory().getCurrentSession();
            session.beginTransaction();
            sveKategorije = session.createQuery("from Kategorija").list();
            session.getTransaction().commit();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }    public List<Kategorija> getSveKategorije() {
        return sveKategorije;
    } public void setSveKategorije(List<Kategorija> sveKategorije) {
        this.sveKategorije = sveKategorije;
    }
}

PRIMJER HTML - 5 Komponenta za DATUM ujedno i UNOS CLANA JSP stranica, Poziv SveKateforijeBEAN klasa koju smo napravili da bi njenim pozivom vec iz baze izvadili sve kategorije...
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Unos Clana</title>
</head>
<jsp:useBean id="sveKategorije" class="rs.ac.uns.dmi.is2.managers.SveKategorijeBean" scope="session"></jsp:useBean>
<body>
<form action="../SnimajClana" method="post">
<table>
    <tr><td>Ime</td><td><input name="ime" type="text"></td></tr>
    <tr><td>Prezime</td><td><input name="prezime" type="text"></td></tr>
    <tr><td>Adresa</td><td><input name="adresa" type="text"></td></tr>
    <tr><td>Kategorija</td>
        <td><select name="Kategorije">
        <c:forEach items="${sveKategorije.sveKategorije}" var="kat">
        <option value="${kat.idkategorije}">${kat.nazivkategorije} </option>
        </c:forEach>
        </select></td></tr>
    <tr><td>Datum upisa</td><td><input type="date" name="datumUpisa"></input> </td></tr>
    <tr><td>Datum rodjenja</td><td><input type="date" name="datumRodjenja"></input> </td></tr>
</table>
<input type="submit" value="Sacuvaj">
</form> ${poruka} </body> </html>


 INSERT NEW BOOK JSP

<body>
<form action="../SnimanjeKnjige" method="post">
    <table> <tr>
    <td>Naslov</td><td><input name="naslov" type="text"></td></tr>
    <tr><td>Autor</td><td><input name="autor" type="text"></td></tr>
    <tr><td>Izdavac</td><td><input name="izdavac" type="text"></td></tr>
    <tr><td>Godina Izdanja</td><td><input name="godinaIzdanja" type="text"></td></tr>
    </table>    <input type="submit" value="Sacuvaj">
</form> </body>

 SERVLET

AZURIRAJ CLANA Servlet

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String idString = request.getParameter("id");
        int id = Integer.parseInt(idString);
        ClanManager cr = new ClanManager();
        Clan c = cr.getClan(id);
        request.setAttribute("clbroj", id);
        request.setAttribute("clan", c);
        RequestDispatcher rd = getServletContext().getRequestDispatcher("/UnosPodataka/AzurirajClana.jsp");
        rd.forward(request, response);
    }

Example using SESSION! // EXAMPLE HOW TO USE SESSION

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String idString = request.getParameter("id");
        int clBr = Integer.parseInt(idString);
        ClanManager cm = new ClanManager();
        List<Zaduzenje> lista = cm.getNerazduzenaZaClanskiBroj(clBr);
        Clan c = cm.getClan(clBr);
        request.getSession().setAttribute("clbroj", clBr);
        request.getSession().setAttribute("ime", c.getIme());
        request.getSession().setAttribute("prz", c.getPrezime());   
        request.setAttribute("zaduzenja", lista);
        RequestDispatcher rd = getServletContext().getRequestDispatcher("/UnosPodataka/PrikazZaduzenja.jsp");
        rd.forward(request, response);     
    }

UPDATA CLANA // UPDATE USER

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String cl = request.getParameter("id2");
        int clanskiBroj = Integer.parseInt(cl);
        String Ime = request.getParameter("ime");
        String Prezime = request.getParameter("prezime");
        String Adresa = request.getParameter("adresa");
        String kat = request.getParameter("Kategorije");
        int br = Integer.parseInt(kat);
        String datumcic = request.getParameter("datumRodjenja");
        System.out.println(datumcic);
        Date datum1 = null;
        try {
            datum1 = sdf.parse(datumcic);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        ClanManager cc = new ClanManager();
        Kategorija kategorija = cc.getKategorija(br);
        int rez = cc.updateClan(clanskiBroj, Ime, Prezime, Adresa, kategorija, datum1);
        String poruka = "";
        if (rez == 0) {
            poruka = "Clan nije updejtovan";
        }
        else {
            poruka = "Clan je updejtovan!";
        }
        request.setAttribute("poruka", poruka);
        RequestDispatcher rd = getServletContext().getRequestDispatcher("/UnosPodataka/AzurirajClana.jsp");
        rd.forward(request, response);
    }


COMBO BOX!!! Profesorica je rekla da moze da dodje nesto da moramo da stavimo npr. da je nesto oznaceno u Combo Box-u i evo jedan primjer JSP stranice koja to radi...
Pitamo da li je to sto nama treba ako jeste postavi ga na selected.

<body>
<form action="/library/AzurirajClana" method="post">
<table>
<tr><td>ID Clana</td><td><input name="id" type="text"></td></tr>
</table>
<input type="submit" value="Uzmi Clana">
</form>
<form action="/library/UpdateClana" method="post">
<table>
    <tr><td>ID Clana</td><td><input value="${clbroj}" name="id2" type="text"></td></tr>
    <tr><td>Ime</td><td><input value="${clan.ime }" name="ime" type="text"></td></tr>
    <tr><td>Prezime</td><td><input value="${clan.prezime }" name="prezime" type="text"></td></tr>
    <tr><td>Adresa</td><td><input value="${clan.adresa }" name="adresa" type="text"></td></tr>
    <tr><td>Kategorija</td>
        <td><select name="Kategorije">
        <c:forEach items="${sveKategorije.sveKategorije}" var="kat">
        <c:choose>
              <c:when test="${clan.kategorija.idkategorije == kat.idkategorije}">
                <option selected="selected" value="${kat.idkategorije}">${kat.nazivkategorije} </option>
              </c:when>
              <c:otherwise>
                  <option value="${kat.idkategorije}">${kat.nazivkategorije} </option>
              </c:otherwise>
        </c:choose>
        </c:forEach>
        </select></td></tr>

    <tr><td>Datum upisa</td><td><input value="${clan.datumUpisa}" type="date" name="datumUpisa"></input> </td></tr>
    <tr><td>Datum rodjenja</td><td><input value="${clan.datumRodjenja}" type="date" name="datumRodjenja"></input> </td></tr>
</table>
<input type="submit" value="Sacuvajte Clana">
</form>
${poruka}
</body>




Novi DIO



<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1" isELIgnored="false"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="/library/GetZaduzenje?by=invBroj">
<input type="text" name="invBroj">
<input type="submit" value="Ucitaj">
</form>
<c:if test="${!empty zaduzenja}">
<table border=1>
<thead><td>Datum zaduzenja</td><td>Inventarni broj</td><td>Naslov</td><td>Ime i prezime</td></thead>
<c:forEach var="zad" items="${zaduzenja}">
<tr><td>${zad.datumZaduzenja}</td><td>${zad.primerak.invBroj}</td><td>${zad.primerak.knjiga.naslov}</td>
<td>${zad.clan.ime} ${zad.clan.prezime}</td></tr>
</c:forEach>
</table>
<br><br>
<form action="/library/RazduziZaduzenja">
<input type="text" name="datumRazduzenja" value='<fmt:formatDate pattern="yyyy-MM-dd" value="<%= new java.util.Date() %>"/>'>
<input type="submit" value="Razduzi">
</form>
</c:if>
</body>
</html>


JOS JEDAN


<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1" isELIgnored="false"%>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 <jsp:useBean id="kategorijaManager" class="rs.ac.uns.dmi.is2.manager.KategorijaManager" scope="session"/>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="/library/ReturnClanForClanskiBroj?action=promenaKategorije" method="post">
Clanski broj: <input name="clanskiBroj" type="text">
<input type="submit" value="Nadji clana">
</form>
Selektovani clanovi: <br><br>
<table border=1>
<thead><td>Ime</td><td>Prezime</td><td>Kategorija</td></thead>
<c:forEach var="clan" items="${clanovi}">
<tr><td>${clan.ime}</td><td>${clan.prezime}</td><td>${clan.kategorija.nazivkategorije}</td></tr>
</c:forEach>
</table>
<br>
Nova kategorija: <br>
<form action="/library/PromenaKategorija">
<select name="kategorija">
<c:forEach var="kat" items="${kategorijaManager.sveKategorije}">
<option value="${kat.idkategorije}" >${kat.nazivkategorije}</option>
</c:forEach>
</select>
<input type="submit" value="Promeni">
</form>

</body>
</html>


JOS JEDAN


<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>  
<%@ page isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Sve knjige</title>
</head>
<body>
<table border=1>
<thead><td>Naslov</td><td>Autor</td><td>Izdavac</td><td>Godina</td></thead>
<c:forEach var="knjiga" items="${sveKnjige}">
<tr><td>${knjiga.naslov}</td>
<td>${knjiga.autor}</td>
<td>${knjiga.izdavac}</td>
<td>${knjiga.godinaIzdanja}</td></tr>
</c:forEach>
</table>
</body>
</html>

NOVI


<%@ page isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
Primerci:<br>
<c:forEach var="primerak" items="${knjiga.primeraks}">
${primerak.invBroj}<br>

</c:forEach>

</body>
</html>

UNOS PRIMJERKA


<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ page isELIgnored="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Unos primeraka knjige</title>
</head>
<body>
${message}
<table>
<tr><td>Naslov:</td><td>${knjiga.naslov}</td></tr>
<tr><td>Autor:</td><td>${knjiga.autor}</td></tr>
<tr><td>Izdavanje:</td><td>${knjiga.izdavac} (${knjiga.godinaIzdanja})</td></tr>
</table>
<br>

<form action="/library/DodajPrimerakKnjiga" method="post">
Dodaj primerak <br><br>
Inventarni broj <input name="invBroj" type="text">
<input type="submit" value="Dodaj">
</form>
<br><br>
<%@ include file="../izvestaji/prikaziPrimerkeKnjige.jsp" %>
</body>
</html>

NADJI CLANA



<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1" isELIgnored="false"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="/library/ReturnClanForClanskiBroj?action=${param.action}" method="post">
Clanski broj: <input name="clanskiBroj" type="text">
<input type="submit">
</form>

</body>
</html>


Servlet for Jasper reports!

// This is a list of values that I want to send to servlet
List<Radnik> radnici = RadnikManager.getSviRadnici();
        HashMap<String, Object> params = new HashMap<String, Object>();
        ServletContext context = this.getServletContext();       
        String reportsDirectory = context.getRealPath("/") + "/WEB-INF/classes/reports/";
        String jasperFile = reportsDirectory+"SviRadnici.jasper";
        JasperPrint jasperPrint = null;
        try{
        if(radnici.size()==0){ // ask is list have nothing inside
            JREmptyDataSource dataSource = new JREmptyDataSource();
            jasperPrint = JasperFillManager.fillReport(jasperFile,params, dataSource);
        }else{ // create a repoert
            JRDataSource dataSource = new JRBeanCollectionDataSource(radnici);
            jasperPrint = JasperFillManager.fillReport(jasperFile,params, dataSource);
        }
        ServletOutputStream servletOutputStream = response.getOutputStream();
// this will create pdf report
        JRPdfExporter pdfExporter = new JRPdfExporter();
           
        pdfExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
        pdfExporter.setParameter(JRExporterParameter.OUTPUT_STREAM,servletOutputStream);
           
           
        pdfExporter.exportReport();
           
            response.setContentType("application/pdf");
           
            servletOutputStream.flush();
            servletOutputStream.close();
        }catch(Exception e){
            e.printStackTrace();
        }



13 comments:

  1. Implementirati funkcionalnost razduzivanja primeraka za clana. Korisnik unosi clanski broj i kao rezultat, prikazauje se tabela sa svim zaduzenjima clana(i razduzenim i nerazduzenim), gde se prikazuje datum zaduzenja i razduzenja, invertarni broj primerka, i naslov knjige primerka. Pored svakog nerazduzenog primerka, potrebno je obezbediti cek boks, preko kog se mogu selektovati zaduzenja, koja treba razduziti. Nakon toga, klikom na dugme, prikazuje se spisak sa izbornim invertarnim brojevima i input polje koje se unosi datum razduzenja. Nakon razduzenja prikazati odgovarajucu poruku.
    Implementirane su sledece pomocne operacije:
    Clan getClanForId(Integer id)-ClanManager
    List getZaduzenjaClana(Clan c)-ZaduzenjeManager
    Boolean razduziZaduzenja(List zaduzenja, Date datumRazduzenja)-ZaduzenjeManager

    ReplyDelete
  2. Implementirati funkcionalnost promene izdavaca za razlicite knjige. Korisnik bira vise knjiga preko id broja. Izabrane knjige mu se pojavljuju u tabeli sa sledecim podacima: naslov, autor, godina izdanja, i izdavac. Izdavac je prikazan u input polju i moze da se promeni. Klikom na dugme, cuvaju se knjige sa izmenjenim izdavacima.
    Implementirane su sledece pomocne operacije u klasi KnjigaManager>
    Knjiga getKnjigaForId(Integer Id)
    Boolean updateKnjiga(Knjiga k)

    ReplyDelete
  3. UPDATE KNJIGA SEVLET

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String izdavac=request.getParameter("izdavac");
    Integer idKnjige=Integer.parseInt(request.getParameter("idK"));
    Knjiga k=KnjigaManager.getKnjigaForId(idKnjige);
    k.setIzdavac(izdavac);
    boolean ok=KnjigaManager.updateKnjiga(k);

    request.setAttribute("ok", ok);
    RequestDispatcher rd = getServletContext().getRequestDispatcher("/PromenaIzdavaca.jsp");
    rd.forward(request, response);
    }


    GET KNJIGA SERVLET


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Integer idKnjige=Integer.parseInt(request.getParameter("idK"));
    Knjiga knjiga=KnjigaManager.getKnjigaForId(idKnjige);

    request.setAttribute("knjiga", knjiga);
    RequestDispatcher rd = getServletContext().getRequestDispatcher("/PromenaIzdavaca.jsp");
    rd.forward(request, response);
    }

    ReplyDelete
  4. tastatura


    vrati knjige za id:


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    Integer idKnjige=Integer.parseInt(request.getParameter("idKnjige"));
    Knjiga k=KnjigaManager.getKnjigaForId(idKnjige);
    request.getSession().setAttribute("knjiga",k);
    RequestDispatcher rd=getServletContext().getRequestDispatcher("/unos/PromenaIzdavaca.jsp");
    rd.forward(request,response);

    }

    ReplyDelete
  5. package rs.ac.uns.dmi.is2.servlets;

    import java.io.IOException;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.List;

    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import rs.ac.uns.dmi.is2.dbmodel.Clan;
    import rs.ac.uns.dmi.is2.managers.ClanManager;
    neb
    /**
    * Servlet implementation class NadjiClanoveServlet
    */
    @WebServlet("/NadjiClanoveServlet")
    public class NadjiClanoveServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
    * @see HttpServlet#HttpServlet()
    */
    public NadjiClanoveServlet() {
    super();
    // TODO Auto-generated constructor stub
    }

    /**
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String opcija=request.getParameter("comboBx");
    SimpleDateFormat dt = new SimpleDateFormat("yyyyy-mm-dd");
    Date datum;
    try {
    datum=dt.parse(opcija);
    List clanovi=ClanManager.getClanoviZaDatumUclanjenja(datum);
    request.setAttribute("clanovi", clanovi);
    } catch (ParseException e) {
    e.printStackTrace();
    }
    request.getServletContext().getRequestDispatcher("/unos/PregledClanova.jsp");

    }

    /**
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    }

    }

    ReplyDelete
  6. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String idParam = request.getParameter("idClana");
    int id = Integer.parseInt(idParam);

    List lista = null;

    Clan clan = new ClanManager().getClanForClanskiBroj(id);

    String poruka;
    if (clan == null)
    poruka = "Clan sa id brojem: " + id + " ne postoji!";
    else{
    poruka = "Uspesno dodat clan: " + clan.getIme();
    lista = (List)request.getSession().getAttribute("clanovi");
    if (lista == null)
    lista = new ArrayList();
    lista.add(clan);
    }

    request.getSession().setAttribute("clanovi", lista);
    request.setAttribute("poruka", poruka);

    RequestDispatcher rd = request.getServletContext().getRequestDispatcher("/unos/unosClanova.jsp");
    rd.forward(request, response);
    }

    ReplyDelete
  7. public Clan getClanForClanskiBroj(int clanskiBroj){
    EntityManager em = JPAUtil.getEntityManager();
    Clan c = em.find(Clan.class, clanskiBroj);
    return c;
    }

    ReplyDelete
  8. String idClana = request.getParameter("idClana");
    int idClanaInt = Integer.parseInt(idClana);



    RequestDispatcher rd = request.getServletContext().getRequestDispatcher("");
    rd.forward(request, response);

    ReplyDelete
  9. /**
    * Servlet implementation class GetNerazduzenaZaduzenjaServlet
    */
    public class GetNerazduzenaZaduzenjaServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
    * @see HttpServlet#HttpServlet()
    */
    public GetNerazduzenaZaduzenjaServlet() {
    super();
    // TODO Auto-generated constructor stub
    }

    /**
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String clanskiBroj = request.getParameter("clanskiBroj");
    Integer clanskiBrojInt = Integer.parseInt(clanskiBroj);
    List zaduzenja = new ClanManager().getNerazduzenaZaduzenjaZaClana(JPAUtil.getEntityManager(), clanskiBrojInt);

    request.setAttribute("zaduzenja", zaduzenja);
    // postavlja se clanski broj korisnika u session da bi se koristio u drugoj formi
    request.getSession().setAttribute("clanskiBroj",clanskiBroj);

    RequestDispatcher rd = request.getServletContext().getRequestDispatcher("/radonjaprelevic/razduziClanaKolokvijum2.jsp");
    rd.forward(request, response);
    }

    }

    ReplyDelete
  10. /**
    * Servlet implementation class KolokvijumRazduziServlet
    */
    public class KolokvijumRazduziServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
    * @see HttpServlet#HttpServlet()
    */
    public KolokvijumRazduziServlet() {
    super();
    // TODO Auto-generated constructor stub
    }

    /**
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String idZaduzenja = request.getParameter("zaduzenje");
    Integer idZaduzenjaInt = Integer.parseInt(idZaduzenja);
    boolean razduzen = new ClanManager().razduzi(JPAUtil.getEntityManager(),idZaduzenjaInt);
    String poruka = "Uspesno razduzen.";
    if (!razduzen) {
    poruka = "Neuspesno razduzivanje";
    }

    //Uzimamo clanski broj iz sessiona i osvezavamo combo box
    String clanskiBroj = (String) request.getSession().getAttribute("clanskiBroj");
    int clanskiBrojInt = Integer.parseInt(clanskiBroj);
    List zaduzenja = new ClanManager().getNerazduzenaZaduzenjaZaClana(JPAUtil.getEntityManager(), clanskiBrojInt);

    request.setAttribute("zaduzenja", zaduzenja);
    request.setAttribute("poruka", poruka);

    RequestDispatcher rd = request.getServletContext().getRequestDispatcher("/radonjaprelevic/razduziClanaKolokvijum2.jsp");
    rd.forward(request, response);
    }

    }

    ReplyDelete
  11. --------------------------------------
    - CLAN MANAGER JAVA -
    --------------------------------------

    public class ClanManager {
    public Clan saveClan(String ime, String prezime, String adresa, Date datumRodjenja, Date datumUpisa,
    int kat) {
    try {
    EntityManager em = JPAUtil.getEntityManager();
    em.getTransaction().begin();
    Clan c = new Clan();
    c.setIme(ime);
    c.setPrezime(prezime);
    c.setAdresa(adresa);
    c.setDatumRodjenja(datumRodjenja);
    c.setDatumUpisa(datumUpisa);
    c.setKategorija(em.find(Kategorija.class, kat));
    em.persist(c);
    em.getTransaction().commit();
    return c;
    } catch (Exception e) {
    e.printStackTrace();
    return null;
    }
    }

    public List getClanoviZaDatumUpisaKategorija(Date datumUpisa, int kat){
    EntityManager em = JPAUtil.getEntityManager();
    TypedQuery query = em.createQuery("select c from Clan c where c.datumUpisa = :datumUpisa "
    + "and c.kategorija = :kat", Clan.class);
    query.setParameter("datumUpisa", datumUpisa);
    query.setParameter("kat", em.find(Kategorija.class, kat));
    List rez = query.getResultList();
    em.close();
    return rez;
    }

    public List getSveKategorije(){
    EntityManager em=JPAUtil.getEntityManager();
    Query q=em.createQuery("from Kategorija k");
    List kategorije=q.getResultList();
    em.close();
    return kategorije;
    }
    public List getNerazduzenaZaduzenjaZaClana(Integer clanskiBroj) {
    EntityManager em=JPAUtil.getEntityManager();
    Clan c=em.find(Clan.class, clanskiBroj);
    Query q=em.createQuery("from Zaduzenje z where z.clan=:c and z.datumVracanja is null");
    q.setParameter("c", c);
    List zaduzenja=q.getResultList();
    em.close();
    return zaduzenja;
    }

    public boolean razduzi(int idZaduzenja){
    EntityManager em=JPAUtil.getEntityManager();
    try{
    em.getTransaction().begin();
    Zaduzenje z = em.find(Zaduzenje.class, idZaduzenja);
    z.setDatumVracanja(new Date());
    em.persist(z);
    em.getTransaction().commit();
    return true;
    }catch(Exception e){
    e.printStackTrace();
    return false;
    }
    }

    public List getClanoviZaImePrezime(String ime, String prezime) {
    EntityManager em=JPAUtil.getEntityManager();
    Query q=em.createQuery("select distinct c from Clan c join fetch c.zaduzenjes z where c.ime like :ime and c.prezime like :prz and z.datumVracanja is null");
    q.setParameter("ime", "%"+ime+"%");
    q.setParameter("prz", "%"+prezime+"%");
    List clanovi=q.getResultList();
    em.close();
    return clanovi;
    }

    public static void main(String[] args){
    ClanManager cm=new ClanManager();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    // Date datumRodjenja;
    try {
    // datumRodjenja = sdf.parse("1982-05-13");
    // Clan c=cm.saveClan("Petar", "Petrovic", "Bulevar Cara Lazara 3, Novi Sad",datumRodjenja, new Date(),1);
    // if(c!=null)
    // System.out.println("Clan je uspesno sacuvan, clanski broj je "+c.getClanskibroj());

    List clanovi=cm.getClanoviZaDatumUpisaKategorija(sdf.parse("2017-02-20"), 2);
    for(Clan cl:clanovi)
    System.out.println(cl.getIme()+" "+cl.getPrezime());
    } catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }

    ReplyDelete
  12. public Knjiga updateKnjiga (int id, String izdavac){
    try{
    EntityManager em=JPAUtil.getEntityManager();
    Knjiga k = em.find(Knjiga.class, id);

    em.getTransaction().begin();
    k.setIzdavac(izdavac);
    em.getTransaction().commit();
    return k;
    }
    catch (Exception e) {
    e.printStackTrace();
    return null;
    }
    }

    public List addPrimeraks(Knjiga k, int brojPrimeraka){
    try{
    EntityManager em = JPAUtil.getEntityManager();
    List retVal = new ArrayList();
    em.getTransaction().begin();
    for(int i=0;i getZaduzeniClanovi(){
    EntityManager em = JPAUtil.getEntityManager();
    TypedQuery q = em.createQuery("select c from Clan c join fetch c.zaduzenjes z "
    + "where z.datumVracanja is null", Clan.class);
    List clanovi = q.getResultList();
    em.close();
    return clanovi;
    }

    public List getNezaduzeniClanovi(){
    EntityManager em = JPAUtil.getEntityManager();
    TypedQuery clanovi = em.createQuery("select distinct c from Clan c where not exists"
    + " (select z from Zaduzenje z where z.datumVracanja is null and z.clan=c)", Clan.class);
    List retVal = clanovi.getResultList();
    em.close();
    return retVal;

    }

    public List getClanoviZadatumUpisaKategorija(Date datumUpisa, Kategorija kat){
    EntityManager em = JPAUtil.getEntityManager();
    TypedQuery query = em.createQuery("select c from Clan c where c.datumUpisa = :datumUpisa "
    + "and c.kategorija = :kat", Clan.class);
    query.setParameter("datumUpisa", datumUpisa);
    query.setParameter("kat", kat);
    List rez = query.getResultList();
    em.close();
    return rez;
    }

    /*
    * vraca sve clanove koji pripadaju nekoj od kategorija datih u listi kategorije
    */


    public List getClanoviZaKategorije(List kategorije){
    EntityManager em = JPAUtil.getEntityManager();
    TypedQuery query = em.createQuery("select c from Clan c where c.kategorija in :katlist", Clan.class);
    query.setParameter("katlist", kategorije);
    List rez = query.getResultList();
    em.close();
    return rez;

    }


    public Clan getClanINerazduzena(Integer clanskiBroj){
    EntityManager em = JPAUtil.getEntityManager();
    TypedQuery q = em.createQuery("select c from Clan c join fetch c.zaduzenjes z "
    + "where z.datumVracanja is null and c.clanskiBroj = :clanskiBroj", Clan.class);
    q.setParameter("clanskiBroj", clanskiBroj);
    Clan c = q.getSingleResult();
    em.close();
    return c;
    }

    public Zaduzenje saveZaduzenje(int clBr, int invBr){
    try{
    EntityManager em=JPAUtil.getEntityManager();
    Clan c=em.find(Clan.class, clBr);
    Primerak p=em.find(Primerak.class, invBr);
    Zaduzenje z=new Zaduzenje();
    z.setClan(c);
    z.setPrimerak(p);
    z.setDatumZaduzenja(new Date());
    em.getTransaction().begin();
    em.persist(z);
    em.getTransaction().commit();
    em.close();
    return z;
    }
    catch(Exception e){
    e.printStackTrace();
    return null;
    }
    }
    public List getSvaZaduzenjaClana(int clBr){
    try{
    EntityManager em=JPAUtil.getEntityManager();
    Clan c=em.find(Clan.class, clBr);
    Query q=em.createQuery("select z from Zaduzenje z where z.clan= :c");
    q.setParameter("c", c);
    List zad=q.getResultList();
    return zad;
    }
    catch(Exception e){
    e.printStackTrace();
    return null;
    }
    }

    public Knjiga pronadjiKnjiguZaPrimerak(int invBr){
    try{
    EntityManager em=JPAUtil.getEntityManager();
    Primerak p=em.find(Primerak.class, invBr);
    return p.getKnjiga();
    }
    catch(Exception e){
    e.printStackTrace();
    return null;
    }
    }

    ReplyDelete
  13. This comment has been removed by the author.

    ReplyDelete