No problema anterior eu discartei o uso do arquivo js! Estava querendo enfeitar demais… rs
O meu problema com sessão é o seguinte:
Eu tenho uma página de login com os campos usuário e senha. Quando eu preencho os campos e mando enviar, a servlet Login é chamada através do action.
Código da servlet Login:
[color=blue]package servlet;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import tsda.dao.DAO_Interface;
import tsda.dao.DAO_Connector;
public class Login extends HttpServlet
{
private DAO_Interface obj_dao = null;
public void init(ServletConfig config) throws ServletException
{
super.init(config);
obj_dao = DAO_Connector.conecta();
}
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
try
{
//salvando os dados do usuario vindos da pagina
String nome = request.getParameter("tf_usuario");
String senha = request.getParameter("tf_senha");
ResultSet rs = obj_dao.getUsuario(nome, senha);
if(rs.next())
{
//criando uma sessao p/ o usuário
HttpSession sessao = request.getSession();
//setando atributos da sessao do usuário
sessao.setAttribute("Usuario",nome);
sessao.setAttribute("Senha",senha);
response.sendRedirect("/tsda/index.jsp");
}
else
{
response.sendRedirect("/tsda/invalido.jsp");
}
}
catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void destroy()
{
super.destroy();
obj_dao.closeConn();
}
}[/color]
Se o usuário exitir, é exibida a página index.
Na página index eu verifiquei novamente se há uma sessão criada. É esta parte que eu acho que fiz errado!
Código da página index:
[color=blue]
<%
HttpSession sessao = request.getSession(true);
String usuario = (String) sessao.getAttribute(“Usuario”);
if(usuario == null)
{
response.sendRedirect(“login.jsp”);
}
else
{
%>
//página
<%
}
%>[/color]
Eu verifiquei se a sessão estava criada p/ que usuário se loge obrigatoriamente no sistema. Porque estava acontecendo de o usuário digitar o endereço tsda/index.jsp e exibir a página sem a necessidade de se logar!!
Mas está funcionando somente na primeira vez que o usuário entra na página. Quando o usuário clica no link Sair da página index e é redirecionado p/ o login novamente, se ele digitar o endereço tsda/index.jps, é exibida a página sem a necessidade de se logar!!!
Deu p/ endender???
Esqueci de t explicar uma coisa. Quando c clica no link Sair, é chamada a servlet FechaSessao que possui o seguinte código:
[color=blue]package servlet;
import java.io.IOException;
import javax.servlet.ServletConfig;
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 FechaSessao extends HttpServlet
{
public void init(ServletConfig config) throws ServletException
{
super.init(config);
}
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
HttpSession sessao = request.getSession(true);
sessao.removeAttribute("Usuario");
sessao.removeAttribute("Senha");
response.sendRedirect("/tsda");
}
public void destroy()
{
super.destroy();
}
}[/color]
O que está acontecendo d errado???
Valew.