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;
}
}
E o que acontece? Qual erro? Cadê seu xhtml?
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
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?
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: bruno-fraga@hotmail.com que eu lhe passo… E já te agradeço pela ajuda
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 ?
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>
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.
RaulCrash:
agoravai.logar
Posta toda a exception … somente a exception
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;
}
Não brow a exception que preciso. É o erro que aparece no console saca?
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.
Isto é uma exception! Veja o console o que ocorre com a aplicação.
Ok. Mas não está aparecendo a tela de login agora?
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.
Seu problema inicial :
Que erro ? Se dá exception no console já posta tbm .