Galera, boa tarde estou estudando Java Web e estou encontrando algumas dificuldades ao tentar realizar a injeção de dependência com o Spring.
estou tentando fazer um login e estou recebendo o seguinte erro.
GRAVE: Servlet.service() for servlet [Spring_MVC_Dispatcher_Servlet] in context with path [/SGE] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException
at br.com.sge.logica.UsuarioLogica.efetuarLogin(UsuarioLogica.java:23)
at br.com.sge.controller.LoginController.efetuarLogin(LoginController.java:33)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:647)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:603)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:859)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:883)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:792)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
segue abaixo as minhas classes e arquivos de configuração.
Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>/loginForm</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Spring_MVC_Dispatcher_Servlet</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring-context.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Spring_MVC_Dispatcher_Servlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
spring-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd" xmlns:tx="http://www.springframework.org/schema/tx">
<context:component-scan base-package="br.com.sge" />
<mvc:annotation-driven />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="/WEB-INF/mensagens"/>
</bean>
<bean id="usuarioDAO" class="br.com.sge.dao.implementacao.UsuarioDAO">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<mvc:default-servlet-handler/>
<mvc:interceptors>
<bean class="br.com.sge.interceptor.AutorizadorInterceptor"/>
</mvc:interceptors>
<bean id="dataBase" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/SGE?UseUnicode=true;characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataBase"/>
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
<property name="packagesToScan" value="br.com.sge.modelo"/>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" >
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
</beans>
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost/SGE?UseUnicode=true;characterEncoding=UTF-8</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.hbm2ddl.auto">true</property>
<property name="hibernate.current_session_context_class">thread</property>
<mapping package="br.com.sge.modelo" ></mapping>
</session-factory>
</hibernate-configuration>
Usuario.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.sge.modelo;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.hibernate.annotations.OnDelete;
import org.hibernate.annotations.OnDeleteAction;
/**
*
* @author fabricio_maia
*/
@Entity
@Table(name="usuario")
public class Usuario implements Serializable{
@Id
@GeneratedValue
@Column(name="id_usuario")
private Long id_usuario;
@Column(name="nome_usuario")
private String nome_usuario;
@Column(name="login_usuario")
private String login_usuario;
@Column(name="senha_usuario")
private String senha_usuario;
@Column(name="email_usuario")
private String email_usuario;
@JoinColumn(name = "fk_id_perfil", referencedColumnName = "id_perfil")
@ManyToOne
@OnDelete(action= OnDeleteAction.CASCADE)
private Perfil perfil;
/**
* @return the id_usuario
*/
public Long getId_usuario() {
return id_usuario;
}
/**
* @param id_usuario the id_usuario to set
*/
public void setId_usuario(Long id_usuario) {
this.id_usuario = id_usuario;
}
/**
* @return the nome_usuario
*/
public String getNome_usuario() {
return nome_usuario;
}
/**
* @param nome_usuario the nome_usuario to set
*/
public void setNome_usuario(String nome_usuario) {
this.nome_usuario = nome_usuario;
}
/**
* @return the login_usuario
*/
public String getLogin_usuario() {
return login_usuario;
}
/**
* @param login_usuario the login_usuario to set
*/
public void setLogin_usuario(String login_usuario) {
this.login_usuario = login_usuario;
}
/**
* @return the senha_usuario
*/
public String getSenha_usuario() {
return senha_usuario;
}
/**
* @param senha_usuario the senha_usuario to set
*/
public void setSenha_usuario(String senha_usuario) {
this.senha_usuario = senha_usuario;
}
/**
* @return the email_usuario
*/
public String getEmail_usuario() {
return email_usuario;
}
/**
* @param email_usuario the email_usuario to set
*/
public void setEmail_usuario(String email_usuario) {
this.email_usuario = email_usuario;
}
/**
* @return the perfil
*/
public Perfil getPerfil() {
return perfil;
}
/**
* @param perfil the perfil to set
*/
public void setPerfil(Perfil perfil) {
this.perfil = perfil;
}
}
IUsuarioDAO.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.sge.dao.interfaces;
import br.com.sge.modelo.Usuario;
import java.util.List;
/**
*
* @author fabricio_maia
*/
public interface IUsuarioDAO {
/**
* Salva usuario
*
* @param usuario
*/
public void save(Usuario usuario);
/**
* altera usuario
*
* @param usuario
*/
public void update(Usuario usuario);
/**
* Recupera todos os usuario do banco
*
* @return List<Usuario>
*/
public List<Usuario> getAll();
/**
* Remove Usuario do Banco
*
* @param usuario
*/
public void delete(Usuario usuario);
/**
* Procura Usuario do Banco com um Id especifico
*
* @param Long
*/
public Usuario procuraId(Long id);
/**
* Procura Usuario do Banco com um Login e senha especificos
*
* @param String login
* @param String senha
* @return Usuario
*/
public Usuario procuraLoginSenha(String login, String senha);
}
UsuarioDAO.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.sge.dao.implementacao;
import br.com.sge.dao.interfaces.IUsuarioDAO;
import br.com.sge.modelo.Usuario;
import java.util.List;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
/**
*
* @author fabricio_maia
*/
@Repository
public class UsuarioDAO implements IUsuarioDAO {
@Autowired
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
@Override
public void save(Usuario usuario) {
sessionFactory.getCurrentSession().save(usuario);
}
@Override
public void update(Usuario usuario) {
sessionFactory.getCurrentSession().update(usuario);
}
@Override
public List<Usuario> getAll() {
List<Usuario> list;
list = sessionFactory.getCurrentSession().createCriteria(Usuario.class).list();
return list;
}
@Override
public void delete(Usuario usuario) {
sessionFactory.getCurrentSession().delete(usuario);
}
@Override
public Usuario procuraId(Long id) {
Usuario usu;
usu = (Usuario) sessionFactory.getCurrentSession().load(Usuario.class, id);
return usu;
}
@Override
@Transactional
public Usuario procuraLoginSenha(String login, String senha) {
Usuario user;
user = (Usuario) sessionFactory.getCurrentSession().createCriteria(Usuario.class)
.add(Restrictions.and(
Restrictions.eq("login_usuario", login),
Restrictions.eq("senha_usuario", senha))).uniqueResult();
return user;
}
}
LoginController.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.sge.controller;
import br.com.sge.logica.UsuarioLogica;
import br.com.sge.modelo.Usuario;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
*
* @author fabricio_maia
*/
@Controller
public class LoginController {
@RequestMapping("loginForm")
public String loginForm() {
return "formulario-login";
}
@RequestMapping("efetuarLogin")
public String efetuarLogin(Usuario usuario, HttpSession session) {
if (usuario != null) {
Usuario user;
user = new UsuarioLogica().efetuarLogin(usuario);
if (user != null) {
session.setAttribute("usuarioLogado", user);
return "menu";
} else {
return "redirect:loginForm";
}
} else {
return "redirect:loginForm";
}
}
@RequestMapping("logout")
public String efetuarLogout(HttpSession session) {
session.invalidate();
return "redirect:loginForm";
}
}
AutorizadorInterceptor.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.sge.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
/**
*
* @author fabricio_maia
*/
public class AutorizadorInterceptor extends HandlerInterceptorAdapter{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String uri = request.getRequestURI();
if(uri.endsWith("loginForm") || uri.endsWith("efetuarLogin") || uri.endsWith("css")){
return true;
}
if(request.getSession().getAttribute("usuarioLogado") != null){
return true;
}
response.sendRedirect("loginForm");
return false;
}
}
UsuarioLogica.java
[code]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package br.com.sge.logica;
import br.com.sge.dao.interfaces.IUsuarioDAO;
import br.com.sge.modelo.Usuario;
import javax.annotation.Resource;
//import org.springframework.beans.factory.annotation.Autowired;
/**
*
-
@author fabricio_maia
*/
public class UsuarioLogica {@Resource(name=“usuarioDAO”)
IUsuarioDAO usuarioDAO;public Usuario efetuarLogin(Usuario u) {
Usuario user;
user = usuarioDAO.procuraLoginSenha(u.getLogin_usuario(), u.getSenha_usuario());
return user;
}
}
[/code]
estou usando Apache Tomcat 7.0.27.0
Java EE 6 Web
em anexo tem uma imagem das libs que estou usando
como disse não entendo muito do assunto estou estudando alguém poderia me ajudar
desde já agradeço