Nema potrebe da stalno kopiraš kod iz jedne JSP u drugu, u ovom primeru su to samo dve linije, šta ćeš kada ih bude 100-200-300?

U svaki JSP koji odgovara SK-u prijavljenog korisnika možeš dinamički dodati neku drugu JSP stranu, koja može a i ne mora sadržati HTML kod. U praksi prijavljeni korisnik uvek ima pristup kontroli za odjavu sa sistema ili vidi prikazano korisničko ime pod kojim je prijavljen, te je stoga praktično smestiti te komponente u zaglavlje stranice ili poseban DIV panel sa strane a koji će zgodno biti sadržan u "header_korisnik.jsp", što svakoj opisanoj stranici govorimo sledećim kodom:
Code:
<div id="header">
<jsp:include page="header_korisnik.jsp"/>
</div>
header_korisnik.jsp
Code:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8" errorPage="greska.jsp"
import="moj.sistem.beans.BeanKorisnik"%>
<div id="header">
<p id="prijavljen">
Prijavljen korisnik:
<%BeanKorisnik trenutniKorisnik = ((BeanKorisnik)(session.getAttribute("trenutniKorisnik")));%>
<%=trenutniKorisnik.getIme() + " "+ trenutniKorisnik.getPrezime()%>
</p>
<div id="odjava">
<form action="odjava">
<input type="hidden" id="sk" name="sk" value="Odjavi se">
<input type="submit" value="Odjavi se">
</form>
</div>
</div>
Svaka stranica sadrži posrednu proveru prijavljenog korisnika, tjst izbaciće grešku za korisnike koji nemaju dozvolu pristupa, koji su se odjavili (request.getSession().invalidate(); ) ili kojima je istekla sesija. Ovu situaciju obrađujemo sa "errorPage="greska.jsp"" i time preusmeravamo takve zahteve na greska.jsp:
Code:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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=utf-8">
<title>Došlo je do greške!</title>
</head>
<body>
<% response.setHeader("Refresh", "10;url=kontrolerLogin"); %>
<center>
<h1>Niste prijavljeni na sistem ili je došlo do greške. </h1>
<h3>Kontaktirajte tehničku podršku ukoliko se greška ponovi.</h3>
</center>
</body>
</html>
Posle 10s klijent automatski pravi nov zahtev servletu koji obrađuje putanju "kontrolerLogin" i potom preusmerava korisnika na odgovarajuću stranicu.
Obrati pažnju na to da prijavu korisnika obavezno radiš u doPost a ne u doGet, prvenstveno zbog toga što se sa doGet lozinka ispisuje u adresnom baru.
U sesiji čuvaj objekat tipa (klase) Korisnik jer je bezveze da stalno prosleđuješ brdo korisničkih atributa.
select * from... u kombinaciji sa Statement objektom i nekoliko navodnika vraća celokupnu tabelu. <eeek!> Umesto ovoga koristi PreparedStatement i izričito navedi koje kolone biraš, dakle SELECT username, password...
Kasno je pa sam stoga napisao nepovezane odgovore ali snaćićeš se već.