GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Erro JSP+Servlet+JPA Hibernate

Tags: #<Tag:0x00007f2895fcddb0> #<Tag:0x00007f2895fcdc48> #<Tag:0x00007f2895fcdb08> #<Tag:0x00007f2895fcd900> #<Tag:0x00007f2895fcd798>

quando chamo o metodo para validar login dar esse erro

Cógio da minha servlet

protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		String login = request.getParameter("username");
		String senha = request.getParameter("password");
		
		
		boolean validar = jpaDAO.validate(login, senha);
		
		System.out.println(validar);

		if (velidar == true) {

			RequestDispatcher dispatcher = request.getRequestDispatcher("login-success");
			dispatcher.forward(request, response);

		}
	}

Código do jpaDAO

public boolean validate(String userName, String password) {
		
		try {
			
			entityManager.getTransaction().begin();
		
			Query tecnicos = entityManager.createQuery("FROM Tecnicos t WHERE t.username = :userName and t.password = :password ")
					.setParameter("userName", userName)
					.setParameter("password", password);	
			
			//pessoa = entityManager.find(Pessoa.Class, id);
			
			if(tecnicos != null) {
				return true;
			}
			entityManager.getTransaction().commit();
			entityManager.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return false;
	}

Quando testo no java desktop não dá o erro… só acontece quando chamo do jsp para servlet
desde ja agradeço a ajuda de todos.

Qual é a linha 52 de Login.java? O erro está lá. Acredito que há boas probabilidades de ser esta linha e jpaDAO estar null:
boolean validar = jpaDAO.validate(login, senha)

E isto é mesmo assim? velidar? De onde vem esta variavel?
if (velidar == true) {

Vou postar as classes:
Pacote modelo: Tecnico

    @Entity
    @Table (name="Tecnicos")
    public class Tecnicos {
    	@Id
    	@GeneratedValue(strategy = GenerationType.IDENTITY)
    	@Column(name = "idTecnico")
    	private int idTecnico;
    	@Column(name="nomeTecnico")
    	private String nomeTecnico;
    	@Column(name="cpfTecnico")
    	private String cpfTecnico;
    	@Column(name="contatoTecnico")
    	private String contatoTecnico;
    		
    	@Column(name = "user_name")
    	private String username;
    	
    	@Column(name = "password")
    	private String password;
    }

Pacote Dao

public class TecnicosJpaDAO {

private static TecnicosJpaDAO instance;
protected EntityManager entityManager = getEntityManager();

public static TecnicosJpaDAO getInstance() {
	if (instance == null) {
		
		instance = new TecnicosJpaDAO();
	}

	return instance;
}

/*private TecnicosJpaDAO() {
	entityManager = getEntityManager();
}*/

private EntityManager getEntityManager() {
	
	EntityManagerFactory factory = Persistence.createEntityManagerFactory("solicitacoes");
	
	if (entityManager == null) {
		entityManager = factory.createEntityManager();
	}

	return entityManager;
}

public Tecnicos getById(final int id) {
	return entityManager.find(Tecnicos.class, id);
}

@SuppressWarnings("unchecked")
public List<Tecnicos> findAll() {
	return entityManager.createQuery("FROM " + Tecnicos.class.getName()).getResultList();
}

public void persist(Tecnicos Tecnicos) {
	try {
		entityManager.getTransaction().begin();
		entityManager.persist(Tecnicos);
		entityManager.getTransaction().commit();
	} catch (Exception ex) {
		ex.printStackTrace();
		entityManager.getTransaction().rollback();
	}
}

public void merge(Tecnicos Tecnicos) {
	try {
		entityManager.getTransaction().begin();
		entityManager.merge(Tecnicos);
		entityManager.getTransaction().commit();
	} catch (Exception ex) {
		ex.printStackTrace();
		entityManager.getTransaction().rollback();
	}
}

public void remove(Tecnicos Tecnicos) {
	try {
		
		entityManager.getTransaction().begin();
		Tecnicos = entityManager.find(Tecnicos.class, Tecnicos.getIdTecnico());
		entityManager.remove(Tecnicos);
		entityManager.getTransaction().commit();
		
	} catch (Exception ex) {
		ex.printStackTrace();
		entityManager.getTransaction().rollback();
	}
}

public void removeById(final int id) {
	try {
		Tecnicos Tecnicos = getById(id);
		remove(Tecnicos);
	} catch (Exception ex) {
		ex.printStackTrace();
	}
}

public boolean validate(String userName, String password) {
	
	try {
		
		entityManager.getTransaction().begin();
	
		Query tecnicos = entityManager.createQuery("FROM Tecnicos t WHERE t.username = :userName and t.password = :password ")
				.setParameter("userName", userName)
				.setParameter("password", password);	
		
		//pessoa = entityManager.find(Pessoa.Class, id);
		
		if(tecnicos != null) {
			return true;
		}
		entityManager.getTransaction().commit();
		entityManager.close();
		
	} catch (Exception e) {
		e.printStackTrace();
	}
	return false;
}

}

servlet

@WebServlet("/validar")
public class validar extends HttpServlet {
private static final long serialVersionUID = 1L;
private TecnicosJpaDAO jpaDAO;
private RepositorioTecnico repositorioTecnico;

/**
 * @see HttpServlet#HttpServlet()
 */
public validar() {
	super();
	// TODO Auto-generated constructor stub
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
 *      response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	// TODO Auto-generated method stub
	response.getWriter().append("Served at: ").append(request.getContextPath());

	doPost(request, response);
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
 *      response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {

	String login = request.getParameter("username");
	String senha = request.getParameter("password");
	
	
	boolean valida = jpaDAO.validate(login, senha);
	
	System.out.println(valida);

	if (valida) {

		RequestDispatcher dispatcher = request.getRequestDispatcher("login-success");
		dispatcher.forward(request, response);

	}
}

}

Web.xml

 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebApp_ID" version="3.0">
	<display-name>SysSolicitacoes</display-name>
	<welcome-file-list>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
		<welcome-file>login.jsp</welcome-file>
	</welcome-file-list>
	
	    <servlet>
        <servlet-name>validar</servlet-name>
        <servlet-class>br.com.syssolicitacao.servlets</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>validar</servlet-name>
        <url-pattern>/validar/*</url-pattern>
    </servlet-mapping>
	
</web-app>

Jsp

<form class="user" action="/SysSolicitacoes/validar" method="post">
<div class="form-group">
<input type="text" class="form-control form-control-user"
	id="exampleInputEmail" aria-describedby="emailHelp" placeholder="Enter Email Address...">
	</div>
	<div class="form-group">
	<input type="password" name="password" class="form-control form-control-user"
	id="exampleInputPassword" placeholder="Password">
	</div>
	<button type="submit" class="btn btn-primary btn-user btn-block">Entrar no Sistema</button>
	</form>

Tens de aprender a entender os teus problemas, mesmo que nao consigas resolve-los. Despejar todo o código quando te pedem uma linha em específico (e nem identificas essa linha) não te vai ajudar muito.

De qualquer forma, parece que a minha suposição está correta. O teu jpaDAO nunca é inicializado, está sempre a null. Tu declaras mas nunca lhe atribuis o valor que penso que queiras que seja TecnicosJpaDAO.getInstance()

Boa noite, desculpa não ter responde, eu consegui resolver o problemas, mesmo instanciando estava dando erro, precisar colocar o meu DAO dentro de um contexto, aí deu tudo certe, muito obrigado pela ajudar.

//