Hibernate- Java EE erro

Olá estou quebrando a cabeça e não acho o erro na register.jsp quando inicia o servidor

Organização das pastas:

Bibliotecas:

HibernateUtil.java
import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration; 

 
public class HibernateUtil {
 
 private static final SessionFactory sessionFactory = buildSessionFactory();

  private static SessionFactory buildSessionFactory() {
   try {
	// AnnotationConfiguration() não vale mais substituir por cConfiguration()
	// https://stackoverflow.com/questions/3942880/hibernate-annotationconfiguration-deprecated   
    return new Configuration().configure().buildSessionFactory(); 
   } catch (Throwable ex) {
    System.err.println("Initial SessionFactory creation failed." + ex);
    throw new ExceptionInInitializerError(ex);
   }
  }

  public static SessionFactory getSessionFactory() {
   return sessionFactory;
  }

  public static void shutdown() {
   getSessionFactory().close();
  }


}

StudentDao.java
import java.util.ArrayList;

import org.hibernate.Session;

import hibernate.HibernateUtil;

public class StudentDao {

	 public static void saveUser(Student student) {
	   Session session = HibernateUtil.getSessionFactory().openSession();
	   session.beginTransaction();

	   session.save(student);

	   session.getTransaction().commit();
	  }

	  public void updateUser(Student student) {
	   Session session = HibernateUtil.getSessionFactory().openSession();
	   session.beginTransaction();

	   session.merge(student);

	   session.getTransaction().commit();
	  }

	  public void deleteUser(Student student) {
	   Session session = HibernateUtil.getSessionFactory().openSession();
	   session.beginTransaction();

	   session.delete(student);

	   session.getTransaction().commit();
	  }

	  public void getUser() {
	   Session session = HibernateUtil.getSessionFactory().openSession();
	   session.beginTransaction();

	   ArrayList<Student> list = (ArrayList<Student>) session.createQuery("from Student").list();
	   if (list != null) {
	    for (int i = 0; i < list.size(); i++) {
	     System.out.println("User ID : " + list.get(i).getId());
	     System.out.println("User First Name : "+ list.get(i).getFirstname());
	     System.out.println("User Last Name : "+ list.get(i).getLastname());
	     System.out.println("User Roll No : " + list.get(i).getRollno());
	     System.out.println("User Address : " + list.get(i).getCourse());
	    
	   }
	   }
	   session.getTransaction().commit();
	  }

	}

Student.java
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="STUDENT") 
public class Student {

	@Id // Annotation for Primary key
	@GeneratedValue(strategy=GenerationType.IDENTITY) // for mysql
	@Column(name="id") 
	private int id;

	@Column(name="rollno")   
	private String rollno;

	@Column(name="firstname")   
	private String firstname;

	@Column(name="lastname")     
	private String lastname;

	@Column(name="course")   
	private String course;

	@Column(name="address")   
	private String address;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getRollno() {
		return rollno;
	}

	public void setRollno(String rollno) {
		this.rollno = rollno;
	}

	public String getFirstname() {
		return firstname;
	}

	public void setFirstname(String firstname) {
		this.firstname = firstname;
	}

	public String getLastname() {
		return lastname;
	}

	public void setLastname(String lastname) {
		this.lastname = lastname;
	}

	public String getCourse() {
		return course;
	}

	public void setCourse(String course) {
		this.course = course;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}



}

hibernate.cfg.xml

<hibernate-configuration>

    <session-factory>

        <!-- JDBC Database connection settings -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/dbtutorialsdesk?useSSL=false</property>
        <property name="connection.username">roott</property>
        <property name="connection.password">123</property>

        <!-- JDBC connection pool settings ... using built-in test pool -->
        <property name="connection.pool_size">1</property>

        <!-- Select our SQL dialect -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

        <!-- Echo the SQL to stdout -->
        <property name="show_sql">true</property>

		<!-- Set the current session context -->
		<property name="current_session_context_class">thread</property>
 
    </session-factory>

</hibernate-configuration>

index.jsp
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>




Insert title here

	<form action="register.jsp" method="post">
		Roll Number:<input type="text" name="rollno"/><br><br/>
		First Name:<input type="text" name="firstname"/><br><br/>
		Last Name:<input type="text" name="lastname"/><br><br/>
		Course:<input type="text" name="course"/><br><br/>
		Address:<input type="text" name="address"/><br><br/>
	<input type="submit" value="register"/>"

</form>
</body>
</html>

register.jsp
    <%@page import="bean.StudentDao"%>


    <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <!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=UTF-8">
    <title>Insert title here</title>
    </head>

    <body>



    <jsp:useBean id="obj" class="bean.Student">
    </jsp:useBean>
    <jsp:setProperty property="*" name="obj"/>

    <%
    StudentDao.saveUser(obj);
    out.print("You are successfully registered");
    %>
    </body>
    </html>

Banco dbtutorialsdesk
DROP DATABASE dbtutorialsdesk;
CREATE DATABASE dbtutorialsdesk;
USE dbtutorialsdesk;

CREATE TABLE STUDENT(
id INT( 20 ) AUTO_INCREMENT,
rollno VARCHAR(255),
firstname VARCHAR(255),
lastname VARCHAR(255),
course VARCHAR(255),
address VARCHAR(255),
PRIMARY KEY (id)
);

DROP TABLE STUDENT;

SELECT * FROM STUDENT;

Erro:
Type Exception Report

Message An exception occurred processing [register.jsp] at line [22]

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

org.apache.jasper.JasperException: An exception occurred processing [register.jsp] at line [22]

19: <jsp:setProperty property="*" name="obj"/>
20: 
21: <%
22: StudentDao.saveUser(obj);
23: out.print("You are successfully registered");
24: %>
25: </body>


Stacktrace:
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:593)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:467)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Root Cause

javax.servlet.ServletException: java.lang.NoClassDefFoundError: Could not initialize class hibernate.HibernateUtil
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:667)
	org.apache.jsp.register_jsp._jspService(register_jsp.java:163)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:444)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Root Cause

java.lang.NoClassDefFoundError: Could not initialize class hibernate.HibernateUtil
	bean.StudentDao.saveUser(StudentDao.java:12)
	org.apache.jsp.register_jsp._jspService(register_jsp.java:145)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:444)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Note The full stack trace of the root cause is available in the server logs.

Apache Tomcat/9.0.6

Se você olhar a mensagem ela diz onda está o erro.

Tendo isso em mente olhe a linha 22 do arquivo “register.jsp”, o erro está nela até agora.

Tem muito tempo que não mecho no hibernate para web então não sei identificar o erro, mas existe algo que da para você fazer que vai ajudar melhor você identificar, que é comentar as linhas

e então ir tirando o comentário de linha por linha para achar a linha que está o erro, pois a minha opinião é que pode ser que o problema seja que ele não está criando o buildSessionFactory(); você pode tentar fazer o seguinte:

retirar apenas essa linha e colocar igual está abaixo.

HibernateUtil HU = new HibernateUtil();
Session session = HibernateUtil.buildSessionFactory()…openSession();

1 curtida

Tem muita coisa na vida que é possível, mas é terrivelmente errado fazer.
Uma destas é trabalhar com scriptlets (essa coisa horrível que você está tentando fazer).
Talvez você esteja seguindo algum tutorial, apostila, livro, sei lá. Mas, sério, não faça isso.
Crie uma servlet, coloque este código lá e deixe isso mais bonito, mais elegante.

1 curtida

É estou seguindo, sou novato.

Valeu pela dica

Obrigado, vou tentar

Tá.
Esse tutorial, apostila, etc, deve ter, mais adiante, isso.
Então, segue o tutorial, mas, revisa o que esta feito, para confirmar se está tudo ok.

Eu, vi que é lá na linha 22, mas vou descobrir ainda como arumar

A linha 22 indica a linha acima.
O que provavelmente ocorre é que você está invocando o método saveUser da classe StudentDao e este método não é estático.
Talvez você precise criar um objeto desta classe e invocar o método a partir do objeto criado.

1 curtida

Valeu tentar mais tarde em casa