Como eu guardo valores do FORM em Sessao ?
Sessao
13 Respostas
request.getSession().setAttribute("valor", objeto);
É minha chance de mostrar que aprendi alguma coisa.
Com o trecho de código que você postou eu consegui criar a sessão aqui e posso explicar em detalhes.
Faz assim, cria-se a sessão ao contrário.
<% if (session != null) {
%>
<jsp:forward page="aceito.jsp" /> <!--redireciona para esta página se o usuário já tiver feito o login -->
<% } %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Gerenciar Sistemas - Administração</title>
<link rel="icon" type="image/x-icon" href="favicon.ico" />
<link href="style/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="login"> <h2>Gerenciar Sistemas - Administração</h2>
<form action="verificar_login.jsp" method="post">
login: <input type="text" name="login">
senha: <input type="password" name="senha">
<input type="submit" value="entrar">
</form>
</div>
</body>
</html>
<%
// Captura parâmetros *****
String sLogin = request.getParameter("login");
String sSenha = request.getParameter("senha");
// Envia comando de verificação de login
try {
Class.forName("org.gjt.mm.mysql.Driver");
java.sql.Connection con =
java.sql.DriverManager.getConnection("jdbc:mysql://localhost/database", "user", "senha");
java.sql.Statement stmt = con.createStatement();
java.sql.ResultSet rs = stmt.executeQuery(
"SELECT cod, senha, nome FROM administrador WHERE login = '" + sLogin + "' && senha = '" + sSenha + "'");
// Verifica se o "ResultSet" retornou nenhuma linha *****
rs.last();
if (rs.getRow() == 0) { //zero linhas
%>
<jsp:forward page="index.jsp" />
<% // faz redirecionar para a página de login novamente...
return;
}
/** Este comando somente retornará no máximo um elemento, pois "login"
deve ser um campo UNIQUE *****/
rs.first();
// Verifica se a senha obtida no banco confere com o parâmetro ****
if (!rs.getString("senha").equals(sSenha)) { //*** senha não confere
%> <jsp:forward page="index.jsp" />
<%
}
else {
// OK! Usuário logado
// Atualizar a data de login e depois redirecionar para a tela de administracao ***
stmt.executeUpdate("UPDATE administrador SET dtultimoacesso = now() WHERE login = '" + sLogin + "'");
// criando sessão ***
request.getSession().setAttribute("login", sLogin);
request.getSession().setAttribute("senha", sSenha);
%> <jsp:forward page="aceito.jsp" /> <!-- desta maneira a url da página não aparece no browser (navegador) -->
<%
}
} catch (java.sql.SQLException sqlex) {
out.println("Erro na tentativa de login:<br>" + sqlex.toString());
}
%>
Agora cria-se a página protegida. (aceito.jsp) e pronto.
O problema é que eu não sei criar um link, onde podemos encerrar a sessão clicando nele.
Isso eu nunca aprendi.
Alguém se habilita a ajudar?
Obrigado.
Já resolvi isso neste link aqui:
http://www.javafree.org/javabb/viewtopic.jbb?t=868870
Agora pretendo aprender como fazer com que a sessão
se expire após clicar em logout.
Agora deverei utilizar cookies ou usar alguma função para expirar sessão?
Obrigado.
Já resolvi isso neste link aqui:http://www.javafree.org/javabb/viewtopic.jbb?t=868870
Agora pretendo aprender como fazer com que a sessão
se expire após clicar em logout.Agora deverei utilizar cookies ou usar alguma função para expirar sessão?
Obrigado.
session.invalidate();
Esse comando invalida a sessão.
[]'s
Não consigo fazer com que a sessão se expire realmente. Se eu digitar a URL da página protegida
no navegador, vou conseguir entrar tranquilamente.
Quer ver um exemplo mais conhecido de sessão?
Tente responder um tópico aqui no fórum sem estar logado. Não vai não é?
Então, é disso que eu estou falando. Isso eu não consigo fazer…
Não consigo fazer com que a sessão se expire realmente. Se eu digitar a URL da página protegida
no navegador, vou conseguir entrar tranquilamente.Quer ver um exemplo mais conhecido de sessão?
Tente responder um tópico aqui no fórum sem estar logado. Não vai não é?
Então, é disso que eu estou falando. Isso eu não consigo fazer…
Eu sei o que é sessão… O comando que eu passei destroi a sessão. Se estiver usando JSP é exatamento como mostrei para você.
Se estiver usando servlet faça da seguinte forma:
HttpSession session = request.getSession();
session.invalidate();
Eu estou usando jsp mesmo.
Eu adicionei no link de logout um comando para retornar o nome do usuário.
E advinhe só o que retorna quando eu acesso a página protegida diretamente, sem login: [b]null[/n]
Por isso estou dizendo, não está destruindo a sessão! A sessão é aberta nula.
Quer que eu prove?
Adicionei este código na página protegida:
if(sLogin == null) {
response.sendRedirect("index.jsp");
}
Agora sim, toda vez que eu tentar, digamos assim, “invadir” a página pelo browser, ela será
redirecionada para a página principal.
E na página de logout eu adicionei o seu código. Mas acho que a sessão encerrava, mas por
que então que retornava como sessão nula ou algo assim?
Obrigado.
Você perguntou como fazer para a sessão expirar e não como verificar se ela existe. De qualquer forma o comando que lhe passei apenas invalida a sessão.
[]'s
O ideal era que você fizesse um controle que verificasse o estado da sessão a cada requisição que você realizar!!!
Mas foi assim que eu resolvi o problema. Usei um if pra checar se a sessão estava nula.
Mas o problma é que pra mim o comando para invalidar a sessão nem faria falta, já que o modo que eu criei a sessão pega os valores dos campos mesmo ela estando nula. E se estiver, então redireciona para a página de login.
Não vejo o porque de invalidar uma sessão que precisa ser checada toda vez.
Não sei o que fazer então…
O ideal era que você fizesse um controle que verificasse o estado da sessão a
cada requisição que você realizar!!!
E como fazer o teste?
Se eu tentar pegar o parâmetro utilizando um request.getParameter() em outras
páginas, a sessão será nula, pois as outras páginas não pegou a sessão do form.
Então acho que terei que gravar e retornar a sessão de alguma forma: como faço isso utilizando cookies?
Obrigado.
Já resolvi.
//teste de conexão
if (session.getValue("login_cliente") == null || session.getValue("senha_cliente") == null) {
response.sendRedirect("index.jsp");
}
Como posso fazer um teste através do banco de dados.
Exemplo: tenho apenas um formulário, onde administradores e usuários entrarão por lá.
Como posso fazer o teste de qual tipo de sessão se iniciará?