[ bantes9 @ 05.07.2014. 21:09 ] @
Trebala bi mi mala pomoc oko .jsp, servleta i bean-ova.

Imam index.jsp stranicu gde postoji login forma. Nakon uspesnog logovanja u zavisnosti od privilegija otvara se jedna od 3 predefinisane .jsp stranice (admin, korisnik nivoa 1, korisnik nivoa 2) u okviru kojih je ispisan username korisnika (admin mora odobriti svaku registraciju i zato postoji provera za status aktivan).

Login servlet
Code:
public class Logovanje extends HttpServlet {

     @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String username = request.getParameter("korisnickoIme");
        String password = request.getParameter("sifra");
        Korisnik korisnik = new Korisnik();
        korisnik.setKorisnickoime(username);
        korisnik.setLozinka(password);
         
        try {
            HttpSession sesija = request.getSession(true);
            Class.forName("com.mysql.jdbc.Driver");
            Connection konekcija = DriverManager.getConnection("jdbc:mysql://localhost:3306/laboratorija","root","");
            Statement iskaz = konekcija.createStatement();
            if( !(username.equals("")) && !(password.equals("")) ){
              String upit = "SELECT * FROM korisnici WHERE korisnickoime='"+username+"' AND lozinka='"+password+"'";
              ResultSet rezultat = iskaz.executeQuery(upit);
              if(rezultat.next()){
                  String korisnickoime = rezultat.getString(2);
                  int privilegija = rezultat.getInt(9);
                  int aktiviran = rezultat.getInt(10);
                  korisnik.setKorisnickoime(korisnickoime);
                  korisnik.setPrivilegija(privilegija);
                  korisnik.setAktiviran(aktiviran);
                  
                  sesija.setAttribute("korisnik", korisnik);
                  if(privilegija==1 && aktiviran==1){
                        RequestDispatcher r = request.getRequestDispatcher("/admin.jsp");
                        r.forward(request, response);
                  }
                  else if(privilegija ==2 && aktiviran==1){
                        RequestDispatcher rd = request.getRequestDispatcher("/korisniknivoa1.jsp");
                        rd.forward(request, response);
                  }
                  else if(privilegija ==3 && aktiviran==1){
                        RequestDispatcher rd = request.getRequestDispatcher("/korisniknivoa2.jsp");
                        rd.forward(request, response);
                  
              } 
                 
                  else if(privilegija ==4){
                      sesija.setAttribute("poruka", "Niste aktivirani od strane administratora i nije vam dodeljena privilegija za rad u aplikaciji");
                        RequestDispatcher rd = request.getRequestDispatcher("/greska.jsp");
                        rd.forward(request, response);
                  
              } 
                   
                  else {
                
                sesija.setAttribute("poruka", "Niste aktivirani u sistemu od strane administratora");
                RequestDispatcher rd = request.getRequestDispatcher("/greska.jsp");
                rd.forward(request, response);
            }
            } else {
                
                sesija.setAttribute("poruka", "Uneli ste neispravno korisničko ime ili lozinku");
                RequestDispatcher rd = request.getRequestDispatcher("/greska.jsp");
                rd.forward(request, response);
            }
        }
           else {
                sesija.setAttribute("poruka", "Niste uneli korisničko ime i lozinku");
                RequestDispatcher rd = request.getRequestDispatcher("/greska.jsp");
                rd.forward(request, response);
            }
        }catch(Exception e){
        out.println(e);}
    }

}


Bean Korisnik (izdvojene bitne stavke)
Code:
public class Korisnik {
;
    private String korisnickoime;
    private int privilegija;
    private int aktiviran;

    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }

    public String getKorisnickoime() {
        return korisnickoime;
    }
    public void setKorisnickoime(String korisnickoime) {
        this.korisnickoime = korisnickoime;
    }

   public int getPrivilegija() {
        return privilegija;
    }
    public void setPrivilegija(int privilegija) {
        this.privilegija = privilegija;
    }
    
     public int getAktiviran() {
        return aktiviran;
    }
    public void setAktiviran(int aktiviran) {
        this.aktiviran = aktiviran;
    }

}


Ukoliko je uspesno logovanje otvara se korisnik.jsp stranica u okviru koje koristeci JSP EL ispiujem username korisnika.

Code:
div id="gornjiMeni">Dobrodošli, ${korisnik.korisnickoime} | <a href="Izloguj">Izloguj se</a></div>



Korisnik na stranici ima formu gde unosi kriterijume za pretragu baze proizvoda. Kako da iz korisnik.jsp stranice i ${korisnik.korisnickoime} izvucem korisnicko ime koje bi u servletu Pretraga iskoristio za upit nad bazom (na osnovu username-a u tabeli baze dobijam informaciju o privilegijama i u skladu sa tim se ispisuju rezultati).

Kada u kodu servleta "Pretraga" rucno unesem username korisnika u upit, dobijam uredno rezultate, tako da je sve u redu osim pribavljanja korisnickog imena iz korisnik.jsp stranice.

Probao sam par varijanti za dobijanje vrednosti ali bezuspesno. Jedna od njih je:

Code:
HttpSession sesija = request.getSession(true);
            Korisnik korisnik = (Korisnik)sesija.getAttribute("korisnickoime");


Hvala unapred na pomoci.
[ dule_ns @ 07.07.2014. 10:31 ] @
Da bi ti deo koda:

Code:
sesija.getAttribute("korisnickoime");


nešto vratio moraš da imaš deo koda:

Code:
sesija.setAttribute("korisnickoime", obj);


a je ne vidim da si ti to negde odradio.
[ casperns2 @ 08.07.2014. 01:23 ] @
Pozdrav, da se nadovezem sa jednim pocetnickim pitanjem iz servleta.

Ako iz jednog servleta upisem podatke u Servlet Context , na primer listu Proizvoda

Code:
getServletContext().setAttribute("lista_proizvoda" , proizvodi);


Sa drugim servletom ocitam podatke i kastujem u odgovarajuci tip ...

Code:
getServletContext().getAttribute("lista_proizvoda");


na koji nacin pozivam da preko drugog servleta mi se ispisu podaci koje napisem u doGet()?
Kada stavim da servlet koji ocitava podatke iz <form> , da on i prikaze podatke , to radi ali kada hocu da podatke prosledim na Servlet Context i sa drugim servletom ocitam podatke tu negde gresim....
web.xml je automatski podesen ,da li treba da se tu izmeni neki url ili da se izbrise, na koji nacin da prilikom klika na neko dugme na html stranici pozove se drugi servlet koji preuzima podatke sa Servlet Context i obradjuje ih ?
Code:
<?xml version="1.0" encoding="UTF-8"?>
  <display-name>PrviServlet</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>PrviServlet</display-name>
    <servlet-name>PrviServlet</servlet-name>
    <servlet-class>PrviServlet.PrviServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>PrviServlet</servlet-name>
    <url-pattern>/PrviServlet</url-pattern>
  </servlet-mapping>
  <servlet>
    <description></description>
    <display-name>DrugiServlet</display-name>
    <servlet-name>DrugiServlet</servlet-name>
    <servlet-class>PrviServlet.DrugiServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>DrugiServlet</servlet-name>
    <url-pattern>/DrugiServlet</url-pattern>
  </servlet-mapping>
</web-app>