Tela de Login c/ Hibernate [RESOLVIDO]

Caros,

      Estou com um pequeno problema em uma tela de Login, estou passando o login e senha no formulário, mas me parece que quando a DAO vai fazer a pesquisa no banco, os valores das variáveis estão nulas (acredito que seja isso). Segue abaixo o código fonte das classes + o erro do console.

TELA DE LOGIN:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Tela de Login</title>
</head>
<body>
<h2>TELA DE LOGIN</h2>
<s:form action="login!checaLogin">
	<s:textfield name="usuario" label="Usuario" />
	<s:password name="senha" label="Senha" />
	<s:submit value="Logar" />
</s:form>
</body>
</html>

ACTION:

package app.action;

import app.dao.LoginDAO;

public class LoginAction {
	
	private String _login;
	private String _senha;
	private Boolean _retorno;
	private Boolean _valor;
	
	LoginDAO loga = new LoginDAO();
	
	public String checaLogin(){
		if ((isInvalido() == false) || (isInvalido() == false)){
			return "erro";
		}else{
			return "sucesso";
		}
	}
	
	public Boolean get_valor() {
		return _valor;
	}

	public void set_valor(Boolean valor) {
		_valor = valor;
	}

	private boolean isInvalido(){
//		if ((_login == null || _senha == null) || (_login.length() == 0) || _senha.length() == 0){
//			_valor = false;
//		}else{
			_valor = loga.buscaUsuario();
			_valor = _retorno;
//		}
		
		return _valor;
	}

	public String get_login() {
		return _login;
	}

	public void set_login(String login) {
		_login = login;
	}

	public String get_senha() {
		return _senha;
	}

	public void set_senha(String senha) {
		_senha = senha;
	}

	public Boolean get_retorno() {
		return _retorno;
	}

	public void set_retorno(Boolean retorno) {
		_retorno = retorno;
	}
	
}

BEAN:

package app.bean;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

import oracle.sql.DATE;

@Entity
@Table(name="funcionario")
public class Funcionario {

	@Id
	@GeneratedValue
	@Column(name="id_funcionario")
	private int _id_funcionario;
	@Column(name="de_nome")
	private String _de_nome;
	@Column(name="de_sexo")
	private String _de_sexo;
	@Column(name="dt_nasc")
	private DATE _dt_nasc;
	@Column(name="de_cpf")
	private String _de_cpf;
	@Column(name="de_rg")
	private String _de_rg;
	@Column(name="de_fone_celular")
	private String _de_fone_celular;
	@Column(name="de_fone_residencial")
	private String _de_fone_residencial;
	@Column(name="de_end")
	private String _de_end;
	@Column(name="de_cidade")
	private String _de_cidade;
	@Column(name="ch_uf")
	private String _ch_uf;
	@Column(name="fl_transporte")
	private int _fl_transporte;
	@Column(name="de_login")
	private String _login;
	@Column(name="de_senha")
	private String _senha;
	@Column(name="txt_obs")
	private String _txt_obs;
	
	
	public String get_de_nome() {
		return _de_nome;
	}
	public void set_de_nome(String deNome) {
		_de_nome = deNome;
	}
	public String get_de_sexo() {
		return _de_sexo;
	}
	public void set_de_sexo(String deSexo) {
		_de_sexo = deSexo;
	}
	public DATE get_dt_nasc() {
		return _dt_nasc;
	}
	public void set_dt_nasc(DATE dtNasc) {
		_dt_nasc = dtNasc;
	}
	public String get_de_cpf() {
		return _de_cpf;
	}
	public void set_de_cpf(String deCpf) {
		_de_cpf = deCpf;
	}
	public String get_de_rg() {
		return _de_rg;
	}
	public void set_de_rg(String deRg) {
		_de_rg = deRg;
	}
	public String get_de_fone_celular() {
		return _de_fone_celular;
	}
	public void set_de_fone_celular(String deFoneCelular) {
		_de_fone_celular = deFoneCelular;
	}
	public String get_de_fone_residencial() {
		return _de_fone_residencial;
	}
	public void set_de_fone_residencial(String deFoneResidencial) {
		_de_fone_residencial = deFoneResidencial;
	}
	public String get_de_end() {
		return _de_end;
	}
	public void set_de_end(String deEnd) {
		_de_end = deEnd;
	}
	public String get_de_cidade() {
		return _de_cidade;
	}
	public void set_de_cidade(String deCidade) {
		_de_cidade = deCidade;
	}
	public String get_ch_uf() {
		return _ch_uf;
	}
	public void set_ch_uf(String chUf) {
		_ch_uf = chUf;
	}
	public int get_fl_transporte() {
		return _fl_transporte;
	}
	public void set_fl_transporte(int flTransporte) {
		_fl_transporte = flTransporte;
	}
	public String get_txt_obs() {
		return _txt_obs;
	}
	public void set_txt_obs(String txtObs) {
		_txt_obs = txtObs;
	
	
	public void set_senha(String _senha) {
		this._senha = _senha;
	}
	public String get_senha() {
		return _senha;
	}
	public void set_id_funcionario(int _id_funcionario) {
		this._id_funcionario = _id_funcionario;
	}
	public int get_id_funcionario() {
		return _id_funcionario;
	}
	public void set_login(String _login) {
		this._login = _login;
	}
	public String get_login() {
		return _login;
	}
	
	
}

DAO:

package app.dao;

import org.hibernate.Query;
import org.hibernate.Session;

import app.bean.Funcionario;
import app.util.HibernateUtil;

public class LoginDAO {
	
	@SuppressWarnings("static-access")
	public boolean buscaUsuario(){
	
	HibernateUtil hibernateUtil = new HibernateUtil();
	Session sessao = hibernateUtil.getSession();
	
	Funcionario login = new Funcionario();
	Query query = sessao.createQuery("from Funcionario where de_login ='"+ login.get_login() + "' and de_senha ='"+ login.get_senha() + "'");  
	
	if (query == null){
		return false;
	}else{
		return true;
	}
	}
		
}

ERRO:

29/04/2011 14:56:51 org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files (x86)\Java\jre6\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files (x86)/Java/jre6/bin/client;C:/Program Files (x86)/Java/jre6/bin;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Common Files\Roxio Shared\DLLShared\;C:\Program Files (x86)\Common Files\Roxio Shared\OEM\DLLShared\;C:\Program Files (x86)\Common Files\Roxio Shared\OEM\DLLShared\;C:\Program Files (x86)\Common Files\Roxio Shared\OEM\12.0\DLLShared\;C:\Program Files (x86)\Roxio\OEM\AudioCore\;C:\Program Files (x86)\Windows Live\Shared
29/04/2011 14:56:51 org.apache.tomcat.util.digester.SetPropertiesRule begin
AVISO: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:PROJETO_RH' did not find a matching property.
29/04/2011 14:56:51 org.apache.tomcat.util.digester.SetPropertiesRule begin
AVISO: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:aula1_projeto2_exerc' did not find a matching property.
29/04/2011 14:56:51 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8083
29/04/2011 14:56:51 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 327 ms
29/04/2011 14:56:51 org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
29/04/2011 14:56:51 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.29
29/04/2011 14:56:52 com.opensymphony.xwork2.config.providers.XmlConfigurationProvider register
INFO: Parsing configuration file [struts-default.xml]
29/04/2011 14:56:52 com.opensymphony.xwork2.config.providers.XmlConfigurationProvider register
INFO: Parsing configuration file [struts-plugin.xml]
29/04/2011 14:56:52 com.opensymphony.xwork2.config.providers.XmlConfigurationProvider register
INFO: Parsing configuration file [struts.xml]
29/04/2011 14:56:52 org.apache.struts2.config.Settings getLocale
AVISO: Settings: Could not parse struts.locale setting, substituting default VM locale
29/04/2011 14:56:52 com.opensymphony.xwork2.util.ObjectTypeDeterminerFactory <clinit>
INFO: Detected GenericsObjectTypeDeterminer, initializing it...
29/04/2011 14:56:52 com.opensymphony.xwork2.util.XWorkConverter getInstance
INFO: Detected AnnotationXWorkConverter, initializing it...
log4j:WARN No appenders could be found for logger (com.opensymphony.xwork2.config.providers.XmlConfigurationProvider).
log4j:WARN Please initialize the log4j system properly.
29/04/2011 14:56:52 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8083
29/04/2011 14:56:52 org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
29/04/2011 14:56:52 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/13  config=null
29/04/2011 14:56:52 org.apache.catalina.startup.Catalina start
INFO: Server startup in 993 ms
29/04/2011 14:57:00 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet default threw exception
java.lang.NullPointerException
	at app.action.LoginAction.isInvalido(LoginAction.java:38)
	at app.action.LoginAction.checaLogin(LoginAction.java:15)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:399)
	at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:262)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:224)
	at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:213)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
	at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
	at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
	at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.intercept(ParametersInterceptor.java:161)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
	at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
	at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:83)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
	at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:207)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
	at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:74)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
	at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:127)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
	at org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:107)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
	at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:206)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
	at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:115)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
	at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:143)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
	at com.opensymphony.xwork2.interceptor.PrepareInterceptor.intercept(PrepareInterceptor.java:115)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
	at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:170)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
	at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:123)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
	at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
	at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:218)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
	at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50)
	at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:507)
	at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:421)
	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: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:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Unknown Source)

Grato a quem puder me ajudar a descobrir o que tá dando errado.

Jr. Calabró.

NullPointerException acontece quando você chama algo que ainda não foi criado, verifique a chama dos objetos para ver se não estar chamando antes de criar.Ja aconteceu isso comigo varias vezes.

Cara, é o seguinte, na classe LoginAction, nas linhas 34, 35, 36, tem esse codigo aqui:

           _valor = loga.buscaUsuario();  
             _valor = _retorno;  
 //      }  
           
         return _valor;  

la vc coloca _valor = loga.buscaUsuario(); , ou seja, recebe boolean de buscaUsusario, ai logo na linha de baixo vc
coloca _valor =_retorno, ou seja, _valor que recebia buscaUsuario, agora recebe _retorno, aonde vc instancia este retorno???
Acho que esse _retorno é null, entao _valor recebe null, causando java.lang.NullPointerException

Foi oque consegui perceber pelo seu codigo, se estiver errado me desculpe

É justamente isso que tá causando o erro, porque na verdade não era para usar mais a variável _retorno. Obrigado lucianotome.

Só que agora o erro está sendo outro, não está validando, esse é o erro inicial que me fez mexer no código e causou o NullPointer. Não sei pq cargas d’água
se eu colocar qualquer coisa no login e senha ele aceita fazer o login.

[quote=jrcalabro]É justamente isso que tá causando o erro, porque na verdade não era para usar mais a variável _retorno. Obrigado lucianotome.

Só que agora o erro está sendo outro, não está validando, esse é o erro inicial que me fez mexer no código e causou o NullPointer. Não sei pq cargas d’água
se eu colocar qualquer coisa no login e senha ele aceita fazer o login.[/quote]

Agradeço também ao Luciano_Lopes a sua dica vai ser de grande ajuda.

Caros,

      Creio que o problema esteja no trecho (Linhas 18 à 24):
 Query query = sessao.createQuery("from Funcionario where de_login ='"+ login.get_login() + "' and de_senha ='"+ login.get_senha() + "'");    
      
    if (query == null){  
        return false;  
    }else{  
        return true;  
    }  

Acredito que o banco de dados Oracle não esteja retornando null quando não encontra resultado algum, e sim um outro valor. Alguém sabe o que o Oracle retorna quando não tem dado nenhum pra mostrar?

Ao inves de usar isso:

    if (query == null){    
        return false;    
    }else{    
        return true;    
    }    

Tenta assim:

Funcionario funcionario = (Funcionario) query.uniqueResult();      
return funcionario != null;  

Show de bola… resolveu mais um dos problemas, mas o que eu verifiquei agora e que eu já tinha suspeitado desde o princípio. Veja o retorno do console do Eclipse:

Hibernate: select funcionari0_.id_funcionario as id1_0_, funcionari0_.de_nome as de2_0_, funcionari0_.de_sexo as de3_0_, funcionari0_.dt_nasc as dt4_0_, funcionari0_.de_cpf as de5_0_, funcionari0_.de_rg as de6_0_, funcionari0_.de_fone_celular as de7_0_, funcionari0_.de_fone_residencial as de8_0_, funcionari0_.de_end as de9_0_, funcionari0_.de_cidade as de10_0_, funcionari0_.ch_uf as ch11_0_, funcionari0_.fl_transporte as fl12_0_, funcionari0_.de_login as de13_0_, funcionari0_.de_senha as de14_0_, funcionari0_.txt_obs as txt15_0_ from funcionario funcionari0_ where de_login=‘null’ and de_senha=‘null’

where de_login=‘null’ and de_senha=‘null’

minhas variáveis estão null, em algum ponto do código eu estou zerando as variáveis.

[quote=jrcalabro]Show de bola… resolveu mais um dos problemas, mas o que eu verifiquei agora e que eu já tinha suspeitado desde o princípio. Veja o retorno do console do Eclipse:

Hibernate: select funcionari0_.id_funcionario as id1_0_, funcionari0_.de_nome as de2_0_, funcionari0_.de_sexo as de3_0_, funcionari0_.dt_nasc as dt4_0_, funcionari0_.de_cpf as de5_0_, funcionari0_.de_rg as de6_0_, funcionari0_.de_fone_celular as de7_0_, funcionari0_.de_fone_residencial as de8_0_, funcionari0_.de_end as de9_0_, funcionari0_.de_cidade as de10_0_, funcionari0_.ch_uf as ch11_0_, funcionari0_.fl_transporte as fl12_0_, funcionari0_.de_login as de13_0_, funcionari0_.de_senha as de14_0_, funcionari0_.txt_obs as txt15_0_ from funcionario funcionari0_ where de_login=‘null’ and de_senha=‘null’

where de_login=‘null’ and de_senha=‘null’

minhas variáveis estão null, em algum ponto do código eu estou zerando as variáveis.[/quote]

Cara olha só, não sou experte em java web, estou começando a estudar agora, mais na ao meu ver na linha 17 do LoginDao você cria um instância do tipo Funcionario, ao criar esta instancia seus atributos são inciados com os valores default para cada tipo, padrão “JavaBeans”. Na linha 18 você chama “login.get_login()” sem ter atribuido valor ao atributo login da classe Funcionário, ao meu ver você deveria atribir esse valor a “Funcionario” com o método “set_Login(String login)” e depois fazer a chamada a “login.get_login()”.

Bom caso eu esteja errado peço desculpas.

worldsoft Você está certo em parte, na parte q vc diz que eu estou zerando a variável está certa, eu já havia notado isso. Quanto a parte do login.get_login() o que eu fiz foi o seguinte, eu instanciei uma variável do tipo Funcionario, e o nome da variável é login. Mas obrigado pela resposta… vou fazer a correção para que a variável não seja zerada e posto o código corrigido pra vocês conferirem.

Caros,

      Como não poderia deixar de ser, agradeço a todos os que me ajudaram a resolver esse problema. Enfim, consegui desenvolver a tela de login utilizando struts2 + Hibernate. Fiz de forma simples, somente para estudo, ou seja, para ser uma tela de login eficiente e segura precisa de algumas melhoras, mas já dá pra ter uma base caso alguém precise de uma idéia para uma tela de login. Segue abaixo o código de todo o projeto para que vocês possam comparar com o código anterior. Podem analisar que as respostas que cada um deu aqui acabaram servindo para a implementação da tela.

TELA DE LOGIN (login.jsp)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Tela de Login</title>
</head>
<body>
<h2>TELA DE LOGIN</h2>
<s:form action="login!checaLogin" method="post">
	<s:textfield name="_login" label="Usuario" />
	<s:password name="_senha" label="Senha" />
	<s:submit value="Logar" />
</s:form>
</body>
</html>

ACTION (LoginAction.java)


package app.action;

import java.io.Serializable;

import app.bean.Funcionario;
import app.services.GerenciaLogin;

public class LoginAction implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 8736640188590563137L;

	private Boolean _valor;
	private Funcionario listaFuncionario;
	private static String _login;
	private static String _senha;

	// checa se login é válido
	public String checaLogin() {

		if (isInvalido(LoginAction._login, LoginAction._senha) == false) {
			return "erro";
		} else {
			return "sucesso";
		}
	}

	// busca dados para verificar a validade do login
	private boolean isInvalido(String login, String senha) {

		listaFuncionario = new GerenciaLogin().buscaUsuario();
		if (listaFuncionario != null) {
			_valor = true;
		} else {
			_valor = false;
		}

		return _valor;
	}

	public Boolean get_valor() {
		return _valor;
	}

	public void set_valor(Boolean valor) {
		_valor = valor;
	}

	public void setListaFuncionario(Funcionario listaFuncionario) {
		this.listaFuncionario = listaFuncionario;
	}

	public Funcionario getListaFuncionario() {
		return listaFuncionario;
	}

	public void set_login(String _login) {
		LoginAction._login = _login;
	}

	public static String get_login() {
		return _login;
	}

	public void set_senha(String _senha) {
		LoginAction._senha = _senha;
	}

	public static String get_senha() {
		return _senha;
	}

}

BEAN (Funcionario.java)


package app.bean;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "funcionario")
public class Funcionario implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -2260417394806007093L;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "id_funcionario")
	private int _id_funcionario;
	@Column(name = "de_nome")
	private String _de_nome;
	@Column(name = "de_sexo")
	private String _de_sexo;
	@Column(name = "dt_nasc")
	private String _dt_nasc;
	@Column(name = "de_cpf")
	private String _de_cpf;
	@Column(name = "de_rg")
	private String _de_rg;
	@Column(name = "de_fone_celular")
	private String _de_fone_celular;
	@Column(name = "de_fone_residencial")
	private String _de_fone_residencial;
	@Column(name = "de_end")
	private String _de_end;
	@Column(name = "de_cidade")
	private String _de_cidade;
	@Column(name = "ch_uf")
	private String _ch_uf;
	@Column(name = "fl_transporte")
	private int _fl_transporte;
	@Column(name = "de_login")
	private String _login;
	@Column(name = "de_senha")
	private String _senha;
	@Column(name = "txt_obs")
	private String _txt_obs;

	public String get_de_nome() {
		return _de_nome;
	}

	public void set_de_nome(String deNome) {
		_de_nome = deNome;
	}

	public String get_de_sexo() {
		return _de_sexo;
	}

	public void set_de_sexo(String deSexo) {
		_de_sexo = deSexo;
	}

	public String get_de_cpf() {
		return _de_cpf;
	}

	public void set_de_cpf(String deCpf) {
		_de_cpf = deCpf;
	}

	public String get_de_rg() {
		return _de_rg;
	}

	public void set_de_rg(String deRg) {
		_de_rg = deRg;
	}

	public String get_de_fone_celular() {
		return _de_fone_celular;
	}

	public void set_de_fone_celular(String deFoneCelular) {
		_de_fone_celular = deFoneCelular;
	}

	public String get_de_fone_residencial() {
		return _de_fone_residencial;
	}

	public void set_de_fone_residencial(String deFoneResidencial) {
		_de_fone_residencial = deFoneResidencial;
	}

	public String get_de_end() {
		return _de_end;
	}

	public void set_de_end(String deEnd) {
		_de_end = deEnd;
	}

	public String get_de_cidade() {
		return _de_cidade;
	}

	public void set_de_cidade(String deCidade) {
		_de_cidade = deCidade;
	}

	public String get_ch_uf() {
		return _ch_uf;
	}

	public void set_ch_uf(String chUf) {
		_ch_uf = chUf;
	}

	public int get_fl_transporte() {
		return _fl_transporte;
	}

	public void set_fl_transporte(int flTransporte) {
		_fl_transporte = flTransporte;
	}

	public String get_txt_obs() {
		return _txt_obs;
	}

	public void set_txt_obs(String txtObs) {
		_txt_obs = txtObs;
	}

	public void set_senha(String _senha) {
		this._senha = _senha;
	}

	public String get_senha() {
		return _senha;
	}

	public void set_id_funcionario(int _id_funcionario) {
		this._id_funcionario = _id_funcionario;
	}

	public int get_id_funcionario() {
		return _id_funcionario;
	}

	public void set_login(String _login) {
		this._login = _login;
	}

	public String get_login() {
		return _login;
	}

	public void set_dt_nasc(String _dt_nasc) {
		this._dt_nasc = _dt_nasc;
	}

	public String get_dt_nasc() {
		return _dt_nasc;
	}

}

SERVICE (GerenciaLogin.java)

package app.services;

import java.io.Serializable;

import app.action.LoginAction;
import app.bean.Funcionario;
import app.dao.LoginDAO;

public class GerenciaLogin implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 9102540233743467804L;

	public Funcionario buscaUsuario() {
		return new LoginDAO().buscaUsuario(LoginAction.get_login(), LoginAction.get_senha());
	}
}

UTIL (HibernateUtil.java)

package app.util;

import java.io.Serializable;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class HibernateUtil implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -6000489077286000220L;

	public static Session getSession() {
		SessionFactory f = new AnnotationConfiguration().configure()
				.buildSessionFactory();

		return f.openSession();
	}
}

DAO (LoginDAO.java)

package app.dao;

import java.io.Serializable;

import org.hibernate.Query;
import org.hibernate.Session;

import app.action.LoginAction;
import app.bean.Funcionario;
import app.util.HibernateUtil;

public class LoginDAO implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -2267678698572704756L;

	private Session s;

	public LoginDAO() {
		s = HibernateUtil.getSession();
	}

	// LOGAR
	public Funcionario buscaUsuario(String login, String senha) {

		login = LoginAction.get_login();
		senha = LoginAction.get_senha();

		// monta o comando
		Query q = s.createQuery("from Funcionario where de_login = '" + login
				+ "' and de_senha = '" + senha + "'");
		// recebe o resultado da query
		Funcionario funcionario = (Funcionario) q.uniqueResult();
		s.close(); // fecha a conexao
		return funcionario; // retorna o resultado
	}

}

STRUTS2 (struts.xml)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<include file="struts-default.xml" />

	<package name="default" extends="struts-default">

		<action name="login!*" method="login" class="app.action.LoginAction">
			<result name="sucesso">/index.jsp</result>
			<result name="erro">/errologin.jsp</result>
		</action>

	</package>
</struts> 

HIBERNATE (hibernate.cfg.xml)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
		<hibernate-configuration>
    <session-factory>
        
        <!-- CONECTA COM O BANCO DE DADOS -->
        <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="hibernate.connection.password">projetorh</property>
        <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:XE</property>
        <property name="hibernate.connection.username">projetorh</property>        
 
        <!-- SQL DIALETO -->
        <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
		
		<!-- MOSTRA O COMANDO SQL NO CONSOLE -->
        <property name="show_sql">true</property>        
        
        <property name="hbm2ddl.auto">update</property> 
        <!-- <property name="hbm2ddl.auto">create</property> --> 
        
        <mapping class="app.bean.Funcionario"/>

    </session-factory>
</hibernate-configuration>

WEB (web.xml)

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
	xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>PROJETO_RH</display-name>
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<welcome-file-list>
		<welcome-file>login.jsp</welcome-file>
	</welcome-file-list>
</web-app>

Lembrando que estou seguindo as especificações básicas da arquitetura da tecnologia Struts2+Hibernate, por isso a necessidade do pacote Services que é onde estão as classes que fazem acesso à DAO. Esse projeto foi feito utilizando banco de dados Oracle 10g (versão acadêmica).

Mais uma vez obrigado à todos.

Ass: Jr. Calabró