1.创建数据库
首先创建好mysql数据库school,在数据库school中创建t_book表
use school;
DROP TABLE IF EXISTS `t_book`;
CREATE TABLE `t_book` (
`bookid` int(11) NOT NULL AUTO_INCREMENT,
`bookname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`bookprice` decimal(10, 2) NULL DEFAULT NULL,
PRIMARY KEY (`bookid`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 15 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
2.在idea中创建一个web项目,并配置好struts框架
配置框架操作:配置Struts框架
3.在配置好框架的项目中创建对应的文件
3.1 创建JDBCutil.java文件用于连接数据库
package stu.lwhao.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* @author : Luowenhao221
* @date : 2024/5/7 下午7:28
* @Project : JavaEE_Project_struts2
*/
public class JDBCUtil {
private static final String DB_URL = "jdbc:mysql://localhost:3306/school";
private static final String DB_USER = "自己用户名";
private static final String DB_PASSWORD = "自己密码";
public static Connection getConnection() {
Connection connection = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
connection = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
return connection;
}
public static void closeConnection(Connection connection) {
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
3.2在bean软件包中创建Book.java
package stu.lwhao.bean;
/**
* @author : Luowenhao221
* @date : 2024/5/7 下午5:38
* @Project : JavaEE_Project_strtus2
*/
import com.opensymphony.xwork2.ActionSupport;
public class Book extends ActionSupport {
private Integer bookid;
private String bookname;
private double bookprice;
public Integer getBookid() {
return bookid;
}
public void setBookid(Integer bookid) {
this.bookid = bookid;
}
public String getBookname() {
return bookname;
}
public void setBookname(String bookname) {
this.bookname = bookname;
}
public double getBookprice() {
return bookprice;
}
public void setBookprice(double bookprice) {
this.bookprice = bookprice;
}
}
3.3 在Action软件包中创建BookSerchAction.java 用于图书查询的操作
package stu.lwhao.action;
import stu.lwhao.bean.Book;
import stu.lwhao.util.JDBCUtil;
import com.opensymphony.xwork2.ActionSupport;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
/**
* @author : Luowenhao221
* @date : 2024/5/7 下午7:35
* @Project : JavaEE_Project_struts2
*/
/**
* action类,用于处理图书搜索请求
*/
public class BookSearchAction extends ActionSupport {
private String searchQuery;// 搜索关键字
private List<Book> books;// 查询到的图书列表
public String execute() {
books = new ArrayList<>();
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet = null;
// 通过JDBC连接数据库,查询图书信息
try {
connection = JDBCUtil.getConnection();
String sql = "SELECT * FROM t_book WHERE bookname LIKE ?";// 模糊查询
statement = connection.prepareStatement(sql);
statement.setString(1, "%" + searchQuery + "%");
resultSet = statement.executeQuery();
while (resultSet.next()) {
Book book = new Book();
book.setBookid(resultSet.getInt("bookid"));
book.setBookname(resultSet.getString("bookname"));
book.setBookprice(resultSet.getDouble("bookprice"));
books.add(book);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JDBCUtil.closeConnection(connection);
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return SUCCESS;// 返回成功
}
public String getSearchQuery() {
return searchQuery;// 获取搜索关键字
}
public void setSearchQuery(String searchQuery) {
this.searchQuery = searchQuery;// 设置搜索关键字
}
public List<Book> getBooks() {
return books;// 获取查询到的图书列表
}
}
3.4 在Action软件包中创建BookDeleteActon.java 用于删除图书操作
package stu.lwhao.action;
import com.opensymphony.xwork2.ActionSupport;
import stu.lwhao.bean.Book;
import stu.lwhao.util.JDBCUtil;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
/**
* @author : Luowenhao221
* @date : 2024/5/7 下午8:13
* @Project : JavaEE_Project_struts2
*/
/**
* action类,用于处理图书删除请求
*/
public class BookDeleteAction extends ActionSupport{
private Integer bookid;// 要删除的图书id
private List<Book> books;// 查询到的图书列表
public String execute() {
books = new ArrayList<>();
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet = null;
// 通过JDBC连接数据库,查询图书信息
try {
connection = JDBCUtil.getConnection();
String sql = "DELETE FROM t_book WHERE bookid = ?";// 删除图书
statement = connection.prepareStatement(sql);
statement.setInt(1, bookid);
statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
return SUCCESS;
}
public Integer getBookid() {
return bookid;
}
public void setBookid(Integer bookid) {
this.bookid = bookid;
}
public List<Book> getBooks() {
return books;
}
public void setBooks(List<Book> books) {
this.books = books;
}
}
此时基本的查询和删除操作的Java类已经完成
只需下一步的jsp页面实现和配置即可
4.配置action
在struts.xml中配置操作的对应action
<?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="book" extends="struts-default">
<action name="bookSearch" class="stu.lwhao.action.BookSearchAction">
<result name="success">/bookSearchResults.jsp</result>
</action>
<action name="bookDelete" class="stu.lwhao.action.BookDeleteAction">
<result name="success" type="redirect">/bookSearchResults.jsp</result>
</action>
</package>
</struts>
5. Jsp页面实现
在webapp目录下创建jsp文件 bookSearchResults.jsp
用于实现web前端的查询和删除
<%--
Created by IntelliJ IDEA.
Author : luowenhao221
Date: 2024/5/7
Time: 下午5:40
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<title>图书查询结果</title>
<meta charset="UTF-8">
</head>
<body>
<h1>图书查询结果</h1>
<!-- 查询表单和按钮 -->
<s:form action="bookSearch">
<s:textfield name="searchQuery" label="搜索图书" />
<s:submit value="查询" />
</s:form>
<s:if test="books.size() > 0">
<table>
<tr>
<th>ID</th>
<th>书名</th>
<th>价格</th>
<th>操作</th>
</tr>
<s:iterator value="books">
<tr>
<td><s:property value="bookid"/></td>
<td><s:property value="bookname"/></td>
<td><s:property value="bookprice"/></td>
<td>
<%-- 删除--%>
<s:url var="deleteURL" action="bookDelete">
<s:param name="bookid" value="%{bookid}"/>
</s:url>
<s:a href="%{deleteURL}">删除</s:a>
</td>
</tr>
</s:iterator>
</table>
</s:if>
<s:else>
<p>没有查询结果</p>
</s:else>
</body>
</html>
此时已经该实验已经完成 ,只需在tomcat中部署运行
注意运行后需在url栏中加入 /bookSearch即可转到页面