功能介绍:
添加图书、查询图书、修改图书、删除图书、查看该书信息、模糊搜索
在WEB-INF文件夹下创建lib文件夹将jar包放进来
整体架构图:
配置数据库信息
创建Druid类
package com.book.util;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class Druid {
//数据库连接池--Druid德鲁伊,据说是魔兽世界中的一个角色,森林女神
public static DruidDataSource dataSource;
//0.初始化Druid连接池
static {
//第二种方式:使用软编码通过配置文件初始化
try {
//创建properties配置文件对象
Properties properties = new Properties();
//通过类加载器加载配置文件
InputStream inputStream = Druid.class.getClassLoader().getResourceAsStream("druid.properties");
properties.load(inputStream);//加载流对象
//创建连接池
dataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
//1. 获取连接池
public static DataSource getDataSource() {
return dataSource;
}
//2.获取连接
public static Connection getConnection() {
try {
return dataSource.getConnection();//从连接池中获取连接
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
//3.释放资源
public static void closeAll(Connection connection, Statement statement, ResultSet resultSet) {
//释放resultSet
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
//释放Statement
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
//释放Connection
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
以上是数据库配置
接下来创建页面
创建login.jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录界面</title>
</head>
<body>
<form action="BookController?method=login" method="post">
<input type="text" name="username" placeholder="请输入用户名">
<br>
<input type="password" name="password" placeholder="请输入密码">
<br>
<input type="submit" name="btn">
</form>
</body>
</html>
登录成功之后让进入 index.jsp
创建index.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>图书列表</title>
</head>
<body>
<h1>图书列表</h1>
<form action="BookController?method=like_book" method="post">
<span>书名:</span>
<input type="text" name="search">
<input type="submit" value="搜索">
</form>
<a href="add.jsp"><button type="button">新增</button></a>
<a href="BookController?method=del_book"><button type="button">删除</button></a>
<table border="1">
<tr>
<%-- <td><input type="checkbox" name=""></td>--%>
<td>图书编号</td>
<td>书名</td>
<td>作者</td>
<td>库存</td>
<td>操作</td>
</tr>
<c:forEach items="${book_list}" var="list">
<tr>
<%-- <td><a href="BookController?method=del_book&BID=${list.BID}"><input type="checkbox" name=""></a></td>--%>
<td>${list.BID}</td>
<td><a href="BookController?method=book_infor&BOOKNAME=${list.BOOKNAME}">${list.BOOKNAME}</a></td>
<td>${list.AUTHOR}</td>
<td>${list.AMOUNT}</td>
<td><a href="BookController?method=del_book&BID=${list.BID}" onclick="return confirm('确定删除该信息吗?')">删除</a></td>
</tr>
</c:forEach>
<tr>
<td>总数量:</td>
</tr>
</table>
</body>
</html>
这里的登录成功 我是利用转发 进入的index.jsp
创建登录成功success.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
<meta http-equiv="refresh" content="0.1;url=BookController?method=book_list">
</head>
<body>
</body>
</html>
添加页面 add.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>新增图书信息</h1>
<form action="BookController?method=add_book" method="post">
<table>
<tr>
<td>书名</td>
<td><input type="text" name="BOOKNAME"></td>
</tr>
<tr>
<td>单价</td>
<td><input type="text" name="PRICE"></td>
</tr>
<tr>
<td>作者</td>
<td><input type="text" name="AUTHOR"></td>
</tr>
<tr>
<td>出版日期</td>
<td><input type="date" name="PUBDATE"></td>
</tr>
<tr>
<td>出版社</td>
<td><input type="text" name="PRESS"></td>
</tr>
<tr>
<td>采购数量</td>
<td><input type="text" name="AMOUNT"></td>
</tr>
<tr>
<td><input type="reset" name="reset"></td>
<td><input type="submit" name="btn"></td>
</tr>
</table>
</form>
</body>
</html>
点击书名实现 查看该书信息功能
创建book_infor.jsp页面
<%@ page import="com.book.entity.Book" %>
<%@ page import="java.util.List" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>图书详细信息</h1>
<%-- <%--%>
<%-- List<Book> list = (List<Book>) session.getAttribute("book_infor");--%>
<%-- System.out.println(list);--%>
<%-- %>--%>
<table border="1">
<c:forEach items="${book_infor}" var="book_infor">
<tr>
<td>图书编号</td>
<td>${book_infor.BID}</td>
</tr>
<tr>
<td>书名</td>
<td>${book_infor.BOOKNAME}</td>
</tr>
<tr>
<td>单价</td>
<td>${book_infor.PRICE}</td>
</tr>
<tr>
<td>作者</td>
<td>${book_infor.AUTHOR}</td>
</tr>
<tr>
<td>出版日期</td>
<td>${book_infor.PUBDATE}</td>
</tr>
<tr>
<td>出版社</td>
<td>${book_infor.PRESS}</td>
</tr>
<tr>
<td>现存数量</td>
<td>${book_infor.AMOUNT}</td>
</tr>
<tr>
<td>
<a href="BookController?method=query&BID=${book_infor.BID}">
<button type="button" value="">修改</button>
</c:forEach>
</a>
<input type="reset">
</td>
</tr>
</table>
</body>
</html>
点击修改按钮获取该书id 对该信息进行查询
创建query.jsp页面
<%@ page import="com.book.entity.Book" %>
<%@ page import="java.util.List" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>图书修改页面</h1>
<form action="BookController?method=modify" method="post">
<table border="1">
<c:forEach items="${query}" var="query">
<tr>
<td>图书编号</td>
<td><input type="text" value="${query.BID}" name="BID"></td>
</tr>
<tr>
<td>书名</td>
<td><input type="text" value="${query.BOOKNAME}" name="BOOKNAME"></td>
</tr>
<tr>
<td>单价</td>
<td><input type="text" value="${query.PRICE}" name="PRICE"></td>
</tr>
<tr>
<td>作者</td>
<td><input type="text" value="${query.AUTHOR}" name="AUTHOR"></td>
</tr>
<tr>
<td>出版日期</td>
<td><input type="text" value="${query.PUBDATE}" name="PUBDATE"></td>
</tr>
<tr>
<td>出版社</td>
<td><input type="text" value="${query.PRESS}" name="PRESS"></td>
</tr>
<tr>
<td>现存数量</td>
<td><input type="text" value="${query.AMOUNT}" name="AMOUNT"></td>
</tr>
</c:forEach>
<tr>
<td>
<input type="submit" value="修改">
<input type="reset">
</td>
</tr>
</table>
</form>
</body>
</html>
进行预览测试: