1.创建数据库users 以及数据表 user(id[主键] username password)
2.创建Maven项目
①File->New->Project
②
③Next->Next->Finish
④找到pom.xml 添加以下依赖
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.6.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>5.6.0.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.26</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
</dependency>
⑤在webapp下的WEB-INF下找到web.xml 添加如下
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3.创建如下包
4.
5.
6.
7.出现如下弹窗 点击OK
8.配置hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!--初始化JDBC-->
<!--users 是数据库名-->
<property name="connection.url">jdbc:mysql://localhost:3306/users</property>
<property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<!--方言-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL8Dialect</property>
<!--c3p0连接池-->
<property name="hibernate.connection.provider_class">org.hibernate.c3p0.internal.C3P0ConnectionProvider</property>
<!--注册seesion-->
<property name="hibernate.current_session_context_class">thread</property>
<!--自动建表-->
<property name="hibernate.hbm2ddl.auto">update</property>
<!--显示SQL-->
<property name="hibernate.show_sql">true</property>
<!--格式化SQL文件-->
<property name="hibernate.format_sql">true</property>
</session-factory>
</hibernate-configuration>
9.连接数据库
10.Database :数据库名
点击Test Connection 显示如下 连接成功
11.右键untitled Generate Persistences Mapping->By DataBase Schema
生成
此时hibernate.cfg.xml会生成
<mapping class="com.sdau.bean.User"/> <mapping resource="User.hbm.xml"/>
修改User里面id的类型为Integar;
private Integer id;@Id @Column(name = "id") public Integer getId() { return id; } public void setId(Integer id) { this.id = id; }
修改User.hbm.xml中的id
<id name="id" column="id"> <generator class="native"></generator> </id>
12.创建HibernateUtil类
package com.sdau.wzd.util;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.query.NativeQuery;
import java.util.List;
public class HibernateUtil {
private static Session getSession(){
Configuration configuration = new Configuration().configure();
SessionFactory sessionFactory = configuration.buildSessionFactory();
Session session = sessionFactory.getCurrentSession();
return session;
}
public static <T> List<T> getObjectList(Class<T> clazz, String sql, Object... obj){
Session session = getSession();
try{
session.beginTransaction();
@SuppressWarnings({"rawtypes"})
NativeQuery query = session.createSQLQuery(sql);
for(int i=0;i<obj.length;i++){
query.setParameter(i+1,obj[i]);
}
@SuppressWarnings({"unchecked"})
List<T> list = query.addEntity(clazz).list();
session.getTransaction().commit();
return list;
}catch (Exception e){
e.printStackTrace();
session.getTransaction().rollback();
}
return null;
}
/**
*增删改
**/
public static <T> void update(T t,String flag){
Session session = getSession();
try {
session.beginTransaction();
if("insert".equals(flag)){
session.save(t);
}else if ("update".equals(flag)){
session.update(t);
}else if("delete".equals(flag)){
session.delete(t);
}
session.getTransaction().commit();
}catch (Exception e){
e.printStackTrace();
session.getTransaction().rollback();
}
}
}
13.UserDao类
package com.sdau.dao;
import com.sdau.bean.User;
import com.sdau.util.HibernateUtil;
import java.util.List;
public class UserDao {
/**登录验证**/
public List<User> login(User user){
String sql = "select * from user where username=? and password=?";
return HibernateUtil.getObjectList(User.class,sql,user.getUsername(),user.getPassword());
}
/**增改**/
public void addUser(User user){
if(user.getId()!=null){
HibernateUtil.update(user,"update");
}else{
HibernateUtil.update(user,"insert");
}
}
/**删**/
public void deleteUser(User user){
HibernateUtil.update(user,"delete");
}
/**查**/
public List<User> selectAll(){
String sql = "select * from user";
return HibernateUtil.getObjectList(User.class,sql);
}
}
14.UserAction类
注意get set方法 以及无参构造函数
package com.sdau.action;
import com.opensymphony.xwork2.ActionSupport;
import com.sdau.bean.User;
import com.sdau.dao.UserDao;
import java.util.List;
public class UserAction extends ActionSupport{
private User user;
private List<User> list;
private UserDao userDao = new UserDao();
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public List<User> getList() {
return list;
}
public void setList(List<User> list) {
this.list = list;
}
public UserDao getUserDao() {
return userDao;
}
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public UserAction() {
}
public String login(){
List list = userDao.login(user);
if(!list.isEmpty()){
return "success";
}else{
return "error";
}
}
public String save(){
userDao.addUser(user);
return "success";
}
public String show(){
list = userDao.selectAll();
return "success";
}
public String delete(){
userDao.deleteUser(user);
return "success";
}
}
15.创建struts.xml
命名不要错,因为默认找struts.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default">
<!--登录-->
<action name="login" class="com.sdau.action.UserAction" method="login">
<result type="redirectAction" name="success">show</result>
<result name="error">error.jsp</result>
</action>
<!--增-->
<action name="add" class="com.sdau.action.UserAction" method="save">
<result type="chain" name="success">show</result>
</action>
<!--删-->
<action name="delete" class="com.sdau.action.UserAction" method="delete">
<result type="redirectAction" name="success">show</result>
</action>
<!--改-->
<action name="update" class="com.sdau.action.UserAction" method="save">
<result type="redirectAction" name="success">show</result>
</action>
<!--查-->
<action name="show" class="com.sdau.action.UserAction" method="show">
<result name="success">show.jsp</result>
</action>
</package>
</struts>
jsp页面
<!-- show.jsp-->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page isELIgnored="false" %>
<html>
<head>
<title>首页</title>
</head>
<link href="" rel="stylesheet" type="text/css">
<body>
<table border="1" align="center" >
<thead>
<tr>
<th>ID</th>
<th>姓名</th>
<th>密码</th>
<th colspan="2"><a href="update.jsp">添加</a></th>
</tr>
</thead>
<tbody>
<c:forEach items="${list}" var="u">
<tr>
<td>${u.id}</td>
<td>${u.username}</td>
<td>${u.password}</td>
<td><a href="update.jsp?user.id=${u.id}&&user.username=${u.username}&&
user.password=${u.password}">修改</a></td>
<td><a href="delete?user.id=${u.id}">删除</a></td>
</tr>
</c:forEach>
</tbody>
</table>
</body>
</html>
<!-- login.jsp-->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
<html>
<head>
<title>登录</title>
</head>
<link href="" type="text/css" rel="stylesheet">
<body>
<form action="login">
<table align="center">
<tr>
<td>用户名</td>
<td><input type="text" name="user.username"></td>
</tr>
<tr>
<td>密码</td>
<td><input type="text" name="user.password"><br></td>
</tr>
<tr>
<td><input type="submit" value="登录"></td>
<td><input type="reset" value="重置"></td>
</tr>
</table>
</form>
</body>
</html>
<!-- update.jsp-->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
<html>
<head>
<title>修改</title>
</head>
<link href="" type="text/css" rel="stylesheet">
<body>
<center>
<form action="update">
<input name="user.id" type="hidden" value="${param.id}">
用户名<input name="user.username" type="text" value="${param.username}">
密码<input name="user.password" type="text">
<input type="submit" value="确定">
</form>
</center>
</body>
</html>
<!--error.jsp-->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录失败</title>
</head>
<link rel="stylesheet" href="" type="text/css">
<body>
<h1><font color="red">用户名或密码错误,请重新登录</font></h1>
<a href="login.jsp">重新登录</a>
</body>
</html>
<!--delete.jsp-->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>删除</title>
</head>
<link href="" type="text/css" rel="stylesheet">
<body>
</body>
</html>