Java Web实现简易的图书管理系统

这是一个使用Java Web相关的知识做出来的网页图书管理系统,使用的数据库为mysql。

程序中实现了登录功能和对图书表、图书类别表的增删查改功能。

因为我对Java Web相关的知识的了解还非常有限,所以这个程序的功能和实现上都还有着很多需要完善的地方。

运行效果:

使用到的知识:

java、servlet、jsp、jdbc

html、css、js、jquery、bootstrap

运行环境:

Windows JDK9 IDEA2020 MySQL5.7.29

问题:

编写程序期间我遇到了很多问题,其中有两个大问题困扰了我很久,在此我将其记录下来:

第一个问题是,(idea)java web项目无法正常使用 项目/lib路径下的项目依赖,需要将其添加到web/WEB-INF/lib路径下才可以。因为这个问题我耽误了很久的时间,因为这个问题在搜索引擎上搜不到答案,而且它也不是一个逻辑上的问题,让别人看别人也看不出来。最终我还是在csdn上胡乱搜索的时候,碰巧看到了这个问题的答案。在此我非常感谢提供了该问题答案的那一位博主。

第二个问题是,在jsp页面上,我始终不知道怎么用jstl标签和el表达式获取从servlet传来的信息,这个问题是我对相关知识不熟悉导致的。最终我选择了使用<%%>最原始的方式实现了相关功能。

其他:

以后在开始动手写一个项目之前,尤其是以后的web项目这样的前端和后端都有的项目时,一定要保证自己已经熟悉了所学的知识,最好能跟着别人先做一个类似的项目,不然会面临自己没有见过的困难,而且开发效率也会很低。

一开始,我是准备使用我刚学的原生spring框架的ioc和jdbc template功能来辅助完成这个项目的,但后来因为使用jdbc模板操作数据库时程序始终会出现部署工件失败的问题,所以放弃了。对jdbc封装的类我是从另一位博主的文章上找的

https://blog.csdn.net/weixin_36380516/article/details/72904214,非常感谢这位博主。

代码:

下面放出部分代码,如果您想要查看该程序的完整代码,请私信我发给您

LoginServlet.java

package 

BookDaoImpl.java

package main.java.dao;import main.java.entity.Book;import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;public class BookDaoImpl implements BookDao {@Overridepublic void add(Book book) {String sql = "insert into `book` (book_name,book_author,book_price,book_desc,book_type_id) values(?,?,?,?,?)";MyJDBC.insert(sql, true, book.getBookName(), book.getBookAuthor(), book.getBookPrice(), book.getBookDesc(), book.getBookTypeId());}@Overridepublic void update(Book book) {String sql = "update `book` set `book_name`=?, book_author=?, book_price=?, book_desc=?, book_type_id=? WHERE book_id=?";MyJDBC.execute(sql,book.getBookName(), book.getBookAuthor(), book.getBookPrice(), book.getBookDesc(), book.getBookTypeId(), book.getBookId());}@Overridepublic List<Book> queryAll() {return whereQuery("select * from `book`");}@Overridepublic void delete(String id) {String SQL = "delete from `book` where book_id=?";MyJDBC.execute(SQL, id);}/*** 根据sql参数查找全部结果*/@Overridepublic List<Book> whereQuery(String sql) {ResultSet result = MyJDBC.query(sql);List<Book> bookList = new ArrayList<>();try {while (result.next()) {Book book = new Book();book.setBookId(result.getInt(1) + "");book.setBookName(result.getString(2));book.setBookAuthor(result.getString(3));book.setBookPrice(result.getString(4));book.setBookDesc(result.getString(5));book.setBookTypeId(result.getInt(6) + "");bookList.add(book);}}catch (Exception e) {e.printStackTrace();}return bookList;}
}

index.jsp

<%--Created by IntelliJ IDEA.User: ASUSDate: 2020/9/18Time: 19:59To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%@ page import="main.java.entity.BookType" %>
<%@ page import="main.java.service.BookTypeService" %>
<%@ page import="main.java.service.BookService" %>
<%@ page import="main.java.entity.Book" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<!-- 登录界面 --><!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><title>首页</title><link rel="stylesheet" type="text/css" href="/webapps/css/bootstrap-theme.css"/><link rel="stylesheet" type="text/css" href="/webapps/css/bootstrap.css"/><link rel="stylesheet" type="text/css" href="/webapps/css/index.css"/>
</head><body><sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver"url="jdbc:mysql://localhost:3306/books_management?useUnicode=true&characterEncoding=utf-8"user="root"  password="123456"/><div class="topbar"><div class="title col-lg-2 col-lg-offset-5">图书管理系统</div></div><div class="content"><div class="sidebar"><ul><li style="background-color: #4c7bd2; box-shadow:0px 0px 6px black inset;"><span>图书管理</span></li><li><span>图书类别管理</span></li></ul></div><ul class="win-ul"><li style="display: block;" id="win-1"><div class="top" style="width: 860px;"><div class="top-content"><form action="" method="get"><input type="text" class="form-control" name="bookName" placeholder="图书名称"style="width:260px;"/><input type="text" class="form-control" name="bookAuthor" placeholder="图书作者"style="width:260px; margin-left: 30px;"/><sql:query dataSource="${snapshot}" var="result_bookTypeId">SELECT * from books_type;</sql:query><select class="form-control" style="width: 100px; margin-left: 30px;" name="bookTypeId"><option>全部</option><c:forEach var="row" items="${result_bookTypeId.rows}"><option>${row.book_type_id}</option></c:forEach></select><button type="submit" class="btn btn-primary query-but" style="margin-left: 60px;">&nbsp;&nbsp;&nbsp;查询&nbsp;&nbsp;&nbsp;</button></form></div></div><div class="win-table table-responsive"><!-- 添加界面 --><div class="table-add-back"> <!-- 背景 --><div class="table-add-content"> <!-- 内容 --><div class="close-but btn btn-default">X</div><label class="title">图书添加</label><form class="input-box" action="/bookAddServlet" method="get"><input type="text" name="bookNameAdd" class="table-add-text form-control text-flag" placeholder="图书名称"/><input type="text" name="bookAuthorAdd" class="table-add-text form-control text-flag" placeholder="图书作者"/><input type="text" name="bookPriceNameAdd" class="table-add-text form-control text-flag" placeholder="图书价格"/><sql:query dataSource="${snapshot}" var="result_bookTypeId">SELECT * from books_type;</sql:query><select class="form-control" style="width: 100px; margin-left: 22px;" name="bookTypeIdAdd"><c:forEach var="row" items="${result_bookTypeId.rows}"><option>${row.book_type_id}</option></c:forEach></select><textarea class="table-add-text form-control text-flag" rows="6" name="bookDesc" placeholder="图书描述"></textarea><button type="submit" class="table-add-but btn btn-primary">添加</button></form></div></div><input type="button" name="table_add" value="&nbsp;&nbsp;添加&nbsp;&nbsp;" class="btn btn-success add-button" style="font-weight: bold;"/><table class="table table-striped table-bordered table-hover" style="width: inherit;"><thead><tr><td>图书id</td><td>图书名称</td><td>图书作者</td><td>图书价格</td><td>图书描述</td><td>图书类别id</td><td class="oper-cell-book">操作</td></tr></thead><%-- 图书表格内容 --%><sql:query dataSource="${snapshot}" var="result_book">SELECT * from `book`;</sql:query><tbody class="table-tbody"><%String bookName = request.getParameter("bookName");;String bookAuthor = request.getParameter("bookAuthor");String bookTypeId = request.getParameter("bookTypeId");//要执行的sql语句前部分StringBuilder sqlBuilder = new StringBuilder("SELECT * FROM book");boolean flag_WHERE = false; //是否添加WHERE标记//图书名文本区不为空if (!(bookName == null)) {sqlBuilder.append(" WHERE " + "book_name LIKE '%"+ bookName +"%'");flag_WHERE = true;}//图书作者文本区不为空if (!(bookAuthor == null)) {if(!flag_WHERE) {sqlBuilder.append(" WHERE ");flag_WHERE = true;}elsesqlBuilder.append(" AND ");sqlBuilder.append("book_author LIKE '%"+ bookAuthor +"%'");}if(bookTypeId != null) {//不为全部时if (!bookTypeId.equals("全部")) {if(!flag_WHERE) {sqlBuilder.append(" WHERE ");flag_WHERE = true;}elsesqlBuilder.append(" AND ");sqlBuilder.append("book_type_id = '"+ bookTypeId +"'");}}String bookSQL = sqlBuilder.toString();     //得到需要执行的sql语句System.out.println(bookSQL);BookService bookService = new BookService();List<Book> bookList = bookService.whereQueryBook(bookSQL);for(Book book : bookList) {out.print("<tr>");out.print("<td>" + book.getBookId() + "</td>");out.print("<td>" + book.getBookName() + "</td>");out.print("<td>" + book.getBookAuthor() + "</td>");out.print("<td>" + book.getBookPrice() + "</td>");out.print("<td>" + book.getBookDesc() + "</td>");out.print("<td>" + book.getBookTypeId() + "</td>");out.print("<td>" +"<a  class="updent-but-book" href="" + request.getContextPath() + "/webapps/bookUpdate.jsp?id=" + book.getBookId() + "">修改</a>"+"<a  class="updent-but-book" href="" + request.getContextPath() + "/BookDeleteServlet?id=" + book.getBookId() + "">删除</a>"+"</td>");out.print("</tr>");}%></tbody></table><%--          暂时不做分页--%>
<%--          <div class="bottom-but">--%>
<%--            <ul class="bottom-but-ul">--%>
<%--              <li>1</li>--%>
<%--            </ul>--%>
<%--          </div>--%></div></li><!-- 图书类别管理界面 --><li id="win-2"><div class="top"><div class="top-content"><form action="" method="get"><input type="text" class="form-control query-text" name="bookTypeName" placeholder="图书类别名称"style="width:400px;"/><button type="submit" class="btn btn-primary query-but" style="margin-left: 50px;">&nbsp;&nbsp;&nbsp;查询&nbsp;&nbsp;&nbsp;</button></form></div></div><div class="win-table table-responsive"><!-- 添加界面 --><div class="table-add-back"> <!-- 背景 --><div class="table-add-content"> <!-- 内容 --><div class="close-but btn btn-default">X</div><label class="title">图书类别添加</label><form class="input-box" action="/BookTypeAddServlet" method="get"><input type="text" name="bookTypeNameAdd" class="table-add-text form-control text-flag" placeholder="图书类别名称"/><textarea class="table-add-text form-control text-flag" rows="6" name="bookTypeDesc" placeholder="图书类别描述"></textarea><button type="submit" class="table-add-but btn btn-primary">添加</button></form></div></div><input type="button" name="table_add" value="&nbsp;&nbsp;添加&nbsp;&nbsp;" class="btn btn-success add-button" style="font-weight: bold;"/><table class="table table-striped table-bordered table-hover" style="width: inherit;"><thead><tr><td>图书类别id</td><td>图书类别名称</td><td>图书类别描述</td><td class="oper-cell">操作</td></tr></thead><tbody class="table-tbody"><%String bookTypeName = request.getParameter("bookTypeName");String sql1 = "SELECT * FROM books_type WHERE book_type_name LIKE "%"+ bookTypeName +"%"";if(bookTypeName == null || bookTypeName.equals("")) {sql1 = null;}String sql = sql1;System.out.println(sql + "sql");if(sql == null) {sql = "select * from `books_type`";}System.out.println(sql + "sql");BookTypeService service = new BookTypeService();List<BookType> bookTypeList = service.whereQueryBookType(sql);for(BookType type : bookTypeList) {out.print("<tr>");out.print("<td>" + type.getTypeId() + "</td>");out.print("<td>" + type.getTypeName() + "</td>");out.print("<td>" + type.getTypeDesc() + "</td>");out.print("<td>" +"<a  class="updent-but-book" href="" + request.getContextPath() + "/webapps/bookTypeUpdate.jsp?id=" + type.getTypeId() + "">修改</a>"+"<a  class="updent-but-book" href="" + request.getContextPath() + "/BookTypeDeleteServlet?id=" + type.getTypeId() + "">删除</a>"+"</td>");out.print("</tr>");}%></tbody></table><%--          暂时不做分页--%>
<%--          <div class="bottom-but">--%>
<%--            <ul class="bottom-but-ul">--%>
<%--              <li>1</li>--%>
<%--            </ul>--%>
<%--          </div>--%></div></li></ul></div><script type="text/javascript" src="/webapps/javascript/jquery.js"></script><script type="text/javascript" src="/webapps/javascript/index.js"></script>
</body>
</html>

----

如果您有什么问题,也欢迎提出,感谢支持。

web图书销售管理系统_Java Web实现简易的图书管理系统相关推荐

  1. java web信息管理系统_Java web学生信息管理系统

    [实例简介] 基于Jsp&servlet;+JavaBean的学生信息管理系统,实现了学生成绩.课程.教师的管理 [实例截图] [核心代码] Javaweb学生信息管理系统 └── Java ...

  2. c语言课程设计图书销售,C语言程序课程设计报告-图书销售管理系统.doc

    图书销售管理系统设计.......................................................................................... ...

  3. java web学什么软件_java web开发是什么?该怎么学习?

    Java中有前端这个开发方向,上回我们说到了javaweb是什么?你们应该对javaweb有了一定的了解了,那你们知道该如何学习web吗?小编这里整理了一些相关知识,快来看看吧. 一.javaweb是 ...

  4. java web初级面试题_Java Web应用程序初学者教程

    java web初级面试题 Java Web Application is used to create dynamic websites. Java provides support for web ...

  5. java图书销售系统_基于springboot的小型图书销售系统 源码下载

    源码介绍 本系统采用B/S架构,服务器用的是tomcat服务器,数据库使用mysql,数据库连接池使用的是阿里开源的druid连接池,实现了前后端分离,后端框架基于spring boot整合mybat ...

  6. 《网上图书销售系统》功能需求 建立“顾客建立图书订单”的顺序图

    <网上图书销售系统>功能需求 (1)查询图书信息:顾客登录该系统后,可根据书名对所需的图书信息进行查询. (2)订购图书:顾客查询到所需图书后,可提交图书订单. (3)维护订单信息:顾客可 ...

  7. python制作学生管理系统_Python——面向对象,简易学生信息管理系统

    一.概述 1.1涉及到的知识点 项目开发:创建项目,创建包,导入包: 面向对象:静态方法,继承,内置函数,自定义函数: 数据类型:列表,字典,字符串.列表.字典的转换和自动生成导向: 异常处理:捕获异 ...

  8. java物流管理系统_java web物流管理系统

    项目描述 简单的物流管理系统,具备简单的增删查改,适合初学者操作 运行环境 jdk7+tomcat8+mysql+IntelliJ IDEA+maven 项目技术(必填) jquery+jscript ...

  9. MySQL开发医药管理系统_java Web开发医药后台管理系统mysql版本源代码下载,支持中英文...

    package com.lyq.dao; import com.lyq.persistence.Medicine; import com.lyq.util.HibernateFilter; /** * ...

最新文章

  1. php比较运算符案列,PHP实例:PHP比较运算符的详细介绍
  2. 入门4:PHP 语法基础1
  3. android 之Dialog对话框(简易版)
  4. css中小知识点总结
  5. yum 下载全量依赖 rpm 包及离线安装(终极解决方案)
  6. ubuntu16.04下安装有道词典
  7. win10部署webservice网站的步骤
  8. linux操作系统信号捕捉函数之sigaction用法小结
  9. 使用java IO来读写文件
  10. 计算两个经纬度的距离_HTML5 地理定位+地图 API:计算用户到商家的距离
  11. mysql中有time吗_mysql中 datatime与timestamp的区别说明
  12. 科大讯飞语音识别芯片_科大讯飞造家电专用语音芯片 市场机会在哪里?
  13. 【引用】成熟人格六要素
  14. 计算机怎么应用最小二乘法作图,最小二乘法应用
  15. python+基于Python的资产管理系统 毕业设计-附源码201117
  16. 云计算发展趋势-华为HCIA云计算学习笔记六
  17. 【运动学】基于matlab EKF姿态估计【含Matlab源码 1638期】
  18. diy 文件服务器,文件服务器diy
  19. mysql8.0源码分析——文件管理fil_system
  20. 怎么查找计算机的内存卡,如何查看自己电脑的内存卡的牌子?

热门文章

  1. 传奇服务器端武器特效怎么修改,辐射4 装备效果自定义修改教程 怎么给装备添加特效...
  2. Windows滑动关机
  3. Maven仓库配置环境变量
  4. 调试经验——Excel中去除单元格内的换行符(Chr(10))的四种方法
  5. 四川2名干部任前公示 王菲拟提名为广元市市长-四川-广元-任前公示
  6. PHP按字符串长度分割成数组代码(中英文混杂字符进行分割)
  7. 《如何使用C++程序让电脑死机》
  8. 信心,是成功的第一秘诀
  9. 一片面膜百亿市场,敷尔佳背后的“她经济”有多强?
  10. 翻译: 使用非线性卡尔曼滤波来估计信号