2012-11-19 11 views
6

Sto creando un'applicazione di accesso in JAVA. Sto facendo la presentazione in JSP e tutta la logica (connettività del database) in Servlet [questo non è un approccio corretto, lo so]. Controllo il nome utente Password in Servlet e quindi creo una variabile di sessione. e aggiungere la sessione come questoConservazione della sessione in Java con sendredirect

sess.setAttribute("username",oName); 

Poi ho reindirizzare l'utente a sua homepage dire student.jsp

response.sendRedirect("student.jsp"); 

Rimuove la sessione variable.I hanno bisogno di un modo per preservare la variabile di sessione e si muovono to student.jsp.ho provato ad usare forwading ma non ha funzionato.

RequestDispatcher dispatcher = 
       getServletContext() 
        .getRequestDispatcher("/student.jsp"); 

      if (dispatcher != null) { 
       dispatcher.forward(request, response); 
      } 

Si inoltra la richiesta ma l'indirizzo della pagina non cambia in student.jsp che non va bene. Qualsiasi aiuto in questo senso sarà apprezzato Grazie

+1

Ecco come funziona l'inoltro: sostituendo il contenuto del browser, non l'URL. È necessario utilizzare il reindirizzamento, ma in qualche modo il browser in cui si stanno effettuando i test non consente i cookie. Abilita i cookie nel tuo browser ed esegui nuovamente l'applicazione. –

+1

questo è un buon tutorial che può aiutarti ad andare avanti. Lo eqivalent di JSP che si adatta in Servlet http://www.javapractices.com/topic/TopicAction.do?Id=181 –

risposta

5

Per la richiesta reindirizzata di tornare e allegare alla stessa sessione, ha bisogno di un ID di sessione, di solito effettuata in un JSESSIONID (o un altro nome) biscotto o nel URL come parametro.

Questo cookie o parametro URL deve essere aggiunto dal contenitore servlet e non è necessario aggiungerlo manualmente.

Se il browser non viene visualizzato nel browser e non si collega JSESSIONID all'URL, viene creata una nuova sessione per ogni richiesta e non viene associata alla stessa sessione.

-1

Utilizzare RequestDispatcher e impostare la variabile nome utente utilizzando request.setAttribute(). In questo caso il dispatcher non creerà una nuova richiesta ma la stessa richiesta verrà inoltrata usando il metodo forward().

+1

Questo non risolverà il problema concreto dell'OP a tutti. In questo modo l'utente non ha effettuato l'accesso in alcuna richiesta successiva. – BalusC

0

Provare a modificare il file Tomcat context.xml e sostituire il tag <Context> in <Context useHttpOnly="false">, questo mi ha aiutato.

Problemi correlati