Bom, o erro acontece quando tento logar com meu usuário.
O xhtml Login
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</h:head>
<h:body>
<p:breadCrumb>
<p:menuitem value="categories" url="principal.xhtml" />
<p:menuitem value="Drama" url="drama.xhtml" />
<p:menuitem value="Romance" url="romance.xhtml"/>
<p:menuitem value="Ficção" url="ficcao.xhtml" />
<p:menuitem value="Terror" url="terror.xhtml" />
<p:menuitem value="Suspense" url="suspense.xhtml" />
<p:menuitem value="Logar-se" url="login.xhtml" />
</p:breadCrumb>
<center>
<h:panelGrid>
<p:messages />
<h:form id="form">
<p:panel closeable="false" header="Logar-se na locadora" style="width:350PX">
<h:panelGrid columns="2">
<h:outputLabel value="Usuario:" />
<h:inputText id="login" required="true" value="#{usuarioManagedBean.usuario.login}" requiredMessage="Campo [Usuario] obrigatorio" />
<h:outputLabel value="Senha:" />
<h:inputSecret redisplay="false" value="#{usuarioManagedBean.usuario.senha}" requiredMessage="Campo [Senha] obrigatorio" />
<h:commandButton value="Logar-se" action="#{usuarioManagedBean.logar}" />
</h:panelGrid>
</p:panel>
</h:form>
</h:panelGrid>
</center>
</h:body>
</html>
O MangedBean
package pojo;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import pojo.Usuario;
import javax.faces.application.FacesMessage;
@ManagedBean
@SessionScoped
public class UsuarioManagedBean {
private Usuario usuario;
private String login,senha;
private Validador validador;
public UsuarioManagedBean(){
usuario=new Usuario();
}
public Usuario getUsuario(){
return usuario;
}
public void setUsuario(Usuario usuario){
this.usuario=usuario;
}
public String logar(){
validador=new Validador();
if(validador.validar(usuario.getLogin(),usuario.getSenha())){
return "OK";
}
FacesMessage msg=new FacesMessage("Usuario/senha invalidos");
FacesContext.getCurrentInstance().addMessage("form", msg);
return "";
}
public String deslogar(){
FacesContext context=FacesContext.getCurrentInstance();
context.getExternalContext().getSessionMap().remove(usuario.getLogin());
context.getExternalContext().getSessionMap().remove(usuario.getSenha());
return "logout";
}
}
A classe usuario
package pojo;
public class Usuario {
private String login,senha;
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;
}
}
O validador
package pojo;
import java.sql.*;
import java.sql.SQLException;
public class Validador {
private String senha;
public boolean validar(String usuario,String pass) {
BD bd=new BD();
Boolean resultado=false;
if(bd.getConnection()){
try {
String sql="select user,pwd from usuarios where user=?";
PreparedStatement statement=bd.connection.prepareStatement(sql);
statement.setString(1,usuario);
ResultSet resultSet=statement.executeQuery();
if(resultSet.next()){
senha=resultSet.getString("pwd");
if(pass.equals(senha)){
System.out.println("login e usuario valido");
resultado=true;
}
}
System.out.println("Nao encontrado");
bd.close();
}
catch(SQLException erro){
System.out.println("Erro: "+erro);
}
}
return resultado;
}
}
e finalmente a classe responsavel por connectar no mysql
package pojo;
import java.sql.*;
public class BD {
public Connection connection = null;
private final String DRIVER = "com.mysql.jdbc.Driver";
private final String DBNAME = "locadora";
private final String URL = "jdbc:mysql://localhost:3306/" + DBNAME;
private final String LOGIN = "root";
private final String SENHA = "teste";
/**
* metodo que faz conexao com o banco de dados
* retorna true se houve sucesso, ou false em caso negativo
*/
public boolean getConnection() {
try {
Class.forName(DRIVER);
connection = DriverManager.getConnection(URL, LOGIN, SENHA);
System.out.println("Conectou");
return true;
} catch (ClassNotFoundException erro) {
System.out.println("Driver nao encontrado " + erro.toString());
return false;
} catch (SQLException erro) {
System.out.println("Falha ao conectar " + erro.toString());
return false;
}
}
public void close() {
try {
connection.close();
System.out.println("Desconectou");
} catch (SQLException erro) {}
}
}
o erro completo
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(String.java:694)
at com.sun.faces.application.view.MultiViewHandler.getResourceURL(Unknown Source)
at org.primefaces.renderkit.CoreRenderer.getResourceURL(CoreRenderer.java:72)
at org.primefaces.component.menu.BaseMenuRenderer.encodeMenuItem(BaseMenuRenderer.java:75)
at org.primefaces.component.breadcrumb.BreadCrumbRenderer.encodeMarkup(BreadCrumbRenderer.java:77)
at org.primefaces.component.breadcrumb.BreadCrumbRenderer.encodeEnd(BreadCrumbRenderer.java:38)
at javax.faces.component.UIComponentBase.encodeEnd(Unknown Source)
at javax.faces.component.UIComponent.encodeAll(Unknown Source)
at javax.faces.component.UIComponent.encodeAll(Unknown Source)
at javax.faces.component.UIComponent.encodeAll(Unknown Source)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(Unknown Source)
at com.sun.faces.application.view.MultiViewHandler.renderView(Unknown Source)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(Unknown Source)
at com.sun.faces.lifecycle.Phase.doPhase(Unknown Source)
at com.sun.faces.lifecycle.LifecycleImpl.render(Unknown Source)
at javax.faces.webapp.FacesServlet.service(Unknown Source)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:636)
Valeu