极简的图书管理系统,无任何样式修饰,适合新手练手(图文并释)
1、实现了用户注册、登录,图书的添加、修改、删除和修改操作
2、工具需要:eclipse、mysql、Tomcat
3、做系统之前在eclipse需要配置Tomcat服务器和导入mysql连接数据库的jar包
4、数据库中建一个user表存用户信息,一个book表存图书信息
一、各种页面
index.html文件,系统运行的首页,有登录、注册选项
图书系统首页
register.html文件,用户注册页面
注册
login.html文件,用户登录页面
登录
book.jsp文件,登录成功后的页面,显示用户名,有查询图书信息功能
<%@page import="(包名).User"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
图书系统
<%
User user=(User)request.getAttribute("user");//得到servlet传来的属性“user”
String username=user.getUsername();
%>
图书系统
用户名:<%=username %>
bookquery.jsp文件,显示所有图书信息,可删除对应图书、修改图书信息、以及添加图书
<%@ page import="java.util.ArrayList" %>
<%@ page import="(包名).Book" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
图书查询
<%
ArrayList booklist=(ArrayList)session.getAttribute("booklist");
%>
图书管理:
update.jsp文件,更新对应图书信息页面,有限制不能更新为已有图书名以及不为null或者不为空字符串等功能
<%@page import="(包名).Book"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%
Book book=(Book)session.getAttribute("book");
int id=book.getId();
String name=book.getName();
String author=book.getAuthor();
String press=book.getPress();
double price=book.getPrice();
%>
更改信息:
addbook.html文件,添加图书页面,在对应的servlet中有限制了不能添加已有图书、添加信息不为null以及不为空字符串等功能
添加图书页面
添加图书:
二、封装的数据库连接,以及数据库操作的工具类
Conn.java文件
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Conn {
private static String url="jdbc:mysql://localhost:3306/abc?serverTimezone=Asia/Shanghai";
private static String user="root";
private static String password="root";
static Connection conn=null;
static{//静态代码块,加载类的同时实现数据库的连接
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn=DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
PreparedStatement pstmt=null;
int num=0;
public int update(String sql,Object[] object){//增、删、改用的方法,返回一个整型数
try {
pstmt=conn.prepareStatement(sql);
for(int i=0;i
三、用于存储、传递信息的间接类
User.java文件
public class User {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
Book.java文件
public class Book {
private int id;
private String name;
private String author;
private String press;
private double price;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getPress() {
return press;
}
public void setPress(String press) {
this.press = press;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
四、用于实现功能的各种servlet
RegisterServlet.java文件,实现把用户注册信息存入数据库的功能
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.JOptionPane;
@WebServlet("/registerServlet")
public class RegisterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html,charset=utf-8");
String username=request.getParameter("username");
String password=request.getParameter("password");
String birthday=request.getParameter("birthday");
String gender=request.getParameter("gender");
if(username.equals("")||username.equals(null)||password.equals("")||password.equals(null)){
JOptionPane.showMessageDialog(null, "用户名或密码不能为空","标题【警告】" , JOptionPane.ERROR_MESSAGE);
response.sendRedirect("register.html");
return;
}
Conn db=new Conn();
String sql="select * from user where username=?";
Object[] o={username};
ResultSet rs=db.select(sql, o);
try {
if(rs.next()){
JOptionPane.showMessageDialog(null, "该用户已存在","标题【警告】" , JOptionPane.ERROR_MESSAGE);
response.sendRedirect("register.html");
}else{
String sql1="insert into user(USERNAME,PASSWORD,BIRTHDAY,GENDER) values(?,?,?,?)";
Object[] o2={username,password,birthday,gender};
db.update(sql1, o2);
JOptionPane.showMessageDialog(null, "注册成功,即将跳转到登录页面","标题【成功】" , JOptionPane.ERROR_MESSAGE);
response.sendRedirect("login.html");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
LoginServlet.java文件,实现匹配数据库信息,进行登录信息的判断等功能
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.JOptionPane;
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html,charset=utf-8");
String username=request.getParameter("username");
String password=request.getParameter("password");
if(username==null||username.equals("")||password==null||password.equals("")){
JOptionPane.showMessageDialog(null, "账号或密码有误","标题【出错啦】" , JOptionPane.ERROR_MESSAGE);
response.sendRedirect("login.html");
return;
}
Conn db=new Conn();
String sql="select * from user where USERNAME=? and PASSWORD=?";
Object[] o={username,password};
ResultSet rs=db.select(sql, o);
try {
if(rs.next()){
User user=new User();
user.setUsername(username);
user.setPassword(password);
request.setAttribute("user", user);
request.getRequestDispatcher("book.jsp").forward(request, response);
}else{
JOptionPane.showMessageDialog(null, "账号或密码错误","标题【出错啦】" , JOptionPane.ERROR_MESSAGE);
response.sendRedirect("login.html");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
BookServlet.java文件,实现查询出所有图书信息的功能
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/bookServlet")
public class BookServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html,charset=utf-8");
Conn db=new Conn();
String sql="select * from book";
Object[] o={};
ResultSet rs=db.select(sql, o);
ArrayList booklist=new ArrayList<>();
try {
while(rs.next()){
Book book=new Book();
book.setId(rs.getInt("ID"));
book.setName(rs.getString("NAME"));
book.setAuthor(rs.getString("AUTHOR"));
book.setPress(rs.getString("PRESS"));
book.setPrice(rs.getDouble("PRICE"));
booklist.add(book);
}
HttpSession session=request.getSession();
session.setAttribute("booklist", booklist);
request.getRequestDispatcher("bookquery.jsp").forward(request, response);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
AddbookServlet.java文件,实现添加图书功能
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.JOptionPane;
@WebServlet("/addbookServlet")
public class AddbookServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html,charset=utf-8");
String name=request.getParameter("name");
String author=request.getParameter("author");
String press=request.getParameter("press");
String price1=request.getParameter("price");
if(name.equals("")||name.equals(null)||author.equals("")||author.equals(null)||press.equals("")||press.equals(null)||price1.equals("")||price1.equals(null)){
JOptionPane.showMessageDialog(null, "输入的信息不能为空","标题【警告】" , JOptionPane.ERROR_MESSAGE);
response.sendRedirect("addbook.html");
return;
}
double price=Double.parseDouble(price1);//要通过上面的if语句确定price1不为空才能对其转型
Conn db=new Conn();
String sql="select NAME from book where NAME=?";
Object[] o={name};
ResultSet rs=db.select(sql, o);
try {
if(rs.next()){
JOptionPane.showMessageDialog(null, "该书本已存在","标题【警告】" , JOptionPane.ERROR_MESSAGE);
response.sendRedirect("addbook.html");
}else{
String sql1="insert into book(NAME,AUTHOR,PRESS,PRICE) values(?,?,?,?)";
Object[] o1={name,author,press,price};
int i=db.update(sql1, o1);
if(i>0){
JOptionPane.showMessageDialog(null, "添加成功","标题【成功】" , JOptionPane.ERROR_MESSAGE);
response.sendRedirect("addbook.html");
}else{
JOptionPane.showMessageDialog(null, "添加失败","标题【失败】" , JOptionPane.ERROR_MESSAGE);
response.sendRedirect("addbook.html");
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
DeleteServlet.java文件,实现删除指定图书的功能
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.JOptionPane;
@WebServlet("/deleteServlet")
public class DeleteServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html,charset=utf-8");
int id=Integer.parseInt(request.getParameter("id"));
Conn db=new Conn();
String sql="delete from book where ID=?";
Object[] o={id};
int i=db.update(sql, o);
if(i>0){
JOptionPane.showMessageDialog(null, "删除成功","标题【成功】" , JOptionPane.ERROR_MESSAGE);
//request.getRequestDispatcher("bookquery.jsp").forward(request, response);
response.sendRedirect("bookServlet");
}else{
JOptionPane.showMessageDialog(null, "删除失败","标题【失败】" , JOptionPane.ERROR_MESSAGE);
response.sendRedirect("bookServlet");
}
}
}
UpdateServlet.java文件,实现要修改的图书信息传给update.jsp,是为了在原来的基础上修改
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/updateServlet")
public class UpdateServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html,charset=utf-8");
int id=Integer.parseInt(request.getParameter("id"));
String name=request.getParameter("name");
String author=request.getParameter("author");
String press=request.getParameter("press");
double price=Double.parseDouble(request.getParameter("price"));
Book book=new Book();
book.setId(id);
book.setName(name);
book.setAuthor(author);
book.setPress(press);
book.setPrice(price);
HttpSession session=request.getSession();
session.setAttribute("book", book);
request.getRequestDispatcher("update.jsp").forward(request, response);
}
}
ConfirmUpdateServlet.java文件,实现图书的信息修改的功能
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.JOptionPane;
@WebServlet("/confirmUpdateServlet")
public class ConfirmUpdateServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html,charset=utf-8");
int id=Integer.parseInt(request.getParameter("id"));
String hiddenname=request.getParameter("hiddenname");
String name=request.getParameter("name");
String author=request.getParameter("author");
String press=request.getParameter("press");
double price=Double.parseDouble(request.getParameter("price"));
if(name==""||name==null){
JOptionPane.showMessageDialog(null, "修改后的书名不能为空,请重新修改","标题【警告】" , JOptionPane.ERROR_MESSAGE);
request.getRequestDispatcher("bookServlet").forward(request, response);
return;
}
Conn db=new Conn();
String sql="select NAME from book where NAME!=?";
Object[] o={hiddenname};
ResultSet rs=db.select(sql, o);
try {
int num=0;
while(rs.next()){
if(name.equals(rs.getString("NAME"))){
num=1;
}
}
if(num==1){
JOptionPane.showMessageDialog(null, "您修改后的书名已存在,请重新修改","标题【警告】" , JOptionPane.ERROR_MESSAGE);
request.getRequestDispatcher("bookServlet").forward(request, response);
}else{
String sql1="update book set NAME=?,AUTHOR=?,PRESS=?,PRICE=? where ID=?";
Object[] o1={name,author,press,price,id};
int i=db.update(sql1, o1);
if(i>0){
JOptionPane.showMessageDialog(null, "修改成功,即将跳转到图书查询页面","标题【成功】" , JOptionPane.ERROR_MESSAGE);
request.getRequestDispatcher("bookServlet").forward(request, response);
}else{
JOptionPane.showMessageDialog(null, "修改失败,请确认信息后重新修改","标题【失败】" , JOptionPane.ERROR_MESSAGE);
request.getRequestDispatcher("bookServlet").forward(request, response);
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}