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.
pmlm
Abril 15, 2021, 8:48am
#2
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>
pmlm
Abril 16, 2021, 8:19am
#4
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.