Showing posts with label bean. Show all posts
Showing posts with label bean. Show all posts

Friday, 3 January 2014

Component Based Development - CBD - Java EJB 3.1 - Example

Blog platform in EJB 3.1


Assignment!
We need to create EJB layer for a blog site.

Clients communicate with stateful session bean. It is necessary to implement the method for search blogs and method for setting up a new blog.
In the case of passivation of the stateful session bean , we need just before passivation to print a message on the console about session bean is going to be pasive.
Singleton bean keeps customer information (name , username , password ... ) and data on blogs ( text, date , number of like- s) in ArrayList.
Singleton is NOT instantiated immediately upon deployment, but by the first call. By instantiate initialize ArrayList in which data need to be stored.
If we call the method that is used to search, interceptor intercepts that method and he update statistics (number of views for each blog).
Call method to set up a new blog interceptor intercepts that method and he update statistics on the number of blogs set up during the day
The statistic data is stored in the same Singleton which are stored and other information .
All interceptor's is required to be implemented in a separate class.
It is necessary to implement a timer that starting from 1.1.2014 . Every day at 00:00 timer need to print on console how many visit blog's have that day.

Please share this post if you like it.

Singleton Class

import java.util.ArrayList;
import java.util.Date;
import javax.ejb.LocalBean;
import javax.ejb.Singleton;

/**
 * Developed by codeMaker
 */

@Singleton
@LocalBean
public class Baza implements BazaLocal {

    public ArrayList<Klijent> listaKlijenata = new ArrayList<Klijent>();
    public ArrayList<Blog> listaBlogova = new ArrayList<Blog>();
   
    int brojPB = 0;
   
    public int getBrojPB() {
        return brojPB;
    }
    public void setBrojPB(int brojPB) {
        this.brojPB = brojPB;
    }

    public void setListaBlogova(ArrayList<Blog> listaBlogova) {
        this.listaBlogova = listaBlogova;
    }
    public void setListaKlijenata(ArrayList<Klijent> listaKlijenata) {
        this.listaKlijenata = listaKlijenata;
    }
    public ArrayList<Klijent> getListaKlijenata() {
        return listaKlijenata;
    }
    public ArrayList<Blog> getListaBlogova() {
        return listaBlogova;
    }
    public Baza() {
        // TODO Auto-generated constructor stub
        Klijent klijent = new Klijent("Niki", "Re", "user", "pass");
        listaKlijenata.add(klijent);
        Blog blog = new Blog("tekst", new Date());
        listaBlogova.add(blog);
    }
}


SingletonLocal interface

import java.util.ArrayList;
import javax.ejb.Local;

@Local
public interface BazaLocal {
    ArrayList<Klijent> getListaKlijenata();
    ArrayList<Blog> getListaBlogova();
    void setListaBlogova(ArrayList<Blog> lista);
    void setListaKlijenata(ArrayList<Klijent> lista);
    int getBrojPB();
    void setBrojPB(int brojPB);
}


Klijent class

import java.util.ArrayList;

public class Klijent {

    public String ime;
    public String prezime;
    public String username;
    public String pass;
   
    public ArrayList<Blog> listaBlogova;
   
    public Klijent(String ime, String prezime, String username, String pass) {
        this.ime = ime;
        this.prezime = prezime;
        this.username = username;
        this.pass = pass;
        listaBlogova = new ArrayList<Blog>();
    }

    public String getIme() {
        return ime;
    }
    public void setIme(String ime) {
        this.ime = ime;
    }
    public String getPrezime() {
        return prezime;
    }
    public void setPrezime(String prezime) {
        this.prezime = prezime;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPass() {
        return pass;
    }
    public void setPass(String pass) {
        this.pass = pass;
    }
    public ArrayList<Blog> getListaBlogova() {
        return listaBlogova;
    }
    public void setListaBlogova(ArrayList<Blog> listaBlogova) {
        this.listaBlogova = listaBlogova;
    }      
}



Blog class

import java.util.Date;

public class Blog {
  
    public String tekst;
    public Date datum;
    public int brojLajkova;
    public int brojPregleda;
   
    public Blog(String tekst, Date datum) {
        this.tekst = tekst;
        this.datum = datum;
        brojLajkova = 0;
        brojPregleda = 0;
    }
    public String getTekst() {
        return tekst;
    }
    public void setTekst(String tekst) {
        this.tekst = tekst;
    }
    public Date getDatum() {
        return datum;
    }
    public void setDatum(Date datum) {
        this.datum = datum;
    }
    public int getBrojLajkova() {
        return brojLajkova;
    }
    public void setBrojLajkova(int brojLajkova) {
        this.brojLajkova = brojLajkova;
    }
    public int getBrojPregleda() {
        return brojPregleda;
    }
    public void setBrojPregleda(int brojPregleda) {
        this.brojPregleda = brojPregleda;
    }


Stateful bean Blogovanje - Clients communicate with him

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.PrePassivate;
import javax.ejb.Stateful;
import javax.interceptor.Interceptors;

@Stateful
@LocalBean
public class Blogovanje implements BlogovanjeRemote {
   
    @EJB BazaLocal baza;
   
    public Blogovanje() {
        

    }
   
    @Interceptors(PretragaInterceptor.class)
    public String pretraga(String upit) {
        List<Blog> lista = baza.getListaBlogova();
        for (Blog b : lista) {
            String tekst = b.getTekst();
            if (tekst.equalsIgnoreCase(upit)) {
                return "Blog je pronadjen!";
            }
        }
        return "Blog nije pronadjen.";
    }
   
    @Interceptors(PretragaInterceptor.class)
    public String postaviBlog(String username, String pass, String tekstBloga) {
       
        int uspjeh = 0;
        ArrayList<Klijent> lista = baza.getListaKlijenata();
        for(Klijent k : lista) {
            String user = k.getUsername();
            String p = k.getPass();
            if((username.equalsIgnoreCase(user)) && (pass.equalsIgnoreCase(p))) {
                Blog b = new Blog(tekstBloga, new Date());
                ArrayList<Blog> listaBlogova = baza.getListaBlogova();
                listaBlogova.add(b);
                baza.setListaBlogova(listaBlogova);
                k.getListaBlogova().add(b);
                uspjeh++;
            }
        }
        baza.setListaKlijenata(lista);
        if (uspjeh > 0) {
            return "Uspeh";
        } else {
            return "Nismo uspjeli da postavimo blog, user i pass ne odgovaraju!";
        }
    }
   
    @PrePassivate
    public void prijePasiviziranja() {
        System.out.println("Jagoda u supermarketu.");
    }
}


BlogovanjeRemote interface - For session bean
Methods in this class will be visible for clients

import javax.ejb.Remote;

@Remote
public interface BlogovanjeRemote {
    String pretraga(String upit);
    String postaviBlog(String username, String pass, String tekstBloga);
}



Interceptors in one class you can build it in seperate classes.

import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;

public class PretragaInterceptor {
   
    @EJB BazaLocal baza;
   
    @AroundInvoke
    public Object brojPregledaStatistika(InvocationContext ic) throws Exception {
       
        String imeMetoda = ic.getMethod().getName();
       
        if (imeMetoda.equalsIgnoreCase("pretraga")) {
        Object [] listaO = ic.getParameters();
        String upit = (String) listaO[0];
       
        List<Blog> lista = baza.getListaBlogova();
        for (Blog b : lista) {
            String tekst = b.getTekst();
            if (tekst.equalsIgnoreCase(upit)) {
                b.setBrojPregleda(b.getBrojPregleda() + 1);
            }
        }
       
        return ic.proceed();
        }
       
        if (imeMetoda.equalsIgnoreCase("postaviBlog")) {
           
            Object [] listaO = ic.getParameters();
            String username = (String) listaO[0];
            String pass = (String) listaO[1];
           
            ArrayList<Klijent> lista = baza.getListaKlijenata();
            for(Klijent k : lista) {
                String user = k.getUsername();
                String p = k.getPass();
                if((username.equalsIgnoreCase(user)) && (pass.equalsIgnoreCase(p))) {
                    baza.setBrojPB(baza.getBrojPB() + 1);
                }
            }
            return ic.proceed();
        }
        return ic.proceed();
    }   
}


Timer class

import java.text.SimpleDateFormat;
import java.util.Date;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.ejb.Timeout;
import javax.ejb.TimerService;

@Startup
@Singleton
@LocalBean
public class IspisTimer {

    @EJB BazaLocal baza;
    @Resource TimerService ts;
   
    @Timeout
    public void ispsi() {
        System.out.println("Danas je postavljeno: " + baza.getBrojPB() + " blogova!");
        baza.setBrojPB(0);
    }
   
    @PostConstruct
    public void startuj(){
        SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm");
        Date date = null;
        try {
            date = sdf.parse("31-12-2013 23:59");
        } catch (Exception e) {    }
        ts.createTimer(date, 86400000, null);
    }
}



And Klijent app, so we can test it.

import java.util.Hashtable;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import binovi.Blogovanje;
import binovi.BlogovanjeRemote;

public class Klijent {

    static Context initialContext;

    public static void main(String[] args) {
        try {
            Context context = getInitialContext();
            String name = getLookUpName();
            BlogovanjeRemote bean = (BlogovanjeRemote) context.lookup(name);
            System.out.println();
            System.out.println(bean.postaviBlog("user", "pass", "text"));
            System.out.println(bean.postaviBlog("ssa2", "agawa", "text"));
            System.out.println(bean.pretraga("text"));

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static String getLookUpName() {

        String appName = "";
        String moduleName = "Blogovanje";
        String distinctName = "";
        String beanName = Blogovanje.class.getSimpleName();
        String interfaceName = BlogovanjeRemote.class.getName();

        String name = "ejb:" + appName + "/" + moduleName + "/" + distinctName
                + "/" + beanName + "!" + interfaceName+"?stateful";

        System.out.println(name);

        return name;
    }

    public static Context getInitialContext() {
           if (initialContext == null) {
            try {
                final Hashtable jndiProperties = new Hashtable();
                jndiProperties.put(Context.URL_PKG_PREFIXES,
                        "org.jboss.ejb.client.naming");
                initialContext = new InitialContext(jndiProperties);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return initialContext;
    }
}


If you have any questions or need help with coding post a comment bellow.
Please share this post if you like it.

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();
        }