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);}
}
}
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;
}
}
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>
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");
HttpSession sesija = request.getSession(true);
Korisnik korisnik = (Korisnik)sesija.getAttribute("korisnickoime");
Hvala unapred na pomoci.
Mrav radi, tegli, i od njega nije postalo ništa,
a majmun se zezao po drveću i od njega je postao čovek.
Brana Crnčević
a majmun se zezao po drveću i od njega je postao čovek.
Brana Crnčević