SpringBoot + Freemarker + MySQL 搭建实验室仪器预约系统

Posted elucidator

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot + Freemarker + MySQL 搭建实验室仪器预约系统相关的知识,希望对你有一定的参考价值。

半年前,初学Java,使用JSP+Tomcat+mysql搭建了一个简易的实验室仪器预约系统。

使用JSP技术搭建实验仪器预约系统

但是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 搭建实验室仪器预约系统的主要内容,如果未能解决你的问题,请参考以下文章

Idea + Springboot + freemarker 动态刷新

springboot整合freemarker

springboot使用Freemarker继承

springboot freemarker

22springboot集成freemarker

springboot整合freemarker