作者主页:舒克日记
简介: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小舟,关注后发送消息即可,都会给您回复的。若没有及时回复请耐心等待,通常当天会有回复
运行截图
前端界面
登录页面
管理员
读者
代码
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;}
}