【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

posted @ 2019-07-08 23:00  Elucidator  阅读(771)  评论(0编辑  收藏  举报