tvieira
Novembro 23, 2011, 2:37am
#1
Ola a todos,
Estando tendo um problema, tenho um formulário queo action é para um Servlet, nesse servlet eu faço o login e abro um sessão, porém quando eu clico em enviar ele vai pro servlet, porém, não me aparece informação alguma alguma, fica com a página em branco. Abaixo segue o código das páginas:
LOGIN.JSP
[code]<%@ include file=“cabecalho.jsp” %>
<%@ include file=“menu.jsp” %>
<h2>Login</h2>
<form action="ServletLogin" method="post">
E-mail: </br>
<input type="text" name="email" /></br></br>
Senha: </br>
<input type="password" name="senha" /></br></br>
<input type="submit" value="Entrar" />
</form>
<%@ include file=“rodape.jsp” %>[/code]
ServletLogin
[code]package webmundo.acao;
import com.mysql.jdbc.PreparedStatement;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
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 webmundo.conexao.ConexaoBd;
public class ServletLogin extends HttpServlet {
private String email, senha;
private Connection conexao;
private PreparedStatement ps;
private ResultSet rs;
public ServletLogin() throws ClassNotFoundException {
this.conexao = new ConexaoBd().Conexao();
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
email = request.getParameter("email");
senha = request.getParameter("senha");
}
void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, SQLException {
ps = (PreparedStatement) conexao.prepareStatement("SELECT usu_email, usu_senha, usu_nome FROM Usuarios WHERE "
+ "usu_email = " + email + " AND usu_senha = " + senha);
rs = ps.executeQuery();
conexao.close();
if(rs.next()) {
HttpSession sessao = request.getSession();
String logado = rs.getString("usu_nome");
sessao.setAttribute("logado", logado);
request.getRequestDispatcher("index.jsp").forward(request,response);
}
else {
request.getRequestDispatcher("login.jsp?erro=1").forward(request,response);
}
}
}[/code]
Alguém sabe o por que de estar ocorrendo isso?
Obrigado
Amigo implemente apenas o metodo doPost ou entao seu metodo doPost deve chamar o metodo
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
email = request.getParameter("email");
senha = request.getParameter("senha");
processRequest(request, response);
}
tvieira
Novembro 23, 2011, 6:54am
#3
Ola Leonardo,
Obrigado pela resposta!
Fiz o que você indicou mas continua a mesma coisa. Só com o doPost ou chamando ou método processRequest.
Alguma outra idéia?
Obrigado
ele não esta gerando nenhum erro?
esse rs é um resultSet?
Se ele for resultSet como voce esta fechando a conexao e depois dando next nele?
tvieira
Novembro 23, 2011, 7:12am
#5
Estava la quando estava fazendo alguns testes, mas mesmo colocando no local certo, continua ficando tudo em branco, não retorna nenhuma erro. Segue abaixo o código do Servlet como esta no momento:
[code]package webmundo.acao;
import com.mysql.jdbc.PreparedStatement;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
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 webmundo.conexao.ConexaoBd;
public class ServletLogin extends HttpServlet {
private String email, senha;
private Connection conexao;
private PreparedStatement ps;
private ResultSet rs;
public ServletLogin() throws ClassNotFoundException {
this.conexao = new ConexaoBd().Conexao();
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
email = request.getParameter("email");
senha = request.getParameter("senha");
try {
processRequest(request, response);
} catch (SQLException ex) {
Logger.getLogger(ServletLogin.class.getName()).log(Level.SEVERE, null, ex);
}
}
void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, SQLException {
ps = (PreparedStatement) conexao.prepareStatement("SELECT usu_email, usu_senha, usu_nome FROM Usuarios WHERE "
+ "usu_email = " + email + " AND usu_senha = " + senha);
rs = ps.executeQuery();
if(rs.next()) {
HttpSession sessao = request.getSession();
String logado = rs.getString("usu_nome");
sessao.setAttribute("logado", logado);
request.getRequestDispatcher("index.jsp").forward(request,response);
rs.close();
}
else {
request.getRequestDispatcher("login.jsp?erro=1").forward(request,response);
rs.close();
}
}
}[/code]
Amigo faça o seguinte coloque
o codigo na ultima linha do seu metodo doPost
response.getWriter().close();
outra dica tente usar o sendRedirect do response ao invés do request
Amigo Desculpe se vou estar falando alguma besteira
sou novo ainda e to tendo um pouco de dificuldade com servlets
porém pelo q meu professor me falou quando vc vai chamar um servlets
vc usa o nome dele e no lugar de .java é .do
e vc não da referencia a nenhum deles
[quote=tvieira]
[code]<%@ include file=“cabecalho.jsp” %>
<%@ include file=“menu.jsp” %>
<h2>Login</h2>
<form action="ServletLogin" method="post">
E-mail: </br>
<input type="text" name="email" /></br></br>
Senha: </br>
<input type="password" name="senha" /></br></br>
<input type="submit" value="Entrar" />
</form>
<%@ include file=“rodape.jsp” %>[/code]
<form action="ServletLogin.do" method="post">
Seguinte o .do é apenas uma nomeclatura muito utilizado quando se usa Struts
a action do seu form tem que ter o nome que voce registrou seu servlet no web.xml a tag é servlet-name
[quote=leonardobhbr]Seguinte o .do é apenas uma nomeclatura muito utilizado quando se usa Struts
a action do seu form tem que ter o nome que voce registrou seu servlet no web.xml a tag é servlet-name
[/quote]
blz
vlw!!!
tvieira
Novembro 23, 2011, 8:16am
#10
Alguma coisa tem de errado!
O Netbeans ele não gerou um arquivo web.xml
E quando eu coloco um ponto de interrupção para debugar o servlet, não acontece nada, como se nem estivesse chamando o servlet.
Fiz as últimas dicas mas nenhuma funcionou, continua a mesma coisa.
EDIT------------------------------------------
Resolvido! Eu não estava colocando as variáveis no SQL entre aspas simples e estava dando erro.
Obrigado