当前位置: 首页 > news >正文

Java项目:29 基于SpringBoot+thymeleaf实现的图书管理系统

作者主页:源码空间codegym

简介:Java领域优质创作者、Java项目、学习资料、技术互助

文中获取源码

项目介绍

基于SpringBoot+thymeleaf实现的图书管理系统分为管理员、读者两个登录角色,一共是8个功能模块

管理员权限

图书管理:

  • 添加图书:书名、作者、出版社、ISBM、简介、价格、出版日期、分类、数量
  • 查询图书:根据书名或分类查询
  • 删除图书:点击删除按钮即可
  • 修改图书:点击修改按钮即进入修改界面

用户管理:

  • 添加用户:根据角色添加用户或者管理员
  • 用户管理:对存在的用户或管理员进行删除,修改,查询

借还管理:用户借还书自动添加信息,如果超过指定日期,会显示催还按钮

修改密码:对自己的登录密码进行修改,修改成功后退出系统到login页面

读者权限

图书查询:根据书名或者分类进行查询

个人信息:查看个人详细信息:读者号、姓名、用户名、性别、生日、地址、电话、角色

我的借还:

  • 我想还书:显示所有未还图书以及图书状态,如果图书超期或者到应还日期前15天,才能进行续借
  • 借还记录:显示所有已还图书和用户丢失图书进行赔偿的图书借还日志

图书挂失:显示读者所有未还图书,附带挂失按钮,点击挂失 解挂:解挂 赔偿

修改密码:对自己的登录密码进行修改,修改成功后退出系统到login页面

点击查看演示视频

环境要求

1.运行环境:最好是java jdk1.8,我们在这个平台上运行的。其他版本理论上也可以。

2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;

3.tomcat环境:Tomcat7.x,8.X,9.x版本均可

4.硬件环境:windows7/8/10 4G内存以上;或者Mac OS;

5.是否Maven项目:是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven.项目

6.数据库:MySql5.7/8.0等版本均可;

技术栈

项目运行环境:mysql5.7 + idea2020.3 + windows10 + maven + MySQL

服务端技术选型:SpringBoot + MybatisPlus + MySQL

前端视图模板及js库:Thymeleaf + bootstrap + jQuery

使用说明

1.使用Navicati或者其它工具,在mysql中创建对应sq文件名称的数据库,并导入项目的sql文件;

2.使用IDEA/Eclipse/MyEclipse导入项目,修改配置,运行项目;

3.将项目中config-propertiesi配置文件中的数据库配置改为自己的配置,然后运行;

运行指导

idea导入源码空间站顶目教程说明(Vindows版)-ssm篇:

http://mtw.so/5MHvZq

源码看好后直接在网站付款下单即可,付款成功会自动弹出百度网盘链接,网站地址:http://codegym.top。

其它问题请关注公众号:IT小舟,关注后发送消息即可,都会给您回复的。若没有及时回复请耐心等待,通常当天会有回复

运行截图

前端界面

登录页面

微信截图_20240228001025

管理员

微信截图_20240228001052

微信截图_20240228001059

微信截图_20240228001105

微信截图_20240228001117

读者

微信截图_20240228001146

微信截图_20240228001151

微信截图_20240228001157

代码

LoginCheckFilter

package com.xunmaw.book.filter;import com.xunmaw.book.entity.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.springframework.util.AntPathMatcher;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** 检查用户是否已经完成登录*/
@Order(1)
@WebFilter(filterName = "loginCheckFilter",urlPatterns = "/*")
@Slf4j
public class LoginCheckFilter implements Filter{//路径匹配器,支持通配符public static final AntPathMatcher PATH_MATCHER = new AntPathMatcher();@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("过滤器生效.........");HttpServletRequest request = (HttpServletRequest) servletRequest;HttpServletResponse response = (HttpServletResponse) servletResponse;//1、获取本次请求的URIString requestURI = request.getRequestURI();// /backend/index.htmllog.info("拦截到请求:{}",requestURI);//定义不需要处理的请求路径String[] urls = new String[]{//登录需要用到的路径"/static/js/**","/static/css/**","/static/images/**","/static/js/**","/login","/index","/login.html","/",};//2、判断本次请求是否需要处理boolean check = check(urls, requestURI);//3、如果不需要处理,则直接放行if(check){log.info("本次请求{}不需要处理",requestURI);filterChain.doFilter(request,response);return;}//4-2、判断登录状态,如果已登录,则直接放行if(request.getSession().getAttribute("LoginSuccess") != null){log.info("用户已登录,用户为:{}",request.getSession().getAttribute("LoginSuccess"));User user =  (User) request.getSession().getAttribute("LoginSuccess");Long userId =   user.getId().longValue();BaseContext.setCurrentId(userId);filterChain.doFilter(request,response);return;}log.info("用户未登录");request.setAttribute("UnLogin","用户未登录");//5、如果未登录则回退到登陆界面request.getRequestDispatcher("/").forward(request,response);return;}/*** 路径匹配,检查本次请求是否需要放行* @param urls* @param requestURI* @return*/public boolean check(String[] urls,String requestURI){for (String url : urls) {boolean match = PATH_MATCHER.match(url, requestURI);if(match){return true;}}return false;}
}

相关文章:

Java项目:29 基于SpringBoot+thymeleaf实现的图书管理系统

作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 基于SpringBootthymeleaf实现的图书管理系统分为管理员、读者两个登录角色,一共是8个功能模块 管理员权限 图书管理:…...

Unity游戏项目中的优化之摄像机视锥体剔除优化

在项目中一个完成的游戏场景一般都会有成千上百的物体,假如都去让GPU全部渲染一遍,那带来的消耗其实是挺大的,很多不在摄像机范围内的物体其实没有必要去渲染,尽管GPU自带剔除,但是如果从CPU阶段就提交给GPU指令——哪…...

超1000本计算机经典书籍分享(均可免费下载)

今天给大家推荐两个开源项目,均可百度网盘下载: 1 https://gitee.com/ForthEspada/CS-Books 超过1000本的计算机经典书籍、个人笔记资料以及作者在各平台发表文章中所涉及的资源等。 书籍资源包括C/C、Java、Python、Go语言、数据结构与算法、操作系统…...

AI大模型提供商有哪些?

AI大模型提供商:引领人工智能创新浪潮 随着人工智能技术的迅猛发展,AI大模型成为了推动行业变革和创新的核心驱动力之一。作为AI领域的重要参与者,AI大模型提供商扮演着关键的角色。本文将围绕这一主题,介绍几家在AI大模型领域具…...

【Linux】部署单机项目(自动化启动)

目录 一.jdk安装 二.tomcat安装 三.MySQL安装 四.部署项目 一.jdk安装 1.上传jdk安装包 jdk-8u151-linux-x64.tar.gz 进入opt目录,将安装包拖进去 2.解压安装包 防止后面单个系列解压操作,我这边就直接将所有的要用的全部给解压,如下图注…...

MySQL:使用聚合函数查询

提醒: 设定下面的语句是在数据库名为 db_book里执行的。 创建t_grade表 USE db_book; CREATE TABLE t_grade(id INT,stuName VARCHAR(20),course VARCHAR(40),score INT );为t_grade表里添加多条数据 INSERT INTO t_grade(id,stuName,course,score)VALUES(1,测试0…...

【Linux C | 网络编程】套接字选项、getsockopt、setsockopt详解及C语言例子

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…...

Springboot解决模块化架构搭建打包错误找不到父工程

Springboot解决模块化架构搭建打包错误找不到父工程 一、情况一找不到父工程依赖1、解决办法 二、情况二子工程相互依赖提示"程序包xxx不存在" 一、情况一找不到父工程依赖 报错信息 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:…...

Android全屏黑边解决方案

在Android12以上的手机&#xff0c;设置全屏后屏幕底部有黑边或者白边&#xff0c;有的屏幕顶部有黑边。解决方案很简单&#xff0c;在使用的主题中添加对应的设置即可&#xff0c;如下&#xff1a; res/values/themes.xml <resources><style name"Base.Theme.La…...

【矩阵】【方向】【素数】3044 出现频率最高的素数

作者推荐 动态规划的时间复杂度优化 本文涉及知识点 素数 矩阵 方向 LeetCode 3044 出现频率最高的素数 给你一个大小为 m x n 、下标从 0 开始的二维矩阵 mat 。在每个单元格&#xff0c;你可以按以下方式生成数字&#xff1a; 最多有 8 条路径可以选择&#xff1a;东&am…...

什么是RPC?谈谈你对RPC的理解

RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;是一种计算机通信协议。它允许一台计算机&#xff08;客户端&#xff09;通过网络调用另一台计算机&#xff08;服务器&#xff09;上的程序&#xff0c;并等待该程序的结果返回。RPC抽象了网络通信的…...

C语言实现哈希查找之线性探测算法

C语言中实现一个简单的哈希表&#xff0c;并包括线性探测和二次探测再散列处理冲突的功能&#xff1a; 1. 定义哈希表结构 首先&#xff0c;定义一个哈希表的结构&#xff0c;包括存储空间、哈希表的大小等。 2. 实现哈希函数 选择一个合适的哈希函数来计算键值的哈希值。 …...

js:lodash template文件模板语法和应用

文档 https://www.lodashjs.com/docs/lodash.templatehttps://lodash.com/docs/4.17.15#template 语法 <% VALUE %> 用来做不转义插值&#xff1b;<%- VALUE %> 用来做 HTML 转义插值&#xff1b;<% expression %> 用来描述 JavaScript 流程控制。 示例 …...

在Windows系统上安装Docker和SteamCMD容器的详细指南有哪些?

在Windows系统上安装Docker和SteamCMD容器的详细指南有哪些&#xff1f; 安装Docker&#xff1a; 首先&#xff0c;需要在Windows操作系统上激活WSL2功能。这是因为Docker作为一个容器工具&#xff0c;依赖于已存在并运行的Linux内核环境。可以通过使用winget来安装Docker。具体…...

点击输入框,获取提示信息

HTML结构代码 <body><input><p>单击输入框获取焦点。</p><span>请输入你的电话号码?</span></body> Java script代码 <script type"text/JavaScript">let pdocument.getElementsByTagName(input)[0];console.lo…...

房贷计算器微信小程序原生语言

微信小程序: 房贷计算器 效果: 输入 300万 结果 还款明细 一共有3个页面 1、输入页面 2、结果页面 3、详情页面 1 index页面 index.wxml文件 <view class="text-black"><!--房屋总价--><view class="cu-bar bg-white solid-bottom"&…...

【C++从0到王者】第四十六站:图的深度优先与广度优先

文章目录 一、图的遍历二、广度优先遍历1.思想2.算法实现3.六度好友 三、深度优先遍历1.思想2.代码实现 四、其他问题 一、图的遍历 对于图而言&#xff0c;我们的遍历一般是遍历顶点&#xff0c;而不是边&#xff0c;因为边的遍历是比较简单的&#xff0c;就是邻接矩阵或者邻接…...

Docker技术概论(2):Docker环境的搭建

Docker技术概论&#xff08;2&#xff09; Docker环境的搭建 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blo…...

电脑休眠之后唤不醒

现象&#xff1a;午休时间电脑休眠了&#xff0c;醒来之后发现在密码输入界面&#xff0c;但鼠标键盘没反应。按重启键或电源机重新开机&#xff0c;结果开不了机。 原因&#xff1a;1、内存条脏了&#xff0c;导致内存条读取失败 2、休眠的时候硬盘休眠了&#xff0c;导致按…...

Python列表中添加删除元素不走弯路

1.append() 向列表中添加单个元素&#xff0c;一般用于尾部追加 list1 ["香妃", "乾隆", "贾南风", "赵飞燕", "汉武帝"]list1.append("周瑜") print(list1) # [香妃, 乾隆, 贾南风, 赵飞燕, 汉武帝, 周瑜]…...

地缓存与 Redis 的数据一致性方案

本地缓存(如 Caffeine、Guava)与 Redis 组成的双层缓存架构,在提升性能的同时也带来了数据一致性的经典难题。由于本地缓存是进程内存储,当数据在 Redis 或数据库中更新时,如何同步更新所有应用实例的本地缓存,成为分布式系统中的核心挑战。 一、问题本质:为什么会出现不…...

为什么顶尖AI工程团队把可解释性设计前置到需求阶段?——基于27个亿级AIAgent项目的数据归因分析

第一章&#xff1a;可解释性设计前置的战略价值与范式跃迁 2026奇点智能技术大会(https://ml-summit.org) 在高风险决策场景&#xff08;如医疗诊断、金融授信与自动驾驶&#xff09;中&#xff0c;模型的“黑箱性”已从工程挑战升维为治理瓶颈。将可解释性&#xff08;XAI&a…...

湿度计算常数γ:气象学中的隐藏变量及其在农业灌溉中的实际应用

湿度计算常数γ&#xff1a;农业精准灌溉中的关键变量与实战应用 清晨五点&#xff0c;当第一缕阳光穿透薄雾洒在麦田上&#xff0c;土壤中的水分正以肉眼不可见的方式与空气进行着微妙交换。这种被称为"潜在蒸散"的过程&#xff0c;正是决定作物需水量的核心机制。而…...

别再死记硬背了!用Plecs的AC Sweep功能,5分钟看懂电路稳定性(附波德图判据详解)

电力电子工程师的Plecs速成课&#xff1a;用AC Sweep一键生成波德图的实战指南 在电力电子设计领域&#xff0c;电路稳定性分析就像给系统做"心电图"——而波德图就是那张能揭示潜在风险的关键报告单。传统教材总爱从传递函数推导开始&#xff0c;让工程师陷入拉普拉…...

终极Flash浏览器解决方案:让经典Flash游戏重获新生的简单免费工具

终极Flash浏览器解决方案&#xff1a;让经典Flash游戏重获新生的简单免费工具 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser 还在为Flash停用后无法玩经典游戏而烦恼吗&#xff1f;CefFl…...

华为云MindSpore实战:动态学习率与Batch Size调参,让你的鸢尾花模型收敛快一倍

华为云MindSpore实战&#xff1a;动态学习率与Batch Size调参&#xff0c;让你的鸢尾花模型收敛快一倍 鸢尾花分类是机器学习入门的经典案例&#xff0c;但很多开发者在实际训练中常遇到模型收敛慢、效果不稳定等问题。本文将聚焦华为云MindSpore框架下的两个关键调参技巧——动…...

【Git】TortiseGit设置过滤上传文件

一、Git忽略文件机制概述 Git通过.gitignore文件管理版本控制中的忽略规则&#xff0c;决定哪些文件不应被跟踪和提交。TortoiseGit作为Windows平台常用的Git图形化客户端&#xff0c;提供了便捷的界面操作来配置这些规则。合理设置文件过滤对于保持仓库整洁、避免提交敏感信息…...

AudioSeal Pixel Studio效果展示:不同信噪比(SNR 10dB/20dB/30dB)下检测准确率曲线

AudioSeal Pixel Studio效果展示&#xff1a;不同信噪比&#xff08;SNR 10dB/20dB/30dB&#xff09;下检测准确率曲线 1. 引言&#xff1a;当声音拥有“数字指纹” 想象一下&#xff0c;你创作了一段精彩的播客音频&#xff0c;发布到网上后&#xff0c;很快被其他人下载、剪…...

FireRedASR-AED-L医疗术语库集成:CT报告、处方药名、解剖学名词精准识别

FireRedASR-AED-L医疗术语库集成&#xff1a;CT报告、处方药名、解剖学名词精准识别 1. 引言&#xff1a;当语音识别遇上专业医疗场景 想象一下&#xff0c;一位医生正在口述一份复杂的CT报告&#xff1a;“左侧颞叶可见一约1.5cm2.0cm的稍高密度影&#xff0c;边界欠清&…...

Java的java.util.HexFormat自定义格式

Java的HexFormat&#xff1a;十六进制处理的现代方案 在数据处理、网络通信或安全加密领域&#xff0c;十六进制格式的转换与解析是常见需求。Java 17引入的java.util.HexFormat类&#xff0c;为开发者提供了标准化且灵活的十六进制处理工具&#xff0c;告别了以往依赖手动拼接…...