Estou com um problema parecido com esse seu. Estou fazendo um sistema de Login. Olha só como está meu código:
Meu LoginDAO===========
[code]package br.com.caelum.fj26.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class LoginDAO {
public LoginDAO() {
}
public boolean Login(String usuario, String password) {
boolean ok = false;
try {
Class.forName("org.postgresql.Driver").newInstance();
} catch (Exception e) {
System.out.println("driver nao carregado");
}
try {
String sql = "SELECT * from Usuario where usuario=?, password=?";
Connection c = DriverManager.getConnection(
"jdbc:postgresql://localhost:5432/teste", "postgres",
"postgres");
PreparedStatement pstm = c.prepareStatement(sql);
ResultSet rs = pstm.executeQuery();
pstm.setString(1, usuario);
pstm.setString(2, password);
if (!rs.getString("usuario").equals(null)) {
if (rs.getString("usuario").equals(usuario)) {
if (rs.getString("password").equals(password)) {
ok = true;
}
} else {
ok = false;
}
}
} catch (SQLException ex) {
ex.printStackTrace();
}
return ok;
}
}[/code]
Meu LoginHandler===========
[code]package br.com.caelum.fj26;
import br.com.caelum.fj26.dao.LoginDAO;
import br.com.caelum.fj26.modelo.Login;
public class LoginHandler {
private LoginDAO loginDAO = new LoginDAO();
public LoginHandler() {
}
private Login LO = new Login();
public Login getLO() {
return LO;
}
public void setLO(Login LO) {
this.LO = LO;
}
public String login() {
System.out.println("usuario= " + LO.getUsuario());
System.out.println("password= " + LO.getPassword());
boolean ok = loginDAO.Login(LO.getUsuario(), LO.getPassword());
if (ok == true) {
return "ok";
} else
return "erro";
}
}[/code]
Meu jsp====
[code]<%@page contentType=“text/html”%>
<%@page pageEncoding=“UTF-8”%>
<%@taglib prefix=“f” uri=“http://java.sun.com/jsf/core”%>
<%@taglib prefix=“h” uri=“http://java.sun.com/jsf/html”%>
JSP Page
<h:form id="login_form">
<h:panelGrid columns="2" id="login_panel">
<f:facet name="header">
<h:outputText value="Login" />
</f:facet>
<f:facet name="footer">
<h:commandButton value="Logar" action="#{LoginHandler.login}"/>
</f:facet>
<!--campo usuario-->
<h:outputLabel for="usuario">
<h:outputText value="Usuario"/>
</h:outputLabel>
<h:inputText value="#{LoginHandler.LO.usuario}" id="usuario" />
<!--campo senha-->
<h:outputLabel for="password">
<h:outputText value="password"/>
</h:outputLabel>
<h:inputSecret value="#{LoginHandler.LO.password}" id="password" />
</h:panelGrid>
</h:form>
</body>
</f:view>
[/code]
O erro que aparece quando eu acesso o login.jsp é esse:
org.postgresql.util.PSQLException: Nenhum valor especificado para parâmetro 1.
at org.postgresql.core.v3.SimpleParameterList.checkAllParametersSet(SimpleParameterList.java:174)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:246)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:367)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:271)
at br.com.caelum.fj26.dao.LoginDAO.Login(LoginDAO.java:45)
at br.com.caelum.fj26.LoginHandler.login(LoginHandler.java:42)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.el.parser.AstValue.invoke(AstValue.java:131)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
at javax.faces.component.UICommand.broadcast(UICommand.java:383)
at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:186)
at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:164)
at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:352)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at br.com.caelum.fj26.util.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:20)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
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:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
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:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:636)
Alguem tem alguma dica do que pode estar errado?? Como eu sou novo no java, e nao tenho muito conhecimento de SQL (que é onde eu acho que está o meu erro…) fica dificil pra mim progredir sozinho…
Obrigado pela ajuda.