Dúvida. Não consigo Logar na minha tela de Login - JAVA- JSF - JDBC - PRIMEFACES-

19 respostas
java
B

Boa tarde. Sou novo em programação Java Web.Estou precisando de uma ajuda de vocês.Não consigo rodar a minha tela de Login. Talvez seja problema no meu método na classe UsuarioBean ou no UsuárioDao.Desde já agradeço.

package persistence;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

public class Dao {

Connection con;
PreparedStatement stmt;
ResultSet rs;

private final String URL="jdbc:mysql://localhost:3306/agoravai";
private final String USER = "root";
private final String PASS = "157849";

protected void open() throws Exception {
	Class.forName("com.mysql.jdbc.Driver");
	con = DriverManager.getConnection(URL, USER, PASS);

}

protected void close() throws Exception {
	con.close();
}

}

package persistence;

import model.Usuario;

public class UsuarioDao extends Dao {

public void cadastrar(Usuario user) throws Exception {
	open();
	stmt = con.prepareStatement("insert into usuario values(null,?,?,?)");
	stmt.setString(1, user.getLogin());
	stmt.setString(2, user.getSenha());
	stmt.setString(3, user.getNome());
	stmt.execute();
	close();
}

public Usuario logar(Usuario user) throws Exception {
	open();
	stmt = con.prepareStatement("select logar(?,?)");
	stmt.setString(1, user.getLogin());
	stmt.setString(2, user.getSenha());
	rs = stmt.executeQuery();

	Usuario usuario = new Usuario();
	close();
	return usuario;
}

public static void main(String[] args) {
	try {
		Usuario user = new Usuario();
		user.setLogin("bruno");
		user.setSenha("123");
		user.setNome("Bruno Fraga");

		UsuarioDao ud = new UsuarioDao();
		ud.cadastrar(user);

		System.out.println("usuario cadastrado");

	} catch (Exception e) {
		e.printStackTrace();
	}

}

}

package control;

import javax.faces.application.FacesMessage;

import javax.faces.bean.ManagedBean;

import javax.faces.bean.SessionScoped;

import javax.faces.context.FacesContext;
import model.Usuario;

import persistence.UsuarioDao;

@ManagedBean(name=uBean)

@SessionScoped

public class UsuarioBean {
private Usuario usuario;

public UsuarioBean() {
	usuario = new Usuario();
}


public Usuario getUsuario() {
	return usuario;
}


public void setUsuario(Usuario usuario) {
	this.usuario = usuario;
}


public String logar(){
	try{
		 UsuarioDao ud = new UsuarioDao();
		Usuario user = ud.logar(usuario);
		usuario = user;
		if(user != null){
			return "admin/painel";
		}else{
			FacesContext.getCurrentInstance().addMessage("formlogin", new FacesMessage("usuario invalido"));
		}
		
	}catch (Exception e) {
		FacesContext.getCurrentInstance().addMessage("formlogin", new FacesMessage("Erro: " + e.getMessage()));
	}
return null;
}

}

19 Respostas

RaulCrash

E o que acontece? Qual erro? Cadê seu xhtml?

B

Opa Raul. Não mexi nele ainda.

<?xml version="1.0" encoding="UTF-8"?> Login_02 index.html index.htm index.jsp default.html default.htm default.jsp Faces Servlet javax.faces.webapp.FacesServlet 1 Faces Servlet /faces/*

Quando eu vou logar exibe o erro abaixo.Obs: já cadastrei o usuário pelo main.

Nome do Erro:
Erro: FUNCTION agoravai.logar does not exist

RaulCrash

agora ficou mais confuso… Se você não tem sua pagina de Login obviamente não irá aparecer. Me explica melhor, pois você postou o web.xml ele irá fazer varias configurações p/ que sua app web funcione (não vamos entrar em detalhes) e uma delas é qual pagina que inicia a aplicação (o que você já postou index.html, index.jsp …).
O que vc já fez?

B

Então, eu tenho a página de login.xhtml e painel.xhtml pra quando logar redirecionar pra ele.“painel.xhtml”.
Me passa seu e-mail que te mando o projeto.
ou então me manda um oi lá no meu e-mail: [email removido] que eu lhe passo… E já te agradeço pela ajuda :slight_smile:

RaulCrash

Não precisa, vejamos. Vc está realizando o redirect pelo index.jsp p/ o painel.xhtml? Se sim, posta o conteúdo da pagina login.xhtml… Por que o erro tá aqui agoravai.logar, esta controller agoravai existe? Se existe nela existe o metodo logar?

B

Criei agora o Index.jsp.

pelo index jsp.

Index.JSP:

<%

response.sendRedirect(login.htm);

%>

Login.XHTML:

<?xml version="1.0" encoding="ISO-8859-1" ?>

<h:head>

Insert title here

</h:head>
<h:head></h:head>
<h:body>

<h:form id="formlogin">
		<p:panel header="LOGIN NO SISTEMA">
			<h:panelGrid columns="2">
				<h:outputText value="LOGIN: " />
				<p:inputText id="login" value="#{uBean.usuario.login}" />
				
				<h:outputText value="SENHA: " />
				<p:password id="senha" value="#{uBean.usuario.senha}" />
			</h:panelGrid>
			<p:commandButton value="LOGAR NO SISTEMA" 
			update="formlogin" ajax="false" action="#{uBean.logar}"/>
			<p:message for="formlogin"></p:message>
		</p:panel>
	</h:form>
	
</h:body>

Painel.xhtml

<h:head></h:head>
<h:body>
	Seja bem vindo ao sistema, <h:outputText value="#{uBean.usuario.nome}" />
	
	<p:separator />
	
	<p:commandButton action="#{uBean.sair}" value="SAIR DO SISTEMA" 
	ajax="false" />
</h:body>
RaulCrash

no index.jsp coloca assim :

<jsp:forward page="/login.jsf"/>

Apaga o scriptlet
EDIT:
Testa e veja se vai dar algum erro e dê um retorno por gentileza.

B

fiz e deu o mesmo erro.

RaulCrash

Posta toda a exception … somente a exception

B

Dá Classe UsuarioBean:

public String logar(){

try{

UsuarioDao ud = new UsuarioDao();

Usuario user = ud.logar(usuario);

usuario = user;

if(user != null){

return admin/painel;

}else{

FacesContext.getCurrentInstance().addMessage(formlogin”, new FacesMessage(usuario invalido));

}
}catch (Exception e) {
		FacesContext.getCurrentInstance().addMessage("formlogin", new FacesMessage("Erro: " + e.getMessage()));
	}
return null;
}
RaulCrash

Não brow a exception que preciso. É o erro que aparece no console saca?

B

ah ta. só um min.

B

ADVERTÊNCIA: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property ‘source’ to ‘org.eclipse.jst.jee.server:Login_02’ did not find a matching property.

RaulCrash

Isto é uma exception! Veja o console o que ocorre com a aplicação.

B

não ocorre não

B

RaulCrash

Ok. Mas não está aparecendo a tela de login agora?

B

Toda vez q eu rodo projeto no servidor aparece a tela normalmente. O problema só ocorre quando clico no botão Logar no Sistema aí exibe o erro.

RaulCrash

Seu problema inicial :

Que erro ? Se dá exception no console já posta tbm .

Criado 9 de janeiro de 2017
Ultima resposta 9 de jan. de 2017
Respostas 19
Participantes 2