数据库系统实现课程设计:图书管理系统

2023-10-27

项目简介

围绕中小学(注:无图书馆)图书管理需求(如采购入库、图书编码、借书还书、图书出库),设计合理的系统功能模块和数据库结构,构建一个较为实用的图书管理系统。
任务要求:按照软件工程理论,依次完成分析、设计、实现、测试各步骤,有较好的用户界面,考虑相关数据的安全和隐私性,所有数据通过用户界面输入输出。
该项目采用三层B/S架构,数据层,表示层,控制层。

开发环境

NetBeans8.2(如果要直接使用提供的代码最好用该开发工具,该工具Servlet的方法是自动生成,与目前主流的IDE有所不同)
JDK1.8
数据库为Oracle 11g 简化版
表示层使用前端框架Pintuer。具体情况请参阅官网资料:www.pintuer.com
在该系统中使用的是1.0版本。下载后在web文件夹里面建立两个文件夹,css文件夹和js文件夹。将下载后的pintuer框架文件夹解压,将里面的js文件放到js文件夹,css文件放到css文件夹。
具体如下:
在这里插入图片描述
同时还需要如下架包:
jstl.jar
ojdbc6.jar
standard.jar
这些文件的下载请自行下载。这里不提供。
将这个三个架包放到WEB-INF的lib文件夹。lib文件夹请自己建立。具体如上图所示。
同时这些文件还要导入到库文件夹下面
具体如下图:
在这里插入图片描述
所需的tomcat服务器请自行到tomcat官网下载,请使用8.5以上版本,使用7.0版本会有中文乱码,本系统没有做这方面的处理。
项目结构如下:
在这里插入图片描述

数据层

数据层主要负责对数据库表的各种增删改查。采用DAO模式,将对数据库的操作封装在一个接口里,一个类来实现。
数据库表的设计如下:
三个表:图书表,用户表,用户借书表

create table Book      /*图书表*/
(
Bno varchar2(15) primary key,      /*书的编号*/
Bname varchar2(30),                /*书名*/
Bauthor varchar2(24),              /*书的作者*/
Bnum int check(Bnum>=0)            /*书的数量*/
)
create table BookUser  /*用户表*/
(
 username varchar2(12) primary key, /*用户名*/
 passwords varchar2(12) not null,    /*密码*/
 permission int not null             /*权限*1:管理员  2:普通用户/
)
create table UB       /*用户借书信息表*/
(
username varchar2(12),  /*用户名*/
Bno varchar2(15),       /*书的编号*/
Bname varchar2(30),     /*书名*/
LendTime date,          /*借书时间*/
primary key(username,Bno),
foreign key(username) references BookUser(username) on delete cascade,
foreign key(Bno) references Book(Bno) on delete cascade
)

数据层的java类如下图所示:在这里插入图片描述
数据层代码如下:

package com.book.dao;
import com.book.model.Book;
import com.book.model.BookUser;
import com.book.model.UB;
import com.book.until.Pagination;
import java.util.List;
public interface ISBookDao {
    /*图书*/
    public List<Book> getAllBook();

    public List<Book> getAllBooks(Pagination pagination);

    public List<Book> getAllBooks(String bno, Pagination pagination);

    public Book getBook(String bno);

    public boolean findBook(String bno);

    public boolean insertBook(Book book);

    public boolean updateBook(Book book);

    public boolean lendBook(String bno);

    public boolean returnBook(String bno);

    public boolean deleteBook(String bno);

    /*用户*/
    public List<BookUser> getAllBookUser();

    public List<BookUser> getAllBookUsers(Pagination pagination);

    public List<BookUser> getAllBookUser(String username, Pagination pagination);

    public BookUser getBookUser(String username);

    public boolean updateBookUser(BookUser bookuser);

    public boolean deleteBookUser(String username);

    public boolean findBookUser(BookUser bookuser);

    public boolean insertBookUser(BookUser bookuser);

    public boolean isAdmin(BookUser bookuser);

    public boolean findBookUser(String userame);

    /*用户借书*/
    public List<UB> getAllUB();

    public List<UB> getAllUBs(Pagination pagination);

    public List<UB> getAllUB(String username, Pagination pagination);

    public UB getUB(String username);

    public boolean updateUB(UB ub);

    public boolean deleteUB(String username, String bno);

    public boolean findUB(UB ub);

    public boolean insertUB(UB ub);

    public boolean isLend(String bno);

    public boolean isLends(String bno, String username);
}


package com.book.impl;
import com.book.dao.ISBookDao;
import com.book.model.Book;
import com.book.model.BookUser;
import com.book.model.UB;
import com.book.until.DatabaseBean;
import com.book.until.Pagination;
import java.awt.Image;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;

public class BookDaoImpl implements ISBookDao {

    Connection conn = null;
    Statement stmt = null;
    PreparedStatement psmt = null;
    ResultSet rs = null;

    public List<Book> getAllBook() {   //查询所有图书信息
        List<Book> books = new ArrayList<Book>();
        try {
            conn = DatabaseBean.getConnection();
            stmt = conn.createStatement();
            rs = stmt.executeQuery("select * from Book");
            while (rs.next()) {
                Book book = new Book();
                book.setBno(rs.getString("bno"));
                book.setBname(rs.getString("bname"));
                book.setBauthor(rs.getString("bauthor"));
                book.setBnum(rs.getInt("bnum"));
                books.add(book);
            }
        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, stmt, conn);
        }
        return books;

    }

    public Book getBook(String bno) {//根据书号查询图书信息
        Book book = new Book();
        try {
            conn = DatabaseBean.getConnection();
            psmt = conn.prepareStatement("select * from Book where bno=?");
            psmt.setString(1, bno);
            rs = psmt.executeQuery();
            while (rs.next()) {
                book.setBno(rs.getString("bno"));
                book.setBname(rs.getString("bname"));
                book.setBauthor(rs.getString("bauthor"));
                book.setBnum(rs.getInt("bnum"));
            }

        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return book;

    }

    public boolean findBook(String bno) {//根据书号查询图书是否存在   存在返回true,不存在返回false 

        try {
            conn = DatabaseBean.getConnection();
            psmt = conn.prepareStatement("select bno from Book where bno=?");
            psmt.setString(1, bno);
            rs = psmt.executeQuery();
            if (rs.next()) {
                return true;
            }
        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return false;
    }

    public boolean insertBook(Book book) {//插入图书信息  插入成功返回true,失败返回false
        String sql = "insert into Book(Bno,Bname,Bauthor,Bnum) values(?,?,?,?)";
        try {
            conn = DatabaseBean.getConnection();
            psmt = conn.prepareStatement(sql);
            psmt.setString(1, book.getBno());
            psmt.setString(2, book.getBname());
            psmt.setString(3, book.getBauthor());
            psmt.setInt(4, book.getBnum());
            psmt.executeUpdate();
            return true;
        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return false;

    }

    public boolean updateBook(Book book) {//修改图书信息 修改成功返回true,失败返回false
        String sql = "update Book set bname=?,bauthor=?,bnum=? where bno=?";
        try {
            conn = DatabaseBean.getConnection();
            psmt = conn.prepareStatement(sql);
            psmt.setString(1, book.getBname());
            psmt.setString(2, book.getBauthor());
            psmt.setInt(3, book.getBnum());
            psmt.setString(4, book.getBno());
            psmt.executeUpdate();
            return true;
        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return false;
    }

    public boolean isLend(String bno) {//检测图书是否可借   true:可借   false:不可借
        int number = 0;
        try {
            conn = DatabaseBean.getConnection();
            psmt = conn.prepareStatement("select bnum from Book where bno=?");
            psmt.setString(1, bno);
            rs = psmt.executeQuery();
            while (rs.next()) {
                number = rs.getInt("bnum");
            }
            if (number > 0) {
                return true;
            }
        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return false;
    }

    public boolean lendBook(String bno) {//借书,借书成功返回true,失败返回false
        int number = 0;
        try {
            conn = DatabaseBean.getConnection();
            psmt = conn.prepareStatement("select bnum from Book where bno=?");
            psmt.setString(1, bno);
            rs = psmt.executeQuery();
            while (rs.next()) {
                number = rs.getInt("bnum");
                number = number - 1;
            }
            psmt = conn.prepareStatement("update book set bnum=? where bno=?");
            psmt.setInt(1, number);
            psmt.setString(2, bno);
            psmt.executeUpdate();
            return true;
        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return false;
    }

    public boolean returnBook(String bno) {//还书,,还书成功返回true,失败返回false
        int number = 0;
        try {
            conn = DatabaseBean.getConnection();
            psmt = conn.prepareStatement("select bnum from Book where bno=?");
            psmt.setString(1, bno);
            rs = psmt.executeQuery();
            while (rs.next()) {
                number = rs.getInt("bnum");
                number += 1;
            }
            psmt = conn.prepareStatement("update book set bnum=? where bno=?");
            psmt.setInt(1, number);
            psmt.setString(2, bno);
            psmt.executeUpdate();
            return true;
        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return false;
    }

    public boolean deleteBook(String bno) {//删除图书 删除成功返回true,失败返回false
        try {
            String sql = "delete from book where bno=? ";
            conn = DatabaseBean.getConnection();
            psmt = conn.prepareStatement(sql);
            psmt.setString(1, bno);
            psmt.executeUpdate();
            return true;
        } catch (SQLException ex) {
            ex.printStackTrace();
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return false;
    }

    public List<Book> getAllBooks(Pagination pagination) {//分页显示图书信息
        List<Book> books = new ArrayList<Book>();
        try {
            conn = DatabaseBean.getConnection();
            String sql = "select count(*) as counts from Book";
            psmt = conn.prepareStatement(sql);
            rs = psmt.executeQuery();
            rs.next();
            pagination.setCountSize(rs.getInt("counts"));
            //求指定显示的记录数
            int start = (pagination.getCurrPage() - 1) * pagination.getPageSize() + 1;
            int end = pagination.getCurrPage() * pagination.getPageSize();
            //小于等于该页最大条数,大于等于该页最小条数
            sql = "SELECT * FROM(SELECT ROWNUM NO,s.* FROM "
                    + "(SELECT * FROM book ORDER BY bno ASC) s "
                    + "WHERE ROWNUM<=?) WHERE NO >=?";
            psmt = conn.prepareStatement(sql);
            psmt.setInt(1, end);
            psmt.setInt(2, start);
            rs = psmt.executeQuery();
            while (rs.next()) {
                Book book = new Book();
                book.setBno(rs.getString("bno"));
                book.setBname(rs.getString("bname"));
                book.setBauthor(rs.getString("bauthor"));
                book.setBnum(rs.getInt("bnum"));
                books.add(book);

            }

        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return books;
    }

    public List<Book> getAllBooks(String bno, Pagination pagination) {//模糊查询显示图书信息
        List<Book> books = new ArrayList<Book>();
        try {
            conn = DatabaseBean.getConnection();
            psmt = conn.prepareStatement("select count(*) as counts from book where bno like ?");
            psmt.setString(1, "%" + bno + "%");
            rs = psmt.executeQuery();
            rs.next();
            pagination.setCountSize(rs.getInt("counts"));
            int start = (pagination.getCurrPage() - 1) * pagination.getPageSize() + 1;
            int end = pagination.getCurrPage() * pagination.getPageSize();
            psmt = conn.prepareStatement("SELECT * FROM(SELECT ROWNUM NO,s.* FROM "
                    + "(SELECT * FROM book where bno like ? ORDER BY bno ASC) s "
                    + "WHERE ROWNUM<=?) WHERE NO >=?");
            psmt.setString(1, "%" + bno + "%");
            psmt.setInt(2, end);
            psmt.setInt(3, start);
            rs = psmt.executeQuery();
            while (rs.next()) {
                Book book = new Book();
                book.setBno(rs.getString("bno"));
                book.setBname(rs.getString("bname"));
                book.setBauthor(rs.getString("bauthor"));
                book.setBnum(rs.getInt("bnm"));
                books.add(book);
            }
        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return books;
    }

    @Override
    public boolean findBookUser(BookUser bookuser) {//检测用户是否已经注册,输入的登录信息是否正确
        try {
            conn = DatabaseBean.getConnection();
            psmt = conn.prepareStatement("select passwords from bookUser where username=? ");//检查数据库中是否存在该用户
            psmt.setString(1, bookuser.getUsername());
            rs = psmt.executeQuery();
            while (rs.next()) {
                String password = rs.getString("passwords");
                if (bookuser.getPasswords().equals(password)) {
                    return true;
                } else {
                    return false;
                }
            }
        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return false;
    }

    public boolean isAdmin(BookUser bookuser) {//判断登录用户身份  true:管理员   false:普通用户
        try {
            conn = DatabaseBean.getConnection();
            psmt = conn.prepareStatement("select permission from bookuser where username=? and passwords=?");//检查数据库中是否存在该用户
            psmt.setString(1, bookuser.getUsername());
            psmt.setString(2, bookuser.getPasswords());
            rs = psmt.executeQuery();
            rs.next();
            if (rs.getInt("permission") == 1) {//数据库中没有该用户注册信息
                return true;
            }
        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return false;
    }

    @Override
    public boolean insertBookUser(BookUser bookuser) {//用户注册 成功返回true,失败返回false
        String sql = "insert into BookUser(username,passwords,permission) values(?,?,?) ";
        int permission = 2;
        try {
            conn = DatabaseBean.getConnection();
            psmt = conn.prepareStatement(sql);
            psmt.setString(1, bookuser.getUsername());
            psmt.setString(2, bookuser.getPasswords());
            psmt.setInt(3, permission);
            psmt.execute();
            return true;
        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return false;
    }

    @Override
    public List<BookUser> getAllBookUser() {//查询所有用户信息
        List<BookUser> bookusers = new ArrayList<BookUser>();
        try {
            conn = DatabaseBean.getConnection();
            stmt = conn.createStatement();
            rs = stmt.executeQuery("select * from BookUser");
            while (rs.next()) {
                BookUser bookuser = new BookUser();
                bookuser.setUsername(rs.getString("username"));
                bookuser.setPasswords(rs.getString("passwords"));
                bookuser.setPermission(rs.getInt("permission"));
                bookusers.add(bookuser);
            }
        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, stmt, conn);
        }
        return bookusers;

    }

    public List<BookUser> getAllBookUsers(Pagination pagination) {//分页显示所有用户信息
        List<BookUser> bookusers = new ArrayList<BookUser>();
        try {
            conn = DatabaseBean.getConnection();
            String sql = "select count(*) as counts from BookUser";
            psmt = conn.prepareStatement(sql);
            rs = psmt.executeQuery();
            rs.next();
            pagination.setCountSize(rs.getInt("counts"));
            //求指定显示的记录数
            int start = (pagination.getCurrPage() - 1) * pagination.getPageSize() + 1;
            int end = pagination.getCurrPage() * pagination.getPageSize();
            //小于等于该页最大条数,大于等于该页最小条数
            sql = "SELECT * FROM(SELECT ROWNUM NO,s.* FROM "
                    + "(SELECT * FROM BookUser ORDER BY username ASC) s "
                    + "WHERE ROWNUM<=?) WHERE NO >=?";
            psmt = conn.prepareStatement(sql);
            psmt.setInt(1, end);
            psmt.setInt(2, start);
            rs = psmt.executeQuery();
            while (rs.next()) {
                BookUser bookuser = new BookUser();
                bookuser.setUsername(rs.getString("username"));
                bookuser.setPasswords(rs.getString("passwords"));
                bookuser.setPermission(rs.getInt("permission"));
                bookusers.add(bookuser);
            }

        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return bookusers;
    }

    public List<BookUser> getAllBookUser(String username, Pagination pagination) {//模糊查询用户信息
        List<BookUser> bookusers = new ArrayList<BookUser>();
        try {
            conn = DatabaseBean.getConnection();
            psmt = conn.prepareStatement("select count(*) as counts from bookuser where username like ?");
            psmt.setString(1, "%" + username + "%");
            rs = psmt.executeQuery();
            rs.next();
            pagination.setCountSize(rs.getInt("counts"));
            int start = (pagination.getCurrPage() - 1) * pagination.getPageSize() + 1;
            int end = pagination.getCurrPage() * pagination.getPageSize();
            psmt = conn.prepareStatement("SELECT * FROM(SELECT ROWNUM NO,s.* FROM "
                    + "(SELECT * FROM bookuser where username like ? ORDER BY username ASC) s "
                    + "WHERE ROWNUM<=?) WHERE NO >=?");
            psmt.setString(1, "%" + username + "%");
            psmt.setInt(2, end);
            psmt.setInt(3, start);
            rs = psmt.executeQuery();
            while (rs.next()) {
                BookUser bookuser = new BookUser();
                bookuser.setUsername(rs.getString("username"));
                bookuser.setPasswords(rs.getString("passwords"));
                bookuser.setPermission(rs.getInt("permission"));
                bookusers.add(bookuser);
            }
        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return bookusers;
    }

    @Override
    public BookUser getBookUser(String username) {//根据用户名查询具体用户信息
        BookUser bookuser = new BookUser();
        try {
            conn = DatabaseBean.getConnection();
            psmt = conn.prepareStatement("select * from BookUser where username=?");
            psmt.setString(1, username);
            rs = psmt.executeQuery();
            while (rs.next()) {
                bookuser.setUsername(rs.getString("username"));
                bookuser.setPasswords(rs.getString("passwords"));
                bookuser.setPermission(rs.getInt("permission"));
            }

        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return bookuser;
    }

    @Override
    public boolean updateBookUser(BookUser bookuser) {//修改用户信息,成功返回true,失败返回1false
        String sql = "update bookuser set passwords=? where username=?";
        try {
            conn = DatabaseBean.getConnection();
            psmt = conn.prepareStatement(sql);
            psmt.setString(1, bookuser.getPasswords());
            psmt.setString(2, bookuser.getUsername());
            psmt.executeUpdate();
            return true;
        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return false;
    }

    @Override
    public boolean deleteBookUser(String username) {//删除用户 成功:true  失败:false
        try {
            String sql = "delete from bookuser where username=? ";
            conn = DatabaseBean.getConnection();
            psmt = conn.prepareStatement(sql);
            psmt.setString(1, username);
            psmt.executeUpdate();
            return true;
        } catch (SQLException ex) {
            ex.printStackTrace();
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return false;
    }

    @Override
    public List<UB> getAllUB() {//查询所有借阅图书信息
        List<UB> ubs = new ArrayList<UB>();
        try {
            conn = DatabaseBean.getConnection();
            stmt = conn.createStatement();
            rs = stmt.executeQuery("select * from ub");
            while (rs.next()) {
                UB ub = new UB();
                ub.setUsername(rs.getString("username"));
                ub.setBno(rs.getString("bno"));
                ub.setBname(rs.getString("bname"));
                ub.setLendTime(rs.getTimestamp("lendtime").toString());//日期
                ubs.add(ub);
            }
        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, stmt, conn);
        }
        return ubs;
    }

    public List<UB> getAllUBs(Pagination pagination) {//分页显示所有图书借阅信息
        List<UB> ubs = new ArrayList<UB>();
        try {
            conn = DatabaseBean.getConnection();
            String sql = "select count(*) as counts from UB";
            psmt = conn.prepareStatement(sql);
            rs = psmt.executeQuery();
            rs.next();
            pagination.setCountSize(rs.getInt("counts"));
            //求指定显示的记录数
            int start = (pagination.getCurrPage() - 1) * pagination.getPageSize() + 1;
            int end = pagination.getCurrPage() * pagination.getPageSize();
            //小于等于该页最大条数,大于等于该页最小条数
            sql = "SELECT * FROM(SELECT ROWNUM NO,s.* FROM "
                    + "(SELECT * FROM UB ORDER BY username ASC) s "
                    + "WHERE ROWNUM<=?) WHERE NO >=?";
            psmt = conn.prepareStatement(sql);
            psmt.setInt(1, end);
            psmt.setInt(2, start);
            rs = psmt.executeQuery();
            while (rs.next()) {
                UB ub = new UB();
                ub.setUsername(rs.getString("username"));
                ub.setBno(rs.getString("bno"));
                ub.setBname(rs.getString("bname"));
                ub.setLendTime(rs.getTimestamp("lendtime").toString());//日期
                ubs.add(ub);
            }

        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return ubs;
    }

    public List<UB> getAllUB(String username, Pagination pagination) {//模糊查询图书借阅信息
        List<UB> ubs = new ArrayList<UB>();
        try {
            conn = DatabaseBean.getConnection();
            psmt = conn.prepareStatement("select count(*) as counts from ub where username like ?");
            psmt.setString(1, "%" + username + "%");
            rs = psmt.executeQuery();
            rs.next();
            pagination.setCountSize(rs.getInt("counts"));
            int start = (pagination.getCurrPage() - 1) * pagination.getPageSize() + 1;
            int end = pagination.getCurrPage() * pagination.getPageSize();
            psmt = conn.prepareStatement("SELECT * FROM(SELECT ROWNUM NO,s.* FROM "
                    + "(SELECT * FROM ub where username like ? ORDER BY username ASC) s "
                    + "WHERE ROWNUM<=?) WHERE NO >=?");
            psmt.setString(1, "%" + username + "%");
            psmt.setInt(2, end);
            psmt.setInt(3, start);
            rs = psmt.executeQuery();
            while (rs.next()) {
                UB ub = new UB();
                ub.setUsername(rs.getString("username"));
                ub.setBno(rs.getString("bno"));
                ub.setBname(rs.getString("bname"));
                ub.setLendTime(rs.getTimestamp("lendtime").toString());//日期
                ubs.add(ub);
            }
        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return ubs;
    }

    @Override
    public UB getUB(String username) {//根据用户名查询借阅信息
        UB ub = new UB();
        try {
            conn = DatabaseBean.getConnection();
            psmt = conn.prepareStatement("select * from ub where username=?");
            psmt.setString(1, username);
            rs = psmt.executeQuery();
            while (rs.next()) {
                ub.setUsername(rs.getString("username"));
                ub.setBno(rs.getString("bno"));
                ub.setBname(rs.getString("bname"));
                ub.setLendTime(rs.getTimestamp("lendtime").toString());//日期
            }

        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return ub;
    }

    @Override
    public boolean updateUB(UB ub) {//修改用户借阅信息  成功返回true,失败返回false
        String sql = "update ub set bname=?,lendtime=(to_date(?,'yyyy-mm-dd')) where username=? and bno=?";
        try {
            conn = DatabaseBean.getConnection();
            psmt = conn.prepareStatement(sql);
            psmt.setString(1, ub.getBname());
            psmt.setString(2, ub.getLendTime());
            psmt.setString(3, ub.getUsername());
            psmt.setString(4, ub.getBno());
            psmt.executeUpdate();
            return true;
        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return false;
    }

    @Override
    public boolean deleteUB(String username, String bno) {//删除图书借阅记录   成功返回true,失败返回false
        try {
            String sql = "delete from ub where username=? and bno=?";
            conn = DatabaseBean.getConnection();
            psmt = conn.prepareStatement(sql);
            psmt.setString(1, username);
            psmt.setString(2, bno);
            psmt.executeUpdate();
            return true;
        } catch (SQLException ex) {
            ex.printStackTrace();
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return false;
    }

    @Override
    public boolean findUB(UB ub) {//检测借阅记录是否存在   存在:true   不存在:false
        try {
            conn = DatabaseBean.getConnection();
            psmt = conn.prepareStatement("select * from ub where username=? and bno=?");//检查数据库中是否存在该用户
            psmt.setString(1, ub.getUsername());
            psmt.setString(2, ub.getBno());
            rs = psmt.executeQuery();
            if (rs.next()) {//数据库中有该借阅信息
                return true;
            }
        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return false;
    }

    @Override
    public boolean insertUB(UB ub) {//添加借阅信息  成功:true  失败:false
        String sql = "insert into ub(username,Bno,Bname,LendTime) values(?,?,?,to_date(?,'yyyy-mm-dd'))";
        try {
            conn = DatabaseBean.getConnection();
            psmt = conn.prepareStatement(sql);
            psmt.setString(1, ub.getUsername());
            psmt.setString(2, ub.getBno());
            psmt.setString(3, ub.getBname());
            psmt.setString(4, ub.getLendTime());
            psmt.executeUpdate();
            return true;
        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return false;
    }
    
    @Override
    public boolean isLends(String bno, String username) {  //满足true  不满足false
       try {
            conn = DatabaseBean.getConnection();
            psmt = conn.prepareStatement("select username from UB where bno=? ");
            psmt.setString(1, bno);
            rs = psmt.executeQuery();
            while (rs.next()) {
                String name = rs.getString("username");
                if (name.equals(username)) {  //已经有用户了
                    return false;
                } 
            }
        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return true;
    }
    
    @Override
    public boolean findBookUser(String userame) {
        try {
            conn = DatabaseBean.getConnection();
            psmt = conn.prepareStatement("select * from bookUser where username=? ");//检查数据库中是否存在该用户
            psmt.setString(1, userame);

            rs = psmt.executeQuery();
            while (rs.next()) {
                if (rs != null) {       //有用户
                    return true;
                } else {        //没有
                    return false;
                }
            }
       
            

        } catch (SQLException ex) {
            Logger.getLogger(BookDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            DatabaseBean.close(rs, psmt, conn);
        }
        return false;
    }


}

package com.book.model;
public class Book {

    private String Bno;/*书号*/
    private String Bname;/*书名*/
    private String Bauthor;/*作者*/
    private int Bnum;/*数量*/

    public Book() {
    }
    public Book(String Bno, String Bname, String Bauthor, int Bnum) {
        this.Bno = Bno;
        this.Bname = Bname;
        this.Bauthor = Bauthor;
        this.Bnum = Bnum;
    }

    public String getBno() {
        return Bno;
    }

    public void setBno(String Bno) {
        this.Bno = Bno;
    }

    public String getBname() {
        return Bname;
    }

    public void setBname(String Bname) {
        this.Bname = Bname;
    }

    public String getBauthor() {
        return Bauthor;
    }

    public void setBauthor(String Bauthor) {
        this.Bauthor = Bauthor;
    }

    public int getBnum() {
        return Bnum;
    }

    public void setBnum(int Bnum) {
        this.Bnum = Bnum;
    }

}

package com.book.model;
public class BookUser {

    String username;/*用户名*/
    String passwords;/*密码*/
    int permission;/*区分管理员与用户  1:管理员  2:用户*/

    public BookUser() {
    }

    public BookUser(String username, String passwords) {
        this.username = username;
        this.passwords = passwords;
    }
    
    public BookUser(String username, String passwords, int permission) {
        this.username = username;
        this.passwords = passwords;
        this.permission = permission;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPasswords() {
        return passwords;
    }

    public void setPasswords(String passwords) {
        this.passwords = passwords;
    }

    public int getPermission() {
        return permission;
    }

    public void setPermission(int permission) {
        this.permission = permission;
    }

    @Override
    public String toString() {
        return "BookUser{" + "username=" + username + ", passwords=" + passwords + ", permission=" + permission + '}';
    }

}


package com.book.model;
public class UB {

    String username;/*用户名*/
    String Bno;/*书的编号*/
    String Bname;/*书名*/
    String LendTime;/*借书时间*/

    public UB() {
    }

    public UB(String username, String Bno) {
        this.username = username;
        this.Bno = Bno;
    }

    public UB(String username, String Bno, String Bname, String LendTime) {
        this.username = username;
        this.Bno = Bno;
        this.Bname = Bname;
        this.LendTime = LendTime;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getBno() {
        return Bno;
    }

    public void setBno(String Bno) {
        this.Bno = Bno;
    }

    public String getBname() {
        return Bname;
    }

    public void setBname(String Bname) {
        this.Bname = Bname;
    }

    public String getLendTime() {
        return LendTime;
    }

    public void setLendTime(String LendTime) {
        this.LendTime = LendTime;
    }

}

package com.book.until;
import com.book.dao.ISBookDao;
import com.book.impl.BookDaoImpl;

public class DaoFactory {

    public static ISBookDao getBookDao() {
        return new BookDaoImpl();
    }
}
package com.book.until;
import java.sql.*;
import oracle.jdbc.pool.OracleDataSource;

public class DatabaseBean {

    public static Connection getConnection() throws SQLException {
        String jdbcUrl = "jdbc:oracle:thin:@localhost:1521/xe";
        String userid = "hr";
        String password = "oracle";
        OracleDataSource ds = new OracleDataSource();
        ds.setURL(jdbcUrl);
        return ds.getConnection(userid, password);
    }

    public static void close(ResultSet rs, Statement st, Connection conn) {
        try {
            if (rs != null) {
                rs.close();
            }
            if (st != null) {
                st.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }

    public static void close(ResultSet rs, PreparedStatement psmt, Connection conn) {
        try {
            if (rs != null) {
                rs.close();
            }
            if (psmt != null) {
                psmt.close();
            }
            if (conn != null) {
                conn.close();
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}


package com.book.until;
public class Pagination {

    //当前页码 
    private int currPage = 1;
    //总页数 
    private int countPage = 0;
    //每页显示记录数 
    private int pageSize = 10;
    //总记录条数
    private int countSize = 0;

    private String pageBar;
    private String numPageBar;
    private String url;

    public int getCurrPage() {
        return currPage;
    }

    public void setCurrPage(int currPage) {
        this.currPage = currPage;
    }

    public int getCountPage() {
        if (countSize != 0) {
            if (countSize % pageSize != 0) {
                countPage = countSize / pageSize + 1;
            } else {
                countPage = countSize / pageSize;
            }
        }
        return countPage;
    }

    public void setCountPage(int countPage) {
        this.countPage = countPage;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getCountSize() {
        return countSize;
    }

    public void setCountSize(int countSize) {
        this.countSize = countSize;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getPageBar() {
        countPage = getCountPage();

        if (countPage != 0) {
            //判断当前页号的合法性
            if (currPage < 1) {
                currPage = 1;
            }
            if (currPage > countPage) {
                currPage = countPage;
            }

            StringBuilder sb = new StringBuilder();
            sb.append("每页:").append(pageSize).append("&nbsp;&nbsp;页次:").append(currPage).
                    append("/").append(countPage).append("&nbsp;&nbsp;总计:").append(countSize).
                    append("&nbsp;");
            sb.append("<ul class=\"pagination pagination-small border-main\">");
            if (currPage == 1) {
                sb.append("<li class=\"disabled\"><a href=\"#\">首页</a> </li>");
                sb.append("<li class=\"disabled\"><a href=\"#\">上页</a> </li>");
            } else {
                sb.append("<li><a href=\"").append(url).append("&currPage=").append("1\">首页</a> </li>");
                sb.append("<li><a href=\"").append(url).append("&currPage=").append(currPage - 1).append("\">上页</a> </li>");
            }

            if (currPage == countPage) {
                sb.append("<li class=\"disabled\"><a href=\"#\">下页</a> </li>");
                sb.append("<li class=\"disabled\"><a href=\"#\">尾页</a> </li>");
            } else {
                sb.append("<li><a href=\"").append(url).append("&currPage=").append(currPage + 1).append("\">下页</a> </li>");
                sb.append("<li><a href=\"").append(url).append("&currPage=").append(countPage).append("\">尾页</a> </li>");
            }
            sb.append("</ul>");
            pageBar = sb.toString();
        } else {
            pageBar = "";
        }
        return pageBar;
    }

    public String getNumPageBar() {
        countPage = getCountPage();

        if (countPage != 0) {
            //判断当前页号的合法性
            if (currPage < 1) {
                currPage = 1;
            }
            if (currPage > countPage) {
                currPage = countPage;
            }
            StringBuilder sb = new StringBuilder();
            //计算当前页所在的组
            int group = currPage / 5 + (currPage % 5 == 0 ? 0 : 1);
            int start = (group - 1) * 5 + 1;
            int end = start + 4;
            System.out.println("group:" + group + ";start:" + start + ";end:" + end);
            if (end > countPage) {
                end = countPage;
            }

            sb.append("<ul class=\"pagination pagination-small border-main\">");
            if (start > 1) {
                sb.append("<li><a href=\"").append(url).append("&currPage=").
                        append(start - 1).append("\">&lt;</a></li>");
            }
            for (int i = start; i <= end; i++) {
                if (currPage != i) {
                    sb.append("<li><a href=\"").append(url).append("&currPage=").append(i).
                            append("\">").append(i).append("</a></li>");
                } else {
                    sb.append("<li class=\"active\"><a href=\"#\">").append(i).append("</a></li>");
                }
            }
            if (end < countPage) {
                sb.append("<li><a href=\"").append(url).append("&currPage=").append(end + 1).append("\">&gt;</a></li>");
            }
            sb.append("</ul>");
            numPageBar = sb.toString();
        } else {
            numPageBar = "";
        }
        return numPageBar;
    }

}

package com.book.until;
public class Tools {
    public  static String user;
}

控制层

控制层使用servlet实现:系统中所有Servlet如下:
在这里插入图片描述
代码如下:

package com.UB.dao;

import com.book.model.BookUser;
import com.book.model.UB;
import com.book.until.DaoFactory;
import com.book.until.Pagination;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet(name = "SelectAllUB", urlPatterns = {"/SelectAllUB"})
public class SelectAllUB extends HttpServlet {
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
         response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        int page = 1;
        Pagination pagination = new Pagination();
        String username = request.getParameter("username");
        String currPage = request.getParameter("currPage");
        if (currPage != null) {
            page = Integer.parseInt(currPage);
        }
        pagination.setCurrPage(page);
        List<UB> ubs;
        if (username != null && !"".equals(username)) {
            pagination.setUrl("SelectAllUB?username=" + username);
            ubs = DaoFactory.getBookDao().getAllUB(username, pagination);
        } else {
            pagination.setUrl("SelectAllUB?");
            ubs =DaoFactory.getBookDao().getAllUBs(pagination);
        }
        
        request.setAttribute("ubs", ubs);
        request.setAttribute("pagination", pagination);
        System.out.println("开始显示程序");
        request.getRequestDispatcher("selectAllUB.jsp").forward(request, response);
    }
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

package com.book.servlet;

import com.book.until.DaoFactory;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet(name = "BookDelete", urlPatterns = {"/BookDelete"})
public class BookDelete extends HttpServlet {
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        String bno = request.getParameter("bno");
        System.out.println(bno);
        if(DaoFactory.getBookDao().deleteBook(bno)){
             response.sendRedirect(request.getContextPath() + "/BookDisplay");
        }else{
            System.out.println("失败");
             request.setAttribute("insertErr", "删除信息失败,请检查原因!");
             request.getRequestDispatcher("First.jsp").forward(request, response);
        }  
    }
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

package com.book.servlet;

import com.book.model.Book;
import com.book.until.DaoFactory;
import com.book.until.Pagination;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet(name = "BookDisplay", urlPatterns = {"/BookDisplay"})
public class BookDisplay extends HttpServlet {
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        int page = 1;
        Pagination pagination = new Pagination();
        String bno = request.getParameter("bno");
        String currPage = request.getParameter("currPage");
        if (currPage != null) {
            page = Integer.parseInt(currPage);
        }
        pagination.setCurrPage(page);
        List<Book> books;
        if (bno != null && !"".equals(bno)) {
            pagination.setUrl("BookDisplay?bno=" + bno);
            books = DaoFactory.getBookDao().getAllBooks(bno, pagination);
        } else {
            pagination.setUrl("BookDisplay?");
            books = DaoFactory.getBookDao().getAllBooks(pagination);
        }

        request.setAttribute("books", books);
        request.setAttribute("pagination", pagination);
        System.out.println("开始显示程序");
        request.getRequestDispatcher("First.jsp").forward(request, response);
    }
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

package com.book.servlet;

import com.book.model.Book;
import com.book.model.BookUser;
import com.book.until.DaoFactory;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(name = "InsertBook", urlPatterns = {"/InsertBook"})
public class InsertBook extends HttpServlet {
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        String bno = request.getParameter("bno");
        String bname = request.getParameter("bname");
        String bauthor = request.getParameter("bauthor");
        String bnum = request.getParameter("bnum");
        Book book = new Book(bno, bname, bauthor, Integer.parseInt(bnum));
        
        System.out.println("图书编号"+bno);
        System.out.println("图书名称"+bname);
        System.out.println("发现用户:"+DaoFactory.getBookDao().findBook(bno));
        if(!DaoFactory.getBookDao().findBook(bno)){
     
            DaoFactory.getBookDao().insertBook(book);
            response.sendRedirect(request.getContextPath() + "/BookDisplay");
        }else {
            String string = "书库中已经有该图书!!!";
            request.setAttribute("string", string);
            request.getRequestDispatcher("insertBook.jsp").forward(request, response);
        }
    }
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

package com.book.servlet;

import com.book.model.UB;
import com.book.until.DaoFactory;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
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 java.util.Date;

@WebServlet(name = "LendBook", urlPatterns = {"/LendBook"})
public class LendBook extends HttpServlet {
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        String bno = request.getParameter("bno");
        String bname = request.getParameter("bname");
//        System.out.println(bno);
//        System.out.println(bname);
        Date date = new Date();
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String time = dateFormat.format(date);
//        System.out.println("当前时间为:"+time);

        if (DaoFactory.getBookDao().isLend(bno) ) {
            request.setAttribute("bno", bno);
            request.setAttribute("bname", bname);
            request.setAttribute("time", time);
            request.getRequestDispatcher("lendBook.jsp").forward(request, response);
        } else {
            String string = "该图书不可借";
            request.setAttribute("bno", bno);
            request.setAttribute("bname", bname);
            request.setAttribute("string", string);
            request.setAttribute("time", time);
            request.getRequestDispatcher("lendBook.jsp").forward(request, response);
        }

    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.book.servlet;

import com.book.model.Book;
import com.book.model.UB;
import com.book.until.DaoFactory;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author 25371
 */
@WebServlet(name = "LendBookDo", urlPatterns = {"/LendBookDo"})
public class LendBookDo extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        String username = request.getParameter("username");
        String bno = request.getParameter("bno");
        String bname = request.getParameter("bname");
        String time =  request.getParameter("time");
        System.out.println("当前的用户为:"+username);
        
        UB ub = new UB();
        ub.setBname(bname);
        ub.setBno(bno);
        ub.setLendTime(time);
        ub.setUsername(username);
        /*      没有UB用户 &&                              */
        System.out.println("发现一条记录:"+DaoFactory.getBookDao().isLends(bno,username));
        System.out.println("发现一条用户:"+DaoFactory.getBookDao().findBookUser(username) );
        System.out.println("username!=null:"+  (username!=null) );
        System.out.println("!(\"\".equals(username)):"+  (!("".equals(username))) );
        if(DaoFactory.getBookDao().isLends(bno,username) && DaoFactory.getBookDao().findBookUser(username)  && username!=null && !("".equals(username))){
            System.out.println("进入");
            DaoFactory.getBookDao().insertUB(ub);
            System.out.println("插入数据");
            DaoFactory.getBookDao().lendBook(bno);
            System.out.println("借书");
            response.sendRedirect(request.getContextPath() + "/BookDisplay");
        }else {
           String string = "用户名错误";
           request.setAttribute("bno", bno);
           request.setAttribute("bname", bname);
           request.setAttribute("string", string);
           request.setAttribute("time", time);
           request.getRequestDispatcher("lendBook.jsp").forward(request, response);
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.book.servlet;

import com.book.model.UB;
import com.book.until.DaoFactory;
import static com.book.until.Tools.user;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author 25371
 */
@WebServlet(name = "LendBookDoTwo", urlPatterns = {"/LendBookDoTwo"})
public class LendBookDoTwo extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        String bno = request.getParameter("bno");
        String bname = request.getParameter("bname");
        String time =  request.getParameter("time");
        System.out.println("当前的用户为:"+user);
        
        UB ub = new UB();
        ub.setBname(bname);
        ub.setBno(bno);
        ub.setLendTime(time);
        ub.setUsername(user);
        System.out.println("user:"+user);
        /*      没有UB用户 &&                              */
        System.out.println("发现一条记录:"+DaoFactory.getBookDao().isLends(bno,user));
        System.out.println("发现一条用户:"+DaoFactory.getBookDao().findBookUser(user) );
        if(DaoFactory.getBookDao().isLends(bno,user)){
            System.out.println("进入");
            DaoFactory.getBookDao().insertUB(ub);
            System.out.println("插入数据");
            DaoFactory.getBookDao().lendBook(bno);
            System.out.println("借书");
            response.sendRedirect(request.getContextPath() + "/SelectUserAllBook");
        }else {
           String string = "已经借有该图书";
           request.setAttribute("bno", bno);
           request.setAttribute("bname", bname);
           request.setAttribute("string", string);
           request.setAttribute("time", time);
           request.getRequestDispatcher("lendBookTwo.jsp").forward(request, response);
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.book.servlet;

import com.book.model.UB;
import com.book.until.DaoFactory;
import static com.book.until.Tools.user;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author 25371
 */
@WebServlet(name = "LendBookTwo", urlPatterns = {"/LendBookTwo"})
public class LendBookTwo extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        String bno = request.getParameter("bno");
        String bname = request.getParameter("bname");
//        System.out.println(bno);
//        System.out.println(bname);
        Date date = new Date();
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String time = dateFormat.format(date);
        System.out.println("图书是否可借:"+DaoFactory.getBookDao().isLend(bno));

        if (DaoFactory.getBookDao().isLend(bno) && DaoFactory.getBookDao().isLends(bno,user)) {
            request.setAttribute("bno", bno);
            request.setAttribute("bname", bname);
            request.setAttribute("time", time);
            request.getRequestDispatcher("lendBookTwo.jsp").forward(request, response);
        } else {
            String string = "该图书不可借";
            request.setAttribute("bno", bno);
            request.setAttribute("bname", bname);
            request.setAttribute("string", string);
            request.setAttribute("time", time);
            request.getRequestDispatcher("lendBookTwo.jsp").forward(request, response);
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.book.servlet;

import com.book.until.DaoFactory;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author 25371
 */
@WebServlet(name = "ReturnBook", urlPatterns = {"/ReturnBook"})
public class ReturnBook extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        String bno = request.getParameter("bno");
        String bname = request.getParameter("bname");
//        System.out.println(bno);
//        System.out.println(bname);
        Date date = new Date();
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String time = dateFormat.format(date);
//        System.out.println("当前时间为:"+time);
        request.setAttribute("bno", bno);
        request.setAttribute("bname", bname);
        request.setAttribute("time", time);
        request.getRequestDispatcher("returnBook.jsp").forward(request, response);
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.book.servlet;

import com.book.model.UB;
import com.book.until.DaoFactory;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author 25371
 */
@WebServlet(name = "ReturnBookDo", urlPatterns = {"/ReturnBookDo"})
public class ReturnBookDo extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
         response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        String username = request.getParameter("username");
        String bno = request.getParameter("bno");
        String bname = request.getParameter("bname");
        String time =  request.getParameter("time");
        System.out.println("当前的用户为:"+username);
        
        UB ub = new UB();
        ub.setBname(bname);
        ub.setBno(bno);
        ub.setLendTime(time);
        ub.setUsername(username);
        
        if(DaoFactory.getBookDao().findUB(ub) && username!=null && !"".equals(username) ){
            DaoFactory.getBookDao().deleteUB(username,bno);
            DaoFactory.getBookDao().returnBook(bno);
            response.sendRedirect(request.getContextPath() + "/BookDisplay");
        }else {
           String string = "用户名错误";
           request.setAttribute("bno", bno);
           request.setAttribute("bname", bname);
           request.setAttribute("string", string);
           request.setAttribute("time", time);
           request.getRequestDispatcher("returnBook.jsp").forward(request, response);
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.book.servlet;

import static com.book.until.Tools.user;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author 25371
 */
@WebServlet(name = "ReturnBookTwo", urlPatterns = {"/ReturnBookTwo"})
public class ReturnBookTwo extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
       response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        String bno = request.getParameter("bno");
        String bname = request.getParameter("bname");
//        System.out.println(bno);
//        System.out.println(bname);
        Date date = new Date();
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String time = dateFormat.format(date);
//        System.out.println("当前时间为:"+time);
        request.setAttribute("bno", bno);
        request.setAttribute("bname", bname);
        request.setAttribute("time", time);
        request.setAttribute("user", user);
        request.getRequestDispatcher("returnBookTwo.jsp").forward(request, response);
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.book.servlet;

import com.book.model.UB;
import com.book.until.DaoFactory;
import com.book.until.Tools;
import static com.book.until.Tools.user;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author 25371
 */
@WebServlet(name = "ReturnBookTwoDo", urlPatterns = {"/ReturnBookTwoDo"})
public class ReturnBookTwoDo extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");

        String bno = request.getParameter("bno");
        String bname = request.getParameter("bname");
        String time = request.getParameter("time");

        UB ub = new UB();
        ub.setBname(bname);
        ub.setBno(bno);
        ub.setLendTime(time);
        ub.setUsername(user);

        DaoFactory.getBookDao().deleteUB(user, bno);
        DaoFactory.getBookDao().returnBook(bno);
        response.sendRedirect(request.getContextPath() + "/SelectUserAllBook");
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.book.servlet;

import com.book.model.UB;
import com.book.until.DaoFactory;
import com.book.until.Pagination;
import static com.book.until.Tools.user;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author 25371
 */
@WebServlet(name = "SelectOurBookTwo", urlPatterns = {"/SelectOurBookTwo"})
public class SelectOurBookTwo extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
       response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        int page = 1;
        Pagination pagination = new Pagination();
      
        String currPage = request.getParameter("currPage");
        if (currPage != null) {
            page = Integer.parseInt(currPage);
        }
        pagination.setCurrPage(page);
        List<UB> ubs;
        pagination.setUrl("BookDisplay?");
        ubs =DaoFactory.getBookDao().getAllUB(user,pagination);
        
        request.setAttribute("ubs", ubs);
        request.setAttribute("pagination", pagination);
        System.out.println("开始显示程序");
        request.getRequestDispatcher("selectOursBookTwo.jsp").forward(request, response);
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.book.servlet;

import com.book.model.Book;
import com.book.model.UB;
import com.book.until.DaoFactory;
import com.book.until.Pagination;
import com.book.until.Tools;
import static com.book.until.Tools.user;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author 25371
 */
@WebServlet(name = "SelectOursBook", urlPatterns = {"/SelectOursBook"})
public class SelectOursBook extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        int page = 1;
        Pagination pagination = new Pagination();
      
        String currPage = request.getParameter("currPage");
        if (currPage != null) {
            page = Integer.parseInt(currPage);
        }
        pagination.setCurrPage(page);
        List<UB> ubs;
        pagination.setUrl("BookDisplay?");
        ubs =DaoFactory.getBookDao().getAllUB(user,pagination);
        
        request.setAttribute("ubs", ubs);
        request.setAttribute("pagination", pagination);
        System.out.println("开始显示程序");
        request.getRequestDispatcher("selectOursBook.jsp").forward(request, response);
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.book.servlet;

import com.book.model.Book;
import com.book.until.DaoFactory;
import com.book.until.Pagination;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author 25371
 */
@WebServlet(name = "SelectUserAllBook", urlPatterns = {"/SelectUserAllBook"})
public class SelectUserAllBook extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        int page = 1;
        Pagination pagination = new Pagination();
        //       String bno = request.getParameter("bno");
        String currPage = request.getParameter("currPage");
        if (currPage != null) {
            page = Integer.parseInt(currPage);
        }
        pagination.setCurrPage(page);
        List<Book> books;
        /*       if (bno != null && "".equals(bno)) {
            pagination.setUrl("SelectUserAllBook?" + bno);
            books = DaoFactory.getBookDao().getAllBooks(bno, pagination);
        } else {*/
        pagination.setUrl("SelectUserAllBook?");
        books = DaoFactory.getBookDao().getAllBooks(pagination);
        //       }
        request.setAttribute("books", books);
        request.setAttribute("pagination", pagination);
        System.out.println("开始显示程序");
        request.getRequestDispatcher("userFirst.jsp").forward(request, response);

    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.bookUser.servlet;

import com.book.model.BookUser;
import com.book.until.DaoFactory;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author 25371
 */
@WebServlet(name = "InsertUser", urlPatterns = {"/InsertUser"})
public class InsertUser extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        String username = request.getParameter("username");
        String passwords = request.getParameter("passwords");
        BookUser bookUser = new BookUser();
        bookUser.setPasswords(passwords);
        bookUser.setUsername(username);
        bookUser.setPermission(2);
        System.out.println("用户名"+username);
        System.out.println("密码"+passwords);
        System.out.println("发现用户:"+DaoFactory.getBookDao().findBookUser(bookUser));
        System.out.println("发现账号:"+DaoFactory.getBookDao().findBookUser(username));
        if(!DaoFactory.getBookDao().findBookUser(bookUser) && !DaoFactory.getBookDao().findBookUser(username)){
     
            DaoFactory.getBookDao().insertBookUser(bookUser);
            response.sendRedirect(request.getContextPath() + "/SelectAllUser");
        }else {
            String string = "该用户已经被注册!!!";
            request.setAttribute("string", string);
            request.getRequestDispatcher("insertUser.jsp").forward(request, response);
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.bookUser.servlet;

import java.io.IOException;
import java.io.PrintWriter;
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 com.book.model.BookUser;
import com.book.until.DaoFactory;
import java.sql.SQLException;

import com.book.until.Tools;
import static com.book.until.Tools.user;

/**
 *
 * @author 25371
 */
@WebServlet(name = "Login", urlPatterns = {"/Login"})
public class Login extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        String inputUser = request.getParameter("inputUser");
        String inputPass = request.getParameter("inputPass");
        BookUser bookUser = new BookUser();
        bookUser.setUsername(inputUser);
        bookUser.setPasswords(inputPass);
        System.out.println(inputUser);
        System.out.println(inputPass);

        if (DaoFactory.getBookDao().findBookUser(bookUser)) { //数据库中是否有该用户
            if (DaoFactory.getBookDao().isAdmin(bookUser)) { //进入管理员界面(该用户为管理员)
                System.out.println("管理员" + DaoFactory.getBookDao().isAdmin(bookUser));
                response.sendRedirect(request.getContextPath() + "/BookDisplay");
            } else {  //进入普通用户界面(该用户为普通用户)
                System.out.println("普通用户" + DaoFactory.getBookDao().isAdmin(bookUser));
                response.sendRedirect(request.getContextPath() + "/SelectUserAllBook");
            }
            user = inputUser;
        }else{
            String string = "用户不存在或者密码错误";
            request.setAttribute("string", string);
            request.getRequestDispatcher("login.jsp").forward(request, response);
  
        
        }
    }
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">

    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.bookUser.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author 25371
 */
@WebServlet(name = "LoginShow", urlPatterns = {"/LoginShow"})
public class LoginShow extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        response.sendRedirect(request.getContextPath() + "/login.jsp");
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.bookUser.servlet;

import com.book.model.BookUser;
import com.book.until.DaoFactory;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author 25371
 */
@WebServlet(name = "RegisteredUser", urlPatterns = {"/RegisteredUser"})
public class RegisteredUser extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        String inputUser = request.getParameter("inputUser");
        String inputPass = request.getParameter("inputPass");
        BookUser bookUser = new BookUser();
        bookUser.setUsername(inputUser);
        bookUser.setPasswords(inputPass);
        bookUser.setPermission(2);
        System.out.println("发现用户:"+DaoFactory.getBookDao().findBookUser(bookUser));
        System.out.println("发现账号:"+DaoFactory.getBookDao().findBookUser(inputUser));
        if(!DaoFactory.getBookDao().findBookUser(bookUser) && !DaoFactory.getBookDao().findBookUser(inputUser)){
           DaoFactory.getBookDao().insertBookUser(bookUser);
            response.sendRedirect(request.getContextPath() + "/login.jsp");
        }else{
             String string = "该用户已经被注册!!!";
            request.setAttribute("string", string);
            request.getRequestDispatcher("registered.jsp").forward(request, response);
  
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.bookUser.servlet;

import com.book.model.Book;
import com.book.model.BookUser;
import com.book.until.DaoFactory;
import com.book.until.Pagination;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author 25371
 */
@WebServlet(name = "SelectAllUser", urlPatterns = {"/SelectAllUser"})
public class SelectAllUser extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        int page = 1;
        Pagination pagination = new Pagination();
        String username = request.getParameter("username");
        String currPage = request.getParameter("currPage");
        if (currPage != null) {
            page = Integer.parseInt(currPage);
        }
        pagination.setCurrPage(page);
        List<BookUser> bookUsers;
        if (username != null && !"".equals(username)) {
            pagination.setUrl("SelectAllUser?username=" + username);
            bookUsers = DaoFactory.getBookDao().getAllBookUser(username, pagination);
        } else {
            pagination.setUrl("SelectAllUser?");
            bookUsers =DaoFactory.getBookDao().getAllBookUsers(pagination);
        }
        
        request.setAttribute("bookUsers", bookUsers);
        request.setAttribute("pagination", pagination);
        System.out.println("开始显示程序");
        request.getRequestDispatcher("selectAllUser.jsp").forward(request, response);
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.bookUser.servlet;

import com.book.model.BookUser;
import com.book.until.DaoFactory;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author 25371
 */
@WebServlet(name = "UpdatePassword", urlPatterns = {"/UpdatePassword"})
public class UpdatePassword extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        String username = request.getParameter("username");
        String passwords = request.getParameter("passwords");
        
        BookUser bookUser = new BookUser(username, passwords);
        DaoFactory.getBookDao().updateBookUser(bookUser);
        response.sendRedirect(request.getContextPath() + "/BookDisplay");
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.bookUser.servlet;

import static com.book.until.Tools.user;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author 25371
 */
@WebServlet(name = "UpdateUser", urlPatterns = {"/UpdateUser"})
public class UpdateUser extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        request.setAttribute("user", user);
        request.getRequestDispatcher("updatePassword.jsp").forward(request, response);
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.bookUser.servlet;

import com.book.model.BookUser;
import com.book.until.DaoFactory;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author 25371
 */
@WebServlet(name = "UpdateUserPass", urlPatterns = {"/UpdateUserPass"})
public class UpdateUserPass extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        String username = request.getParameter("username");
        String passwords = request.getParameter("passwords");
        
        BookUser bookUser = new BookUser(username, passwords);
        DaoFactory.getBookDao().updateBookUser(bookUser);
        response.sendRedirect(request.getContextPath() + "/SelectUserAllBook");
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.bookUser.servlet;

import static com.book.until.Tools.user;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author 25371
 */
@WebServlet(name = "UpdateUserPassDo", urlPatterns = {"/UpdateUserPassDo"})
public class UpdateUserPassDo extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
       response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("utf-8");
        request.setAttribute("user", user);
        request.getRequestDispatcher("updateUserPass.jsp").forward(request, response);
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

表示层

表示层使用jsp实现,具体jsp如下:
在这里插入图片描述
由于篇幅有限,表示层代码请参阅下一篇文章:表示层的实现
完整项目下载(包含所有所需要的架包,框架文件。项目可以直接运行):数据库系统实现课设:图书管理系统源代码下载

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库系统实现课程设计:图书管理系统 的相关文章

随机推荐

  • 敏捷开发之Scrum扫盲篇

    转载至 http www cnblogs com taven archive 2010 10 17 1853386 html 现在敏捷开发是越来越火了 人人都在谈敏捷 人人都在学习Scrum和XP 为了不落后他人 于是我也开始学习Scrum
  • kerberos 术语和认证流程介绍

    重要术语 1 KDC 全称 key distributed center 作用 整个安全认证过程的票据生成管理服务 其中包含两个服务 AS和TGS 2 AS 全称 authentication service 作用 为client生成TGT
  • 操作系统的文件结构

    文件的 逻辑结构 主要有 1 连续结构 2 多重结构 3 转置结构 4 顺序结构 文件的 物理存储 主要有 1 顺序结构 2 链接结构 3 索引结构 文件的 目录结构 主要有 1 一级目录结构 2 二级目录结构 3 树形结构 4 无环图
  • Springboot定时任务

    下文为 Scheduled的使用方法 1 简介 Scheduled支持三种部署方式 fixedRate fixedRateString 上一次执行开始后 n秒后再次执 fixedDelay fixedDelayString 上一次执行完毕后
  • 舵机的三条线分别代表什么

    橙色信号线 红色正极 棕褐色负极
  • @RequestParam和@PathVariable的用法与区别

    SpringBoot PathVariable URL变量 Web应用中的URL通常不是一成不变的 例如微博两个不同用户的个人主页对应两个不同的URL http weibo com user1和http weibo com user2 我们
  • 工厂(factory)模式

    转自 http www cnblogs com hegezhou hot archive 2010 11 30 1892227 html 一 开篇 一个多月没有写文章了 一方面是由于家庭的原因 还有一方面是因为工作上的原因 所以在这里给大家
  • 使用hutool库,对excel进行一些导出、导入操作

    所用到的各种类 依赖的话百度一下吧 最后再给上全部代码 import cn hutool core collection CollUtil import cn hutool core io IoUtil import cn hutool p
  • Struts 2 标签

    原文 https www mkyong com struts2 struts 2 shidden hidden value example 在struts2中可以使用
  • 调gensim库,word2vec模型的保存和加载

    一 模型的保存 模型保存可以有很多种格式 根据格式的不同可以分为2种 一种是保存为 model的文件 一种是非 model文件的保存 我常用的保存格式是 model和 vector直接上代码和结果 1 保存为model文件 数据的读入 fi
  • PCIe中断之MSI和MSI-X的区别(详细)总结附图文快速掌握

    目录 一 整体介绍 二 MSI和MSI X对比 2 1 中断向量连续 2 2 映射区域区别 2 3 MSI X配置空间 2 3 1 MSI X Capbility介绍 2 3 2 Capbility ID介绍 2 3 3 Message C
  • tree树做过滤

    代码如下 递归tree关键词搜索 param key 需要递归的key名 param keyword 需要搜索查询的关键字 param treeList 遍历tree列表 param first 是否是首次传入 默认true functio
  • Thymeleaf (select、checkbox)数据绑定和数据回回显

    第一种情况 select 数据绑定 前端页面 div class col sm 10 div
  • 放大电路中的自激震荡及相位补偿方法

    自激震荡 产生原因 1 电容对信号的超前和滞后作用 要分析自激震荡 首先得了解电路中的相移 放大电路中使信号发生相移的罪魁祸首主要在于电容 如果电容串接在电路中 则构成高通滤波电路 在截止频率之前相位超前90 2 之后相移为0 如图1所示
  • 2023年数学建模:种群竞争模型及其MATLAB实现

    订阅专栏后9月比赛期间会分享思路及Matlab代码 目录 种群竞争模型 MATLAB实现 实战案例 两种昆虫的竞争
  • Typora常用快捷键(详细)

    1 typora常用快捷键 ctrl 切换编辑语法模式 预览模式 ctrl 1 6 标题1 6 等同于 一级标题 空格 标题内容 二级标题 空格 标题内容 三级标题 空格 标题内容 最多六级标题 ctrl B 粗体 ctrl I 斜体 ct
  • Unity编译Android的原理解析和apk打包分析

    作者 张坤 最近由于想在Scene的脚本组件中 调用Android的Activity的相关接口 就需要弄明白Scene和Activity的实际对应关系 并对Unity调用Android的部分原理进行了研究 本文主要探讨Scene和Activ
  • [机器学习] 代价函数(cost function)

    前言 代价函数也叫做损失函数 loss function 机器学习中训练模型的过程就是优化代价函数的过程 代价函数对每个参数的偏导数就是梯度下降中的梯度 1 代价函数的定义 假设有训练样本 x y 模型为f 参数为w f w wTx w T
  • Android项目构建之build.gradle配置与打包

    一 build gradle配置 Google推荐使用的Android Studio是采用Gradle来构建项目的 Gradle是用了一种基于Groovy的领域特定语言 DSL Domain Specific Language 来声明项目设
  • 数据库系统实现课程设计:图书管理系统

    图书管理系统 项目简介 开发环境 数据层 控制层 表示层 项目简介 围绕中小学 注 无图书馆 图书管理需求 如采购入库 图书编码 借书还书 图书出库 设计合理的系统功能模块和数据库结构 构建一个较为实用的图书管理系统 任务要求 按照软件工程