Exemplo de Login e Senha com JSP/Servlet usando Session.
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Logar extends HttpServlet {
private static final long serialVersionUID = 1L;
String login;
String senha;
public Logar() {
super();
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//Pega os dados (logi e senha) informados pelo usúario!
setLogin(request.getParameter("login"));
setSenha(request.getParameter("senha"));
Logar(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
public void Logar(HttpServletRequest request, HttpServletResponse response) throws IOException {
PrintWriter out = response.getWriter();
//verifica se os campos login e senha estão vazios!
if (login.equals("") && senha.equals("")) {
out.println("");
out.println("Os campos não podem ficar vazios! "<"a href=index.jsp>Voltar");
out.println("");
} else {
//faz a conexão com o Banco de Dados!
PreparedStatement ps = null;
Connection con = null;
try {
Class.forName("org.postgresql.Driver");
con = DriverManager.getConnection("jdbc:postgresql://localhost/BD", "postgres", "postgres");
String sql = ("SELECT usuarios.nome,usuarios.login,usuarios.senha FROM usuarios where login = ? and senha = ?");
ps = con.prepareStatement(sql);
//passa os dados login e senha para a consulta SQL
ps.setString(1, getLogin());
ps.setString(2, getSenha());
ResultSet rs = ps.executeQuery();
//verifica se login e senha existe!
if (rs.next()) {
//aqui você pode por exemplo recuperar algumas informações do usúario logado!
//"nome" , "tipo"
//Pega um valor da coluna indicada! nesse caso a coluna "nome"
//vai trazer o Nome do Usúario com base no nome e login imformados
String nome = rs.getString("nome");
//Passa o login e senha para Session
request.getSession().setAttribute("loginUsuario", getLogin());
request.getSession().setAttribute("senhaUsuario", getSenha());
//Chama a página de acesso! Nesse caso irá chamar a página Session.jsp
//onde passará os valores de login e senha para a session
out.println("");
out.println(""<"script>document.location.href='sessions.jsp';");
out.println("");
} else {
//login e senha incorretos!
out.println("");
out.println("Login ou senha inválidos."<"a href=index.jsp>Voltar");
out.println("");
}
} catch (Exception e) {
System.out.println("Erro " + e);
}
}
}
//Getters Setters
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
}
//Estrutura do Banco de Dados PostgreSQL!
/*CREATE TABLE "public"."usuarios" (
"id" SERIAL,
"nome" VARCHAR(50) NOT NULL,
"login" VARCHAR(50) NOT NULL,
"senha" VARCHAR(50) NOT NULL,
"tipo" VARCHAR(50) NOT NULL,
CONSTRAINT "usuarios_login_key" UNIQUE("login"),
CONSTRAINT "usuarios_pkey" PRIMARY KEY("id")
) WITH OIDS;
*/
index.jsp
"<"form id="form1" name="form1" method="post" action="logar">
"<"table width="200" border="0" align="center">
"<"tr>
"<"td>Login:
"<"td>
"<"input type="text" name="login" id="login" />
"<"/label>
"<"/tr>
"<"tr>
"<"td>Senha:
"<"td>
"<"input type="password" name="senha" id="senha" />
"<"/label>
"<"/tr>
"<"tr>
"<"td>
"<"td>
"<"input type="submit" name="button" id="button" value="logar" />
"<"/label>
"<"/tr>
"<"/table>
"<"/form>"
sessions.jsp
"<"body>
"<"%
String senha = null;
String login = null;
//Pega os valores login e senha passados na Servlet
login = (String) request.getSession().getAttribute("loginUsuario");
senha = (String) request.getSession().getAttribute("senhaUsuario");
//passando os valores de login e senha para a Session!
session.putValue("loginUsuario", login);
session.putValue("senhaUsuario", senha);
//chama a Página Principal do sistema!
out.println(""<"script>document.location.href='Principal.jsp';");
%">"
"<"/body>
Principal.jsp
"<"/body>
"<"%
//Verifica se está logado
if(session.getValue("loginUsuario") != null || session.getValue("senhaUsuario") != null){
//deixando vázio ele mostrarar a página ! Nessa caso o conteúdo da página Principal.jsp.
} else {
//se a session estiver vazias ele irá chamar a página index.jsp o que quer dizer que não existe usúario logado!
out.println(""<"script>document.location.href='index.jsp';");
}
%">"
"<"/body>
sair.jsp
"<"body>
"<"%
//Destroi as sessions
session.invalidate();
out.print("Você saiu do sistema.");
%">"
"<"/body>
Obs: Eu tenho problemas em postar códigos HTML, PHP e JSP etc...
Então eu estou colocando aspas no início de cada tag de HTML "<".
4 comentários:
cara, como que o html submete o formulário
Olá Odete obrigado pela visita!
bem o formulário é submetido através do action no inicio da tag "form"
veja
"<"form id="form1" name="form1" method="post" action="logar">
em action="logar" é o que será chamado após eu clicar no botão!
Qualquer dúvida pode posta!
Um abraço!
UMC
umcastec.com
Então colega, consegui fazer funcionar legal, mas surgiu um probleminha:
No seu código Principal.jsp na parte que vc colocou o seguinte comentário "//deixando vázio ele mostrarar a página ! Nessa caso o conteúdo da página Principal.jsp."
eu preciso abrir uma página dentro de um iframe, e atualmente só consigo abrir ela fora do iframe.
tem alguma idéia?????
Agradeço desde já...
Olá Odete Sá,
isso vai depender de como você está fazendo a Session no Iframe!
Ex: Tenho a pagina iframe.jsp onde ela é o "iframe-principal, contendo o topo do site" toda vez que for executado ele irá chamar o index.jsp "login e senha" que ficará no meio "<"body">" que conterá os conteúdos etc...
então você deverá colocar o validador da Session dentro do Iframe no local onde será chamado a
a index.jsp e Principal.jsp!
Por que? -> porque toda vez que executar ele dirá que não existe Session e continuará na index.jsp quando logar vai chamar Sessions.jsp e voltará para iframe.jsp quando retornar ele vai validar e irá chamar a Principal.jsp!
Bom isso é um idéia de cabeça não estou em condições de faze-la na prática peço desculpas por não ajudar na "pratica"! mas assim que surgi um tempo irei aplicar esse exemplo!
Obrigado pela visita e volte sempre!
Contato:
umcastec@hotmail.com
umcastec@gmail.com
umcastec.com
Postar um comentário