Ajuada com SESSION (HttpSession)

2 respostas
T

Tenho um servlet Login que autentica o usuário.
Um entra com a senha e login “usuario” e o outro com senha e login “admin”,
o “usuario” só pode ter a opção de Listar e o “admin” tem todas as opções. Isso em uma página jsp.
A minha dificuldade é: como faço para ter uma sessão diferente.
Se eu entro com “usuario” e depois em uma nova página como “admin” o “admin” substitui o “usuario”.

Código do Servlet Login

package servlets;

import java.io.IOException;

import javax.servlet.RequestDispatcher;

import javax.servlet.Servlet;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;
public class ServletLogin extends HttpServlet implements Servlet

{

protected void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException

{

doPost(request,response);

}
protected void doPost(HttpServletRequest request, 
					  HttpServletResponse response) 
					  throws ServletException, IOException
{
	String username = request.getParameter("username");
	String password = request.getParameter("password");
	
	if(username.equals("admin") && password.equals("admin") ||
			username.equals("usuario") && password.equals("usuario"))	  
	{
		HttpSession session = request.getSession();
		HttpSession session2 = request.getSession(); [b]Não resolve?[/b]
		
		if(username.equals("username"))
		{	
		    session.setAttribute("username",username);			
		}
		else
			session2.setAttribute("username",username); 
		
	    RequestDispatcher rd = request.getRequestDispatcher("index.jsp");
	    rd.forward(request,response);
	}		
	else
	{
		response.sendRedirect("login.jsp");
	}
}

}

2 Respostas

L

Cara.

A sessão é controlada pelo container.

E, falando a grosso modo, o container cria uma sessão para cada instância do browser.

Então, em teoria, para vc ter 2 sessões, é só abrir 2 janelas do browser.

Fazer isso:

HttpSession session = request.getSession();
HttpSession session2 = request.getSession(); Não resolve?

não adianta absolutamente nada. Pois está retornando a mesma instância de session, pois vc está usando a mesma request(valores).

Recomendo vc dar uma estudada sobre os conceitos web. O Livro “Use a Cabeça! JSP e Servlets” é muito bom para explicar estes pontos!

Um abraço.

T

Valeu! Vou estudar mais essa questão. :lol:

Criado 7 de julho de 2007
Ultima resposta 8 de jul. de 2007
Respostas 2
Participantes 2