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

