使用IDEA搭建一個簡單的JavaWeb圖書管理項目(詳細步驟指導、提供源碼)


寫在前邊:
這個一個JavaWeb項目的基礎實戰的分享,當然如果可以你們可以拿走當作業(前提你們的作業要求並不高)
本項目只實現了基本的增刪改查,略懂Java基礎也可以拿走根據需要修改,也算提供了一個項目結構組織的框架,可以作為參考。本項目暫時只實現了基礎的增刪改查一套,模糊查詢一個,還有分頁查詢。這些內容也算是開發JavaWeb項目開發的核心內容,其它的可以根據需要自己完善。

源碼下載 ↓ ↓ ↓

項目壓縮包下載 — 百度網盤 提取碼: 9vh7
項目壓縮包下載 — CSDN
GitHub下載(已更新,添加了用戶登錄模塊)


一、開發環境和項目結構

開發環境

  • JDK 8
  • MySQL 5.7
  • Tomcat 9.0
  • IDEA 2018
  • 推薦使用當前或更高開發環境

項目結構
在這里插入圖片描述

二、項目配置

emmmm,有點長我單獨寫了一篇博客,需要的可以去看一下
https://blog.csdn.net/weixin_44580492/article/details/107335967

三、代碼編寫步驟

  • 開始編寫之前,推薦將項目結構中的 包 先構建好
  • 1~6步屬於C/S項目
  • 1~9步屬於B/S項目,第6步除外,可省略不寫

1.編寫數據庫代碼

創建名為 book 的數據庫

create database book;

創建名為 book 的數據表

CREATE TABLE `book`  (
  `BOOK_ID` int(50) NOT NULL AUTO_INCREMENT,
  `BOOK_NAME` varchar(100)  NOT NULL,
  `ISBN` varchar(100),
  `CATEGORY` varchar(100),
  PRIMARY KEY (`BOOK_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.編寫工具類

在util包下操作

編寫數據庫連接配置文件 db-config.properties

jdbc.url=jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456
jdbc.driver=com.mysql.jdbc.Driver

編寫數據庫連接類 DBUtil

package com.jmp.util;

import java.sql.*;
import java.util.ResourceBundle;

/** * @author JYH * @version 1.0 * @date 2020/6/19 23:53 */
public class DBUtil {

    //數據庫連接地址
    private static final String URL;
    //數據庫用戶名
    private static final String USERNAME;
    //數據庫密碼
    private static final String PASSWORD;
    //加載數據庫連接驅動程序
    private static final String DRIVER;

    private DBUtil(){}

    //加載數據庫配置文件
    private static ResourceBundle rb = ResourceBundle.getBundle("com.jmp.util.db-config");

    //加載數據庫配置文件中的連接信息
    static{
        URL = rb.getString("jdbc.url");
        USERNAME = rb.getString("jdbc.username");
        PASSWORD = rb.getString("jdbc.password");
        DRIVER = rb.getString("jdbc.driver");
        try {
            Class.forName(DRIVER);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    //創建數據庫連接
    public static Connection getConnection() {
        Connection con = null;
        try {
            con = DriverManager.getConnection(URL,USERNAME,PASSWORD);
// System.out.println("數據庫連接成功。");
        } catch (SQLException throwables) {
            throwables.printStackTrace();
            System.out.println("數據庫連接失敗,請檢查數據庫地址、用戶名、密碼是否存在錯誤!!!");
        }
        return con;
    }

    //關閉數據庫連接
    public static void close(ResultSet rs, Statement stat,Connection con) throws SQLException {
        if(rs != null){
            rs.close();
        }if(stat != null){
            rs.close();
        }if(con != null){
            rs.close();
        }
        System.out.println("數據庫連接已關閉!");
    }

    //測試數據庫連接
    public static void main(String[] args) {
        System.out.println(DBUtil.getConnection());
    }
}

編寫完DBUtil類后我們可以先運行一下 main 方法,看數據庫能否連接成功。

編寫分頁工具類 PageBean

package com.jmp.util;

/** * 分頁工具類 * @author JYH * @version 1.0 * @date 2020/6/23 11:42 */

public class PageBean {

    private int page;// 頁碼

    private int rows;// 頁大小

    private int total;// 總記錄數

    private boolean pagination = true;// 是否分頁

    public PageBean() {
        super();
    }

    public int getPage() {
        return page;
    }

    public void setPage(int page) {
        this.page = page;
    }

    public int getRows() {
        return rows;
    }

    public void setRows(int rows) {
        this.rows = rows;
    }

    public int getTotal() {
        return total;
    }

    public void setTotal(int total) {
        this.total = total;
    }

    public void setTotal(String total) {
        this.total = Integer.parseInt(total);
    }

    public boolean isPagination() {
        return pagination;
    }

    public void setPagination(boolean pagination) {
        this.pagination = pagination;
    }

    /** * 獲得起始記錄的下標 * * @return */
    public int getStartIndex() {
        return (this.page - 1) * this.rows;
    }

    @Override
    public String toString() {
        return "PageBean [page=" + page + ", rows=" + rows + ", total=" + total + ", pagination=" + pagination + "]";
    }
}

3.編寫實體類

在pojo包下操作

編寫圖書實體類 Book

package com.jmp.pojo;

/** * @author JYH * @version 1.0 * @date 2020/6/19 23:50 */

public class Book {
    private int book_id;
    private String book_name;
    private String isbn;
    private  String category;

    public Book() {
    }

    public Book(int book_id, String book_name, String isbn, String category) {
        this.book_id = book_id;
        this.book_name = book_name;
        this.isbn = isbn;
        this.category = category;
    }

    public int getBook_id() {
        return book_id;
    }

    public void setBook_id(int book_id) {
        this.book_id = book_id;
    }

    public String getBook_name() {
        return book_name;
    }

    public void setBook_name(String book_name) {
        this.book_name = book_name;
    }

    public String getIsbn() {
        return isbn;
    }

    public void setIsbn(String isbn) {
        this.isbn = isbn;
    }

    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }

    @Override
    public String toString() {
        return "Book{" +
                "book_id=" + book_id +
                ", book_name='" + book_name + '\'' +
                ", isbn='" + isbn + '\'' +
                ", category='" + category + '\'' +
                '}';
    }
}

4.編寫數據處理層

在dao包下操作

創建接口 BookDao,規定需要實現的功能

package com.jmp.dao;

import com.jmp.pojo.Book;

import java.sql.SQLException;
import java.util.List;

/** * @author JYH * @version 1.0 * @date 2020/6/20 0:21 */

public interface BookDao {

    /** * 查詢所有圖書 */
    List<Book> selectAll() throws SQLException;

    /** * 添加圖書 */
    void add(Book book) throws SQLException;

    /** * 更新圖書信息 */
    void update(Book book) throws SQLException;

    /** * 刪除圖書 */
    void delete(Book book) throws SQLException;

    /** * 根據書名模糊查詢 */
    List<Book> blurryName(Book book) throws SQLException;

    /** * 獲取具體的圖書信息 * @return */
    Book bookInfo(Book book) throws SQLException;

    /** * 分頁查詢圖書 */
    List<Book> selectAll(int currentPage,int pageSize) throws SQLException;
}

根據需要實現的功能,編寫對應的數據庫代碼配置文件 book-sql.properties

book.sql.selectAll=select * from book
book.sql.add=insert into book(book_name,isbn,category) value (?,?,?)
book.sql.update=update book set book_name=?,isbn=?,category=? where book_id=?
book.sql.delete=delete from book where book_id=?
book.sql.blurryName=select * from book where book_name like ?
book.sql.deleteBook=select * from book where book_id=?
book.sql.selectAllPage=select * from book limit ?,?

編寫 BookDao 接口的實現類 BookDaoImpl

package com.jmp.dao;

import com.jmp.pojo.Book;
import com.jmp.util.DBUtil;
import lombok.Data;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import java.sql.SQLException;
import java.util.List;
import java.util.ResourceBundle;

/** * @author JYH * @version 1.0 * @date 2020/6/20 0:41 */
@Data
public class BookDaoImpl implements BookDao{

    //查詢運行器
    static QueryRunner qr = null;
    //加載sql文件
    static ResourceBundle rb = ResourceBundle.getBundle("com.jmp.dao.book-sql");

    public BookDaoImpl(){
        //創建BookDaoImpl對象時加載QueryRunner
        qr = new QueryRunner();
    }

    @Override
    public List<Book> selectAll() throws SQLException {
        String sql = rb.getString("book.sql.selectAll");
        List<Book> list = qr.query(DBUtil.getConnection(),sql,new BeanListHandler<Book>(Book.class));
        return list;
    }

    @Override
    public void add(Book book) throws SQLException {
        String sql = rb.getString("book.sql.add");
        qr.update(DBUtil.getConnection(),sql,book.getBook_name(),book.getIsbn(),book.getCategory());
    }

    @Override
    public void update(Book book) throws SQLException {
        String sql = rb.getString("book.sql.update");
        qr.update(DBUtil.getConnection(),sql,book.getBook_name(),book.getIsbn(),book.getCategory(),book.getBook_id());
    }

    @Override
    public void delete(Book book) throws SQLException {
        String sql = rb.getString("book.sql.delete");
        qr.update(DBUtil.getConnection(),sql,book.getBook_id());
    }

    @Override
    public List<Book> blurryName(Book book) throws SQLException {
        String sql = rb.getString("book.sql.blurryName");
        List<Book> list = qr.query(DBUtil.getConnection(),sql,new BeanListHandler<Book>(Book.class),"%"+book.getBook_name()+"%");
        return list;
    }

    @Override
    public Book bookInfo(Book book) throws SQLException{
        String sql = rb.getString("book.sql.deleteBook");
        Book b = qr.query(DBUtil.getConnection(),sql,new BeanHandler<Book>(Book.class),book.getBook_id());
        return b;
    }

    @Override
    public List<Book> selectAll(int currentPage, int pageSize) throws SQLException {
        String sql = rb.getString("book.sql.selectAllPage");
        List<Book> list = qr.query(DBUtil.getConnection(),sql,new BeanListHandler<>(Book.class),((currentPage-1)*pageSize),pageSize);
        return list;
    }
}

5.編寫業務邏輯層

在service包下操作

編寫 BookService 接口,規定需要實現的業務

package com.jmp.service;

import com.jmp.pojo.Book;

import java.sql.SQLException;
import java.util.List;

/** * @author JYH * @version 1.0 * @date 2020/6/20 1:36 */
public interface BookService {
    /** * 查詢所有圖書 */
    List<Book> selectAll() throws SQLException;

    /** * 添加圖書 */
    void add(Book book) throws SQLException;

    /** * 更新圖書信息 */
    void update(Book book) throws SQLException;

    /** * 刪除圖書 */
    void delete(Book book) throws SQLException;

    /** * 根據書名模糊查詢 */
    List<Book> blurryName(Book book) throws SQLException;

    /** * 獲取刪除圖書的信息 * @return */
    Book bookInfo(Book book) throws SQLException;

    /** * 分頁查詢圖書(后期添加 --- 使用default關鍵字) */
    List<Book> selectAll(int currentPage,int pageSize) throws SQLException;
}

編寫 BookService 接口的實現類 BookServiceImpl

package com.jmp.service;

import com.jmp.dao.BookDao;
import com.jmp.dao.BookDaoImpl;
import com.jmp.pojo.Book;
import lombok.Data;

import java.sql.SQLException;
import java.util.List;

/** * @author JYH * @version 1.0 * @date 2020/6/20 1:37 */
@Data
public class BookServiceImpl implements BookService{

    BookDao bookDao = new BookDaoImpl();

    @Override
    public List<Book> selectAll() throws SQLException {
        return bookDao.selectAll();
    }

    @Override
    public void add(Book book) throws SQLException {
        bookDao.add(book);
    }

    @Override
    public void update(Book book) throws SQLException {
        bookDao.update(book);
    }

    @Override
    public void delete(Book book) throws SQLException {
        bookDao.delete(book);
    }

    @Override
    public List<Book> blurryName(Book book) throws SQLException {
        return bookDao.blurryName(book);
    }

    @Override
    public Book bookInfo(Book book) throws SQLException{
        return bookDao.bookInfo(book);
    }

    @Override
    public List<Book> selectAll(int currentPage, int pageSize) throws SQLException {
        return bookDao.selectAll(currentPage,pageSize);
    }
}

6.編寫控制台程序(C/S)

在view包下操作

編寫 BookManager 類,在控制台使用圖書管理系統的功能

package com.jmp.view;

import com.jmp.pojo.Book;
import com.jmp.service.BookService;
import com.jmp.service.BookServiceImpl;

import java.sql.SQLException;
import java.util.List;
import java.util.Scanner;

/** * @author JYH * @version 1.0 * @date 2020/6/20 1:47 */
public class BookManager {
    
    static Scanner sc = new Scanner(System.in);
    static BookService bookService = new BookServiceImpl();

    public static void main(String[] args) {
        while (true) {
            System.out.println("|----------------圖書管理系統-----------------|");
            System.out.println("|1-增加 2-刪除 3-修改 4-查找 5-顯示所有 0-退出|");
            System.out.println("|--------------------------------------|");
            System.out.println("請選擇業務");
            int x = sc.nextInt();
            switch (x) {
                case 1:
                    add();
                    break;
                case 2:
                    delete();
                    break;
                case 3:
                    update();
                    break;
                case 4:
                    bookLike();
                    break;
                case 5:
                    selectAll();
                    break;
                case 0:
                    System.out.println("程序已退出,歡迎再次使用!");
                    System.exit(0);
                    break;
                default:
                    System.out.println("輸入數據有誤,請重新輸入!");
                    break;
            }
        }
    }
    
    public static void add(){
        System.out.println("------------增加------------");
        System.out.println("圖書名稱:");
        String name = sc.next();
        System.out.println("ISBN編號:");
        String isbn = sc.next();
        System.out.println("圖書類別:");
        String category = sc.next();
        Book book = new Book(0,name,isbn,category);
        try {
            bookService.add(book);
            System.out.println("增加成功!---------------\n");
        } catch (SQLException e1) {
            e1.printStackTrace();
        }
    }

    public static void delete() {
        System.out.println("------------刪除------------");
        System.out.println("請輸入要刪除的圖書編號:");
        int id = sc.nextInt();
        Book book = new Book();
        book.setBook_id(id);
        try {
            book = bookService.bookInfo(book);
            System.out.println(book.toString());
            System.out.println("確認要刪除嗎?1-是 0-否");
            int cmd = sc.nextInt();
            if(1==cmd) {
                bookService.delete(book);
                System.out.println("刪除成功!");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

    public static void update() {
        System.out.println("------------修改------------");
        System.out.println("請輸入要修改圖書的編號:");
        int id = sc.nextInt();
        Book book = new Book();
        book.setBook_id(id);
        try {
            book = bookService.bookInfo(book);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        System.out.println(book.toString());
        System.out.println("請重新輸入圖書的信息:");
        System.out.println("圖書名稱:");
        String name = sc.next();
        System.out.println("ISBN編號:");
        String isbn = sc.next();
        System.out.println("圖書類別:");
        String category = sc.next();
        book = new Book(id,name,isbn,category);
        try {
            bookService.update(book);
            System.out.println("修改成功!---------------");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static void bookLike() {
        System.out.println("-------------模糊查詢------------");
        System.out.println("請輸入圖書名稱關鍵字:");
        String name = sc.next();
        Book book = new Book();
        book.setBook_name(name);
        try {
            List<Book> list = bookService.blurryName(book);
            for(Book b:list) {
                System.out.println(b.toString());
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

    public static void selectAll() {
        System.out.println("-------------查詢所有------------");
        try {
            List<Book> list = bookService.selectAll();
            for(Book book:list) {
                System.out.println(book.toString());
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

7.編寫業務控制層(B/S)

在servlet包下操作

編寫 BookServlet,對整體業務進行控制

package com.jmp.servlet;

import com.jmp.pojo.Book;
import com.jmp.service.BookService;
import com.jmp.service.BookServiceImpl;
import com.jmp.util.PageBean;

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.io.IOException;
import java.sql.SQLException;
import java.util.List;


/** * @author JYH * @version 1.0 * @date 2020/6/20 22:10 */
@WebServlet(name = "BookServlet",urlPatterns = "/BookServlet")
public class BookServlet extends HttpServlet {

    BookService bookService = new BookServiceImpl();

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String m = request.getParameter("m");
        if ("add".equals(m)){
            add(request,response);
        }else if("update".equals(m)){
            update(request,response);
        }else if("delete".equals(m)){
            delete(request,response);
        }else if("selectAll".equals(m)){
            selectAll(request,response);
        }else if("bookInfo".equals(m)){
            bookInfo(request,response);
        }else if ("blurryname".equals(m)){
            bookBlurryName(request, response);
        }
    }

    private void add(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
        String bookName = request.getParameter("book_name");
        String isbn = request.getParameter("isbn");
        String category = request.getParameter("category");
        Book book = new Book(0,bookName,isbn,category);
        System.out.println(book.toString());
        try {
            bookService.add(book);
            selectAll(request,response);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

    private void update(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
        String bookId = request.getParameter("book_id");
        String bookName = request.getParameter("book_name");
        String isbn = request.getParameter("isbn");
        String category = request.getParameter("category");
        Book book = new Book(Integer.parseInt(bookId),bookName,isbn,category);
        try {
            bookService.update(book);
            selectAll(request,response);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

    private void delete(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
        String bookId = request.getParameter("book_id");
        Book book = new Book();
        book.setBook_id(Integer.parseInt(bookId));
        try {
            bookService.delete(book);
            selectAll(request,response);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }

    PageBean pb = new PageBean();
    int pageUp = pb.getPage();
    int pageDown = pb.getPage();

    private void selectAll(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {

        if("pageUp".equals(request.getParameter("pageUp"))){
            System.out.println(request.getParameter("pageUp"));
            pb.setPage(pb.getPage()-1);
// request.setAttribute("pageUp",pb.getPage());
            if (pb.getPage() < 1){
                pb.setPage(1);
            }
            try {
                List<Book> booklist = bookService.selectAll(pb.getPage(),5);
                request.setAttribute("bookList",booklist);
                request.getRequestDispatcher("/views/booklist.jsp").forward(request,response);
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }else if("pageDown".equals(request.getParameter("pageDown"))){
            System.out.println(request.getParameter("pageDown"));
            pb.setPage(pb.getPage()+1);
// request.setAttribute("pageDown",pb.getPage());
            try {
                List<Book>  booklist = bookService.selectAll(pb.getPage(),5);
                request.setAttribute("bookList",booklist);
                if ("".equals(booklist)){
                    request.setAttribute("null_err","<h3>查詢內容為空請返回上一頁</h3>");
                }
                request.getRequestDispatcher("/views/booklist.jsp").forward(request,response);
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }else{
// request.setAttribute("pageUp",1);
// request.setAttribute("pageDown",2);
            pb.setPage(1);
            try {
                List<Book>  booklist = bookService.selectAll(pb.getPage(),5);
                request.setAttribute("bookList",booklist);
                request.getRequestDispatcher("/views/booklist.jsp").forward(request,response);
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

    }

/* private void selectAll(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { try { List<Book> booklist = bookService.selectAll(1,5); request.setAttribute("bookList",booklist); request.getRequestDispatcher("/views/booklist.jsp").forward(request,response); } catch (SQLException throwables) { throwables.printStackTrace(); } }*/


    private void bookInfo(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
        String bookId = request.getParameter("book_id");
        Book book = new Book();
        book.setBook_id(Integer.parseInt(bookId));
        try {
            Book b = bookService.bookInfo(book);
            request.setAttribute("b", b);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        request.getRequestDispatcher("/views/updatebook.jsp").forward(request, response);
    }

    private void bookBlurryName(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
        String keyName = request.getParameter("blurryname");
        Book book = new Book();
        book.setBook_name(keyName);
        try {
            List<Book> bookblurryList = bookService.blurryName(book);
            request.setAttribute("bookblurryList",bookblurryList);
            request.getRequestDispatcher("/views/blurrynamebook.jsp").forward(request,response);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}

8.編寫過濾器

在filter包下操作

編寫字符編碼過濾器 CharacterEncodingFilter,防止數據傳遞和頁面亂碼

package com.jmp.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import java.io.IOException;

/** * @author JYH * @version 1.0 * @date 2020/6/21 0:15 */
@WebFilter(
        filterName="CharacterEncodingFilter",
        urlPatterns="/*",
        initParams= {@WebInitParam(name="characterEncoding",value="utf-8")}
)
public class CharacterEncodingFilter implements Filter {
    private String characterEncoding;
    @Override
    public void destroy() {
    }

    @Override
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        System.out.println("characterEncoding="+characterEncoding);
        if(null!=characterEncoding) {
            req.setCharacterEncoding(characterEncoding);
            resp.setCharacterEncoding(characterEncoding);
        }
        chain.doFilter(req, resp);
    }

    @Override
    public void init(FilterConfig config) throws ServletException {
        characterEncoding = config.getInitParameter("characterEncoding");
    }
}

9.編寫前端頁面

在 web/views 文件夾下操作

編寫書籍添加頁面,addbook.jsp

<%--
  Created by IntelliJ IDEA.
  User: JYH
  Date: 2020/6/20
  Time: 20:56
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>添加圖書</title>
</head>
<body>
    <div align="center">
        <h3>添加圖書</h3>
        <form action="${pageContext.request.contextPath}/BookServlet?m=add" method="post">
            <table>
                <tr>
                    <td>圖書名稱</td>
                    <td><input type="text" name="book_name"></td>
                </tr>
                <tr>
                    <td>ISBN編號</td>
                    <td><input type="text" name="isbn"></td>
                </tr>
                <tr>
                    <td>圖書類型</td>
                    <td><input type="text" name="category"></td>
                </tr>
            </table>
            <input type="submit" value="添加">&nbsp;&nbsp;&nbsp;&nbsp;<input type="reset" value="重置">
        </form>
    </div>
</body>
</html>

編寫書籍模糊查詢頁面,blurrynamebook.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: JYH
  Date: 2020/6/21
  Time: 0:21
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>書名模糊查詢</title>
    <style> table,table tr th,table tr td{ border:1px solid #000; text-align:center; } table{ width:600px; border-collapse:collapse; } #index p{ padding-top:5px; padding-left:480px; } a{ text-decoration:none; } </style>
</head>
<body>
    <div align="center">
        <h3>書名模糊查詢</h3>

        <form action="${pageContext.request.contextPath}/BookServlet?m=blurryname" method="post">
            <input type="text" name="blurryname"><input type="submit" value="搜索"><br><br>
            <div id="index"><a href="/index.jsp">返回首頁</a></div>
            <table>
                <tr>
                    <td>圖書編號</td>
                    <td>圖書名稱</td>
                    <td>ISBN編號</td>
                    <td>圖書類別</td>
                    <td>選擇操作</td>
                </tr>
            <c:forEach items="${bookblurryList}" var="bookblurrylist">
                <tr>
                    <td>${bookblurrylist.book_id}</td>
                    <td>${bookblurrylist.book_name}</td>
                    <td>${bookblurrylist.isbn}</td>
                    <td>${bookblurrylist.category}</td>
                    <td>
                        <a href="${pageContext.request.contextPath}/BookServlet?m=bookInfo&book_id=${bookblurrylist.book_id}">修改</a>
                        <a href="${pageContext.request.contextPath}/BookServlet?m=delete&book_id=${bookblurrylist.book_id}" onclick="return confirm('您確定要刪除嗎?');">刪除</a>
                    </td>
                </tr>
            </c:forEach>
        </form>
        <br>
    </div>

</body>
</html>

編寫書籍列表頁面,booklist.jsp

<%--
  Created by IntelliJ IDEA.
  User: JYH
  Date: 2020/6/20
  Time: 21:48
  To change this tbooklate use File | Settings | File Tbooklates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>圖書列表</title>
    <style> table,table tr th,table tr td{ border:1px solid #000; text-align:center; } table{ width:600px; border-collapse:collapse; } #addbook{ width:600px; height:50px; } #addbook p{ padding-top:5px; padding-left:480px; } a{ text-decoration:none; } </style>
</head>
<body>
    <div align="center">
        <h3>所有圖書列表</h3>
        <div id="addbook">
            <p><a href="${pageContext.request.contextPath}/views/addbook.jsp">添加圖書</a></p>
            <p><a href="${pageContext.request.contextPath}/views/blurrynamebook.jsp">書名關鍵字查詢</a></p>
        </div>
        <br><br>
        <table>
            <tr>
                <td>圖書編號</td>
                <td>圖書名稱</td>
                <td>ISBN編號</td>
                <td>圖書類別</td>
                <td>選擇操作</td>
            </tr>
            <c:forEach items="${bookList}" var="booklist">
                <tr>
                    <td>${booklist.book_id}</td>
                    <td>${booklist.book_name}</td>
                    <td>${booklist.isbn}</td>
                    <td>${booklist.category}</td>
                    <td>
                        <a href="${pageContext.request.contextPath}/BookServlet?m=bookInfo&book_id=${booklist.book_id}">修改</a>
                        <a href="${pageContext.request.contextPath}/BookServlet?m=delete&book_id=${booklist.book_id}" onclick="return confirm('您確定要刪除嗎?');">刪除</a>
                    </td>
                </tr>
            </c:forEach>
        </table>
        ${null_err}
        <div>
            <a href="${pageContext.request.contextPath}/BookServlet?m=selectAll&pageUp=pageUp">上一頁</a>
            <a href="${pageContext.request.contextPath}/BookServlet?m=selectAll&pageDown=pageDown">下一頁</a>
        </div>
    </div>
</body>
</html>

編寫書籍更新頁面,updatebook.jsp

<%--
  Created by IntelliJ IDEA.
  User: JYH
  Date: 2020/6/20
  Time: 21:31
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
    <title>更新圖書</title>
</head>
<body>
    <div align="center">
        <h3>修改圖書</h3>
        <form action="${pageContext.request.contextPath}/BookServlet?m=update" method="post">
            <table>
                <tr>
                    <td>圖書編號</td>
                    <td><input type="text" name="book_id" value="${b.book_id}" readonly="readonly"></td>
                </tr>
                <tr>
                    <td>圖書名稱</td>
                    <td><input type="text" name="book_name" value="${b.book_name}"></td>
                </tr>
                <tr>
                    <td>ISBN編號</td>
                    <td><input type="text" name="isbn" value="${b.isbn}"></td>
                </tr>
                <tr>
                    <td>圖書類別</td>
                    <td><input type="text" name="category" value="${b.category}"></td>
                </tr>
            </table>
            <input type="submit" value="修改">&nbsp;&nbsp;&nbsp;&nbsp;<input type="reset" value="重置">
        </form>
    </div>
</body>
</html>

在 web 文件夾下操作

更改 index.jsp 代碼,完善程序入口

<%-- Created by IntelliJ IDEA. --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>歡迎使用圖書管理系統</title>
  </head>
  <body>
  <div align="center">
    <h3><a href="views/addbook.jsp">添加圖書</a></h3>
    <h3><a href="BookServlet?m=selectAll">查詢所有圖書</a></h3>
    <h3><a href="views/blurrynamebook.jsp">圖書名稱關鍵字查詢圖書</a></h3>
    <%--<h3><a href="views/updatebook.jsp">更新圖書</a></h3>--%>
  </div>
  </body>
</html>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM