Salve a tutti, sono nuovo!
Breve premessa: ho iniziato quest'anno il corso di programmazione web all'universit�.
Sto cercando di fare una cosa che non mi riesce (ovviamente, altrimenti non starei qui a chiedere), il contesto � un sito internet per adesso vuoto, con una sola pagina (home).
Invece di utilizzare una pagina dedicata al login era mia intenzione, al click sul pulsante login, far apparire una finestra modale (bootstrap) con il form del login.
Tale finestra modale, assieme alla barra superiore con il pulsante login sar� comune a tutte le pagine del sito, quindi la servlet che deve gestire il login NON deve reindirizzare l'utente in una nuova pagina, bens� mantenerlo sulla stessa.
Problema col reindirizzamento alla stessa pagina: avrei voluto fare in modo che se il login fallisce (password errata ad esempio), nella sessione si salvasse una variabile di controllo utilizzata poi nella finestra modale per visualizzare in rosso i campi dell'email e-o della password qualora fossero errati. Tuttavia ricaricando la pagina ovviamente la finestra modale viene chiusa. Io avrei invece bisogno di modificare la pagina corrente, dato che sarebbe solo la finestra modale a subire modifiche.
La barra superiore, se l'utente � loggato, presenter� il pulsante "logout", altrimenti il pulsante "login".
Avevo preso questo link come punto di partenza
https://www.javatpoint.com/servlet-h...logout-example
Ma fatta qualche modifica non funziona niente, e dato che (1) la materia non � delle mie preferite, e (2) ho sempre imparato le cose velocemente dalla lettura di esempi complessi funzionanti, vorrei chiedere se qualcuno pu� gentilmente scrivermi un esempio funzionante di quello che sto provando a fare... in fondo sono solo una jsp ed una servlet.
Posto le basi su cui sto lavorando:
.jsp, barra superiore e finestra modale:
codice:
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container">
<ul class="nav navbar-nav navbar-right">
<!-- login and register or user and logout -->
<%if(session.getAttribute("logged") != "logged")
{ %>
<li><button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#login_window">Register / Login</button><li>
<% }
else
{ %>
<li><a href="logout_servlet">Logout</a></li><!-- TODO non funzia -->
<li class="active"><a href="./"> <% out.print(session.getAttribute("username"));%><span class="sr-only">(current)</span></a></li>
<% } %>
</ul>
</div>
</nav>
<div id="login_window" class="modal fade" role="dialog">
<div class="modal-dialog">
<!-- Beg Login modal window -->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Login</h4>
</div>
<div class="modal-body">
<!-- Login form -->
<form action="login_servlet" method="post">
<div class="form-group">
<label for="username_field">Username</label>
<input type="username" name="username" class="form-control" id="username_field" placeholder="Username" required="required">
</div>
<div class="form-group">
<label for="password_field">Password</label>
<input type="password" name="password" class="form-control" id="password_field" placeholder="Password" required="required">
</div>
<button type="submit" value="login" class="btn btn-primary">Submit</button>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
<!-- End Login modal window -->
</div>
Login servlet:
codice:
public class login_servlet extends HttpServlet
{
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html");
String username = request.getParameter("username");
String password = request.getParameter("password");
response.getWriter().println("username_"+username);
if(!(username == null || password == null))
{}
else
{
if(check_username(username))
{
if(check_password(username, password))
{
request.getSession().setAttribute("logged", "logged");
request.getSession().setAttribute("username", username);
request.getSession().setAttribute("password", password);
}
else
{
request.getSession().setAttribute("logged", "wrong_password");
}
}
else
{
request.getSession().setAttribute("logged", "wrong_username");
}
}
// response.sendRedirect(request.getRequestURI());
}
private boolean check_username(String username)
{
//TODO check database for user existence
return ((username.toLowerCase() == "pippo"
|| username.toLowerCase() == "pluto"
|| username.toLowerCase() == "paperino"));
}
private boolean check_password(String username, String password)
{
//TODO check database for user existence
return ((username.toLowerCase() == "pippo"
|| username.toLowerCase() == "pluto"
|| username.toLowerCase() == "paperino")
&& (username.toLowerCase() == "pippo"
|| username.toLowerCase() == "pluto"
|| username.toLowerCase() == "paperino"));
}
}
Grazie mille per l'attenzione e grazie in anticipo per le risposte!
P.S. preferisco esempi anche semplificati (tipo senza la finestra modale) piuttosto che "modifica questa riga", "cambia quell'altra", etccetcc...