栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

友佳书屋实训项目(二)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

友佳书屋实训项目(二)

二、 图书

分析实体

图书,单词为 Book 实体的名称就定义下来了
|— 属性:
图书编号 bookId(用于确定的唯一性);
图书名称 bookName;
图书作者 author ;
图书单价 price ; 类型是 double
出版社 publish ;
图书封面 bookPic ;
库存 count 类型是 int
类目 category{ 类型: Category}

1.1 实体类:
   1, 定义属性变量
   2,使用快捷键Alt+Insert 生成getter和setter方法
   3, 使用快捷键Alt+Insert 生成toString方法,便于打印查看具体数据
   4,使用快捷键Alt+Insert  生成构造方法
    4.1, 有参数的构造方法
    4.2, 无参数的构造方法
 package cn.javabs.entity;

public class Book {

    private int bookId;
    private String bookName;
    private String publish;// 出版社
    private double price; //  为什么不用float类型,因为默认就是double 、其次  使用float类型定义,  小数后需要添加f
                                                                        // 如float  f1 = 6.5f
    private String author;
    private int count ;
    private String bookPic ;
    private Category category;

    public Book(int bookId, String bookName, String publish, double price, String author, int count, String bookPic, Category category) {
        this.bookId = bookId;
        this.bookName = bookName;
        this.publish = publish;
        this.price = price;
        this.author = author;
        this.count = count;
        this.bookPic = bookPic;
        this.category = category;
    }

    public Book(String bookName, String publish, double price, String author, int count, String bookPic, Category category) {
        this.bookName = bookName;
        this.publish = publish;
        this.price = price;
        this.author = author;
        this.count = count;
        this.bookPic = bookPic;
        this.category = category;
    }

    public Book() {
        super();
    }

    @Override
    public String toString() {
        return "Book{" +
                "bookId=" + bookId +
                ", bookName='" + bookName + ''' +
                ", publish='" + publish + ''' +
                ", price=" + price +
                ", author='" + author + ''' +
                ", count=" + count +
                ", bookPic='" + bookPic + ''' +
                ", category=" + category +
                '}';
    }

    public int getBookId() {
        return bookId;
    }

    public void setBookId(int bookId) {
        this.bookId = bookId;
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public String getPublish() {
        return publish;
    }

    public void setPublish(String publish) {
        this.publish = publish;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    public String getBookPic() {
        return bookPic;
    }

    public void setBookPic(String bookPic) {
        this.bookPic = bookPic;
    }

    public Category getCategory() {
        return category;
    }

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


1.2 编写Service层

Service层有 接口和实现类
(1)先去编写接口,接口的命名规范为 [实体类的名称+ Service],本接口为BookService,实现类为BookServiceImpl
(2)考虑该接口内哪些功能,功能对应的是方法。
功能如下:
①增加图书
②删除图书
③修改图书
④查询所有图书
⑤根据类目查询图书
⑥根据图书名称查询图书详细信息
⑦根据图书编号查询图书
对应的是七个方法:
增加图书方法, 参数列表是:Book book; 返回值类型为int
删除图书方法, 参数列表是:int bookId; 返回值类型为int
修改图书方法, 参数列表是Book book; 返回值类型为int
查询所有图书方法, 无参数 返回值类型为List;
【因为查询的所有类目,不再是单一的一个类目,需要有容器存储所有类目对象,该容器合适的是集合,便于查询的是ArrayList集合。{ArrayList特性是 查询快、增删慢 | linkedList特性是 查询慢、增删快}】
根据类目查询图书, 参数列表是Category category; 返回值类型为List;
根据图书名称查询图书, 参数列表是String bookName; 返回值类型为List;
根据图书编号查询图书,参数列表是:int bookId; 返回值类型为Book;
【因为查询的是一个类目,所有就是对象存储。】

代码如下:

package cn.javabs.service;

import cn.javabs.entity.Book;
import cn.javabs.entity.Category;

import java.util.List;

public interface BookService {
    int addBook(Book book);
    int delBook(int bookId);
    int editBook(Book book);


    List findAllBooks();

    List findBookByCategory(Category category);

    List findBookByBookName(String bookName);

    Book findBookById(int bookId);

}


BookServiceImpl实现类具体操作与上篇雷同,不再截图展示具体过程。

package cn.javabs.service.impl;

import cn.javabs.dao.BookDao;
import cn.javabs.dao.impl.BookDaoImpl;
import cn.javabs.entity.Book;
import cn.javabs.entity.Category;
import cn.javabs.service.BookService;

import java.util.List;

public class BookServiceImpl implements BookService {

    BookDao bookDao =  new BookDaoImpl();
    
    @Override
    public int addBook(Book book) {
        return bookDao.add(book);
    }

    @Override
    public int delBook(int bookId) {
        return bookDao.del(bookId);
    }

    @Override
    public int editBook(Book book) {
        return bookDao.edit(book);
    }

    @Override
    public List findAllBooks() {
        return bookDao.getAllBooks();
    }

    @Override
    public List findBookByCategory(Category category) {
        return bookDao.getBookByCategory(category);
    }

    @Override
    public List findBookByBookName(String bookName) {
        return bookDao.getBookByBookName(bookName);
    }

    @Override
    public Book findBookById(int bookId) {
        return bookDao.getBookById(bookId);
    }
}

1.2 编写Dao层

Dao层有 接口和实现类


package cn.javabs.dao;

import cn.javabs.entity.Book;
import cn.javabs.entity.Category;

import java.util.List;

public interface BookDao {
    
    int add(Book book);

    
    int del(int bookId);

    
    int edit(Book book);

    
    List getAllBooks();

    
    List getBookByCategory(Category category);

    
    List getBookByBookName(String bookName);

    
    Book getBookById(int bookId);
}


package cn.javabs.dao.impl;

import cn.javabs.dao.BookDao;
import cn.javabs.entity.Book;
import cn.javabs.entity.Category;
import cn.javabs.util.DruidUtil;
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;

public class BookDaoImpl implements BookDao {

    QueryRunner qr = new QueryRunner(DruidUtil.getDataSource());

    
    @Override
    public int add(Book book) {
        try {
            return qr.update("insert into book(bookName,publish,price,author,count,bookPic,categoryId)",
            book.getBookName(),book.getPublish(),book.getPrice(),book.getAuthor(),book.getCount(),book.getBookPic(),book.getCategory().getCategoryId());
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    
    @Override
    public int del(int bookId) {
        try {
            return qr.update("delete from book where bookId = ?",bookId);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    
    @Override
    public int edit(Book book) {
        try {
            return qr.update("update book set bookName = ?,publish =?,price =? ,author =?,count = ?,bookPic = ?,categoryId =? where  bookId = ? ",
                    book.getBookName(),
                    book.getPublish(),
                    book.getPrice(),
                    book.getAuthor(),
                    book.getCount(),
                    book.getBookPic(),
                    book.getCategory().getCategoryId(),
                    book.getBookId()
            );
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    
    @Override
    public List getAllBooks() {
        try {
            return qr.query("select * from book",new BeanListHandler(Book.class));
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    
    @Override
    public List getBookByCategory(Category category) {
        try {
            return qr.query("select * from book,category where book.categoryId = category.categoryId and categoryName = ? ",
                    new BeanListHandler(Book.class),category.getCategoryName());
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    
    @Override
    public List getBookByBookName(String bookName) {
        try {
            return qr.query("select * from book where  bookName = ?",new BeanListHandler(Book.class),bookName);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    
    @Override
    public Book getBookById(int bookId) {
        try {
            return qr.query("select * from book where  bookId = ?",new BeanHandler(Book.class),bookId);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
}



难点来了?
  • 图书添加页面的上传功能
  • 图书添加页面的类目回显功能
添加图书页面 : addBook.jsp
<%--
  Created by IntelliJ IDEA.
  User: Mryang
  Date: 2021/10/11
  Time: 14:18
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--不要遗忘我咯,否则c标签无法使用啦--%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


    添加图书


图书名称:
图书作者:
图书单价:
图书出版社:
图书库存:
图书类目:
上传图片:

初步编写BookServlet

package cn.javabs.web.servlet;

import cn.javabs.entity.Category;
import cn.javabs.service.CategoryService;
import cn.javabs.service.impl.CategoryServiceImpl;

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.util.List;

@WebServlet("/bookServlet")
public class BookServlet extends HttpServlet {

    CategoryService cs =  new CategoryServiceImpl();

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

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");

        String op = request.getParameter("op");
        switch (op){
            case "toAddBook":
                toAddBook(request,response);
                break;
            case "addBook" :
                addBook(request, response);
                break;
            case "delBook" :
                delBook(request, response);
                break;
            case "editBook" :
                editBook(request, response);
                break;
            case "updateBook" :
                updateBook(request, response);
                break;
            case "bookList" :
                bookList(request, response);
                break;

            default:
                System.out.println("前台传递的参数有误,请查正");
                break;
        }
    }
    // 去添加图书页面的跳转
    private void toAddBook(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        List categoryList = cs.findAllCategory();

        request.setAttribute("list",categoryList);

        request.getRequestDispatcher("addBook.jsp").forward(request,response);
    }

    private void addBook(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
        String bookName = request.getParameter("bookName");
        String publish = request.getParameter("publish");
        String sprice = request.getParameter("price");//  类型不对、需转化为Double
        double price = Double.parseDouble(sprice);
        String author = request.getParameter("author");
        String scount = request.getParameter("count");//  类型不对、需转化为int
        int count = Integer.parseInt(scount);
      //  String bookPic = request.getParameter("bookPic");
        String categoryName = request.getParameter("categoryName");
        //TODO  没写完,稍后继续

    }

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

    }

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

    }

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

    }

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

    }
}



提示页面进行‘改造’ message.jsp
<%--
  Created by IntelliJ IDEA.
  User: Mryang
  Date: 2021/10/11
  Time: 14:10
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


        
${msg}
还有 秒跳转
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/317935.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号