SpringBoot + Freemarker + MySQL 搭建实验室仪器预约系统
Posted elucidator
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot + Freemarker + MySQL 搭建实验室仪器预约系统相关的知识,希望对你有一定的参考价值。
半年前,初学Java,使用JSP+Tomcat+mysql搭建了一个简易的实验室仪器预约系统。
但是jsp技术过于老旧,已经被淘汰了,且系统的稳定性较差。因此近日使用 SpringBoot + Freemarker + MySQL 重构此项目。更重要的是,学习了一些css,把界面修整了一番,总算不至于太难看。
功能展示
项目地址 http://193.112.92.196:8080/
首页
用户注册与登录
展示仪器详细信息
登录后可以进行预约
点击“我的预约”查看自己的预约记录,可以选择取消
开发环境
- IntelliJ IDEA 2019.1.3 x64
- jdk1.8
- SpringBoot 2.1.5
- Freemarker
- MySQL 8.0.16
项目结构
详细介绍
按照包顺序从上往下介绍
- config
这里没有太多好说的,主要是注册了拦截器,并设置了一些需要登录或者非登录状态才能进去的url
- controller
这里基本上就是调用Service处理一些request参数,然后映射到相应页面,再处理一下Session
- interceptor
拦截器,判断Session中有没有“username”参数,做相应拦截
- model
定义了一些实体模型,并通过注解和JPA映射到数据库
- repository
全继承了JpaRepository,基本上没写什么方法
- service
这里是主要内容。
DeviceService直接通过repository提供了两个方法,getAllDevice(),getDeviceById(int id)
UserService 提供2个方法,登录和注册,并分别定义了两个枚举类型来表示执行结果
package com.reservation.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.reservation.model.User; import com.reservation.repository.UserRepository; import java.util.List; @Service public class UserService @Autowired private UserRepository userRepository; public LoginApplicationReturnEnum doLogin(User user) if (user == null) return LoginApplicationReturnEnum.USER_NOT_EXIST; String username = user.getUsername(); if (username == null || username.equals("")) return LoginApplicationReturnEnum.USER_NOT_EXIST; List<User> list = userRepository.findByUsername(username); if (list.isEmpty()) return LoginApplicationReturnEnum.USER_NOT_EXIST; if (!list.get(0).getPassword().equals(user.getPassword())) return LoginApplicationReturnEnum.WRONG_PASSWORD; return LoginApplicationReturnEnum.OK; public RegisterApplicationReturnEnum doRegister(User user) if (user == null || user.getUsername() == null || user.getPassword() == null) return RegisterApplicationReturnEnum.EMPTY_INFO; String username = user.getUsername(); String password = user.getPassword(); if (username.length() < 6 || username.length() > 15 || password.length() < 6 || password.length() > 15) return RegisterApplicationReturnEnum.INVALID_LENGTH; if (!username.matches("\\\\w*") || !password.matches("\\\\w*")) return RegisterApplicationReturnEnum.INVALID_CHAR; List<User> list = userRepository.findByUsername(username); if (!list.isEmpty()) return RegisterApplicationReturnEnum.USERNAME_EXIST; userRepository.save(user); return RegisterApplicationReturnEnum.OK;
ReservationService提供了预约状态查询(根据日期),预约,用户预约查询
最后,使用Freemarker做的页面编写基本上就是变量获取,不再赘述。
项目部署
在腾讯云上买了一年的云服务器,在博客园看的话应该下面就有广告。项目打完包后39M,配置完端口,ssh连上去装了jdk和docker,拉了一个mysql映射到3306,运行jar包就可以访问了http://193.112.92.196:8080/
后记
这个项目虽然很简单,但对于初学者了解Java Web开发流程还是有一定帮助的。这个项目做完Java算入门了,但后面的路还很长。
这个项目如果以后再改进的话,应该会增加用户评论和超级管理员功能。
项目过程中还遇到了一些坑,比如url地址,浏览器缓存,中文乱码等问题,之后有机会展开详述。
wwj
2019.7.8
以上是关于SpringBoot + Freemarker + MySQL 搭建实验室仪器预约系统的主要内容,如果未能解决你的问题,请参考以下文章