这里是使用 Servlet JSP 和 Hibernate MySQL 创建、更新、删除和读取的代码。此代码在 Netbeans IDE和Tomcat中进行了测试。
1、在NetBeans IDE中创建Maven Web Application
项目结构:
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>JSPHibernate</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>JSPHibernate</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.2.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.common</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>4.0.1.Final</version>
<classifier>tests</classifier>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.0.1.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/jstl/jstl -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
<build>
<finalName>HibCrud</finalName>
</build>
</project>
EmployeeDetails.java
package com.example.pojo;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class EmployeeDetails implements Serializable {
@Id
@GeneratedValue
int id;
String ename;
String enumber;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getEname() {
return ename;
}
public void setEname(String ename) {
this.ename = ename;
}
public String getEnumber() {
return enumber;
}
public void setEnumber(String enumber) {
this.enumber = enumber;
}
}
EmployeeDao.java
package com.example.DAO;
import com.example.pojo.EmployeeDetails;
import java.util.List;
public interface EmployeeDao {
public void saveEmployee(EmployeeDetails employee);
public List<EmployeeDetails> showAllEmployees();
public void updateEmployee(int id, String ename, String enumber);
public void deleteEmployee(EmployeeDetails employee);
}
EmployeeDaoImpl.java
package com.example.DAOImpl;
import com.example.DAO.EmployeeDao;
import com.example.pojo.EmployeeDetails;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.Query;
public class EmployeeDaoImpl implements EmployeeDao {
@Override
public void saveEmployee(EmployeeDetails employee) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = session.beginTransaction();
session.save(employee);
transaction.commit();
session.close();
}
@Override
public List<EmployeeDetails> showAllEmployees() {
List<EmployeeDetails> employeeList = new ArrayList();
Session session = HibernateUtil.getSessionFactory().openSession();
Query query = session.createQuery("From EmployeeDetails");
employeeList = query.list();
return employeeList;
}
@Override
public void updateEmployee(int id, String ename, String enumber) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = session.beginTransaction();
EmployeeDetails empdetails = (EmployeeDetails) session.load(EmployeeDetails.class, id);
empdetails.setEname(ename);
empdetails.setEnumber(enumber);
session.update(empdetails);
transaction.commit();
session.close();
}
@Override
public void deleteEmployee(EmployeeDetails employee) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = session.beginTransaction();
session.delete(employee);
transaction.commit();
session.close();
}
}
HibernateUtil.java
package com.example.DAOImpl;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.SessionFactory;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
// Create the SessionFactory from standard (hibernate.cfg.xml)
// config file.
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
} catch (Throwable ex) {
// Log the exception.
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/jwt?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping class="com.example.pojo.EmployeeDetails"></mapping>
</session-factory>
</hibernate-configuration>
EmployeeAdd.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Employee</title>
</head>
<body>
<div id="add">
<h1> Add Employee </h1>
<form action="EmployeeController" method="GET">
<table>
<tr>
<td> Employee Name: </td>
<td><input type="text" name="ename"></td>
</tr>
<tr>
<td> Employee Number: </td>
<td><input type="text" name="enumber"></td>
</tr>
<tr>
<td><input type="submit" name="addEmployee" value="Add"></td>
</tr>
</table>
</form>
</div>
<form action="EmployeeController" method="POST">
<input type="submit" name="showEmployee" value="Show"> <br>
</form>
</body>
</html>
ShowAll.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
<script src="jquery.min.js"></script>
<script>
$(document).ready(function () {
$("#deleteEmployee").hide();
$("#updateEmployee").hide();
$("#update").click(function () {
$("#updateEmployee").show();
$("#deleteEmployee").hide();
});
$("#delete").click(function () {
$("#deleteEmployee").show();
$("#updateEmployee").hide();
});
});
</script>
</head>
<body>
All Employees: <br>
<c:forEach var="emp" items="${employeeList}">
Employee ID: ${emp.id} <br>
Employee Name: ${emp.ename} <br>
Employee Number: ${emp.enumber}<br>
-------------------------------------<br>
</c:forEach>
<form action="EmployeeController" method="POST">
Update: <input type="checkbox" id="update"> Delete: <input type="checkbox" id="delete" onclick="document.getElementById('ename').disabled = this.checked;
document.getElementById('enumberupdate').disabled = this.checked;"><br><br>
<select name="id">
<c:forEach items="${employeeList}" var="employee">
<option value="${employee.id}">${employee.id}</option>
</c:forEach>
</select>
<br>
Update Name: <input id="ename" type="text" name="ename"><br>
Update Number: <input id="enumberupdate" type="text" name="enumberupdate"> <br><br>
<button type="submit" id="updateEmployee" name="updateEmployee"> Update</button> <br> <br>
<button type="submit" id="deleteEmployee" name="deleteEmployee"> Delete </button>
</form>
</body>
</html>
EmployeeController.java
package com.example.Controller;
import com.example.DAO.EmployeeDao;
import com.example.DAOImpl.EmployeeDaoImpl;
import com.example.pojo.EmployeeDetails;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class EmployeeController extends HttpServlet {
EmployeeDetails employee = new EmployeeDetails();
EmployeeDaoImpl employeeDaoImpl = new EmployeeDaoImpl();
EmployeeDao edao;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
if (request.getParameter("addEmployee") != null) {
String ename = request.getParameter("ename");
String enumber = request.getParameter("enumber");
employee.setEname(ename);
employee.setEnumber(enumber);
employeeDaoImpl.saveEmployee(employee);
RequestDispatcher rd = request.getRequestDispatcher("EmployeeAdd.jsp");
rd.forward(request, response);
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
if (request.getParameter("showEmployee") != null) {
List<EmployeeDetails> employeeList = new ArrayList();
employeeList = employeeDaoImpl.showAllEmployees();
request.setAttribute("employeeList", employeeList);
RequestDispatcher rd = request.getRequestDispatcher("ShowAll.jsp");
rd.forward(request, response);
}
if (request.getParameter("updateEmployee") != null) {
int id1 = Integer.parseInt(request.getParameter("id"));
String ename = request.getParameter("ename");
String enumberupdate = request.getParameter("enumberupdate");
employeeDaoImpl.updateEmployee(id1, ename, enumberupdate);
RequestDispatcher rd = request.getRequestDispatcher("EmployeeAdd.jsp");
rd.forward(request, response);
}
if (request.getParameter("deleteEmployee") != null) {
int id2 = Integer.parseInt(request.getParameter("id"));
employee.setId(id2);
employeeDaoImpl.deleteEmployee(employee);
RequestDispatcher rd = request.getRequestDispatcher("EmployeeAdd.jsp");
rd.forward(request, response);
}
}
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<servlet>
<servlet-name>EmployeeController</servlet-name>
<servlet-class>com.example.Controller.EmployeeController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>EmployeeController</servlet-name>
<url-pattern>/EmployeeController</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>EmployeeAdd.jsp</welcome-file>
</welcome-file-list>
</web-app>
输出: 添加 后、更新 后、删除后单击显示,