Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    2

    jsp - servlet - finestra modale, login

    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">&times;</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...

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Sposto nella sezione "Java", anche se la problematica riguarda più il lato client (quindi Bootstrap e JavaScript).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    2
    Nessuna idea? :\

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.