【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

原文地址:https://www.cnblogs.com/elucidator/p/11154632.html

时间: 2024-08-01 15:37:40

【SpringBoot + Freemarker + MySQL】 搭建实验室仪器预约系统的相关文章

分离php和MySQL搭建LAMP平台

分离php和MySQL搭建LAMP平台 环境: 系统:CentOS-7-x86_64-Minimal-1611 Apache:httpd-2.4.25.tar MySQL:mysql-5.7.16.tar php:php-5.6.30.tar 192.168.57.144:安装MySQL 192.168.57.143:安装Apache+php http://blog.sina.com.cn/s/blog_b6e37c3f0101oo81.html 创建相关目录 创建用户 解压安装包 编译安装 (

值得我们深入研究和学习:从零开始一步一步搭建坚不可摧的Web系统主流架构

本文标签: Web系统主流架构 搭建Web系统架构 缓存服务器 数据库架构   技术型初创公司  互联网杂谈 主题简介: 1.网站系统架构当前现状 2.Web系统主流架构解析 3.互联网技术团队初期组建经验分享 本文主要结合我之前在海尔电商平台和现在公司的一些实际架构经验,综合实际情况和个人的理解,跟大家分享一下搭建Web系统的一些常用的技术架构和应用技巧. 首先要跟大家探讨一个问题,就是当前传统IT企业或是传统企业的IT系统目前的系统架构是怎样的呢? 就我所经历的NEC软件.海尔集团.青岛航空

NFS实现(双httpd + php-fpm + nfs + mysql 搭建discuz论坛)的方法

NFS相关介绍 一.NFS简介 1. NFS(Network File System):NFS是一个文件共享协议, 也是是在类Unix系统中在内核中实现的文件系统. 2. 起源:最早是由SUN公司研发,非常古老,只是实现文件共享,安全控制方面比较简陋. 版本有, NFSv1, NFSv2,NFSv3,NFSv4. v4版开始支持kerberos 认证. 3. RPC(Remote Procedure Call):NFS协议是基于PRC(远程过程调用)实现的. 基本过程如下图,客户端某程序发起过程

MySQL搭建系列之多实例

所谓多实例,就是在一台服务器上搭建.运行多个MySQL实例,每个实例使用不同的服务端口,通过不同的socket监听:物理上,每个实例拥有独立的参数配置文件及数据库. 通常情况下,一台服务器是不建议运行多个MySQL实例的,尤其是生产环境,因为这会造成资源相互强占问题.但在一些高可用环境中,却有这样的需求,比如:利用Heartbeat搭建的故障转移集群环境,若主备服务器只运行一个MySQL实例,则备用服务器平常处于闲置状态,造成了资源浪费:若各自运行一个MySQL实例,则在一方故障时,要求另一方接

编译安装MySQL搭建多实例

上一篇博客介绍的是:通过 MySQL二进制包搭建多实例服务http://aby028.blog.51cto.com/5371905/1891423 现在介绍通过编译安装MySQL搭建多实例 实验中所用到的软件包:http://down.51cto.com/data/2281098 环境介绍 编译安装mysql前需要解决依赖包问题 yum -y install ncurses-devel libaio-devel 安装 lrzsz 这个软件,和系统无关的一个软件.安装后可以通过xshell拖拽软件

十、搭建discuz论坛系统

十.搭建discuz论坛系统 1.简介: Crossday Discuz! Board(简称 Discuz!)是北京康盛新创科技有限责任公司推出的一套通用的社区论坛软件系统.自2001年6月面世以来,Discuz!已拥有14年以上的应用历史和200多万网站用户案例,是全球成熟度最高.覆盖率最大的论坛软件系统之一.目前最新版本Discuz! X3.2正式版于2015年6月9日发布,首次引入应用中心的开发模式.2010年8月23日,康盛创想与腾讯达成收购协议,成为腾讯的全资子公司. Crossday

如何使用laravel搭建后台登录系统

今天想用laravel搭建一个后台系统,就需要最简单的那种,有用户登录系统,试用了下,觉得laravel的用户登录这块做的还真happy.当然,前提就是,你要的用户管理系统是最简单的那种,就是没有用户权限,能登录就好. 我这里就不用默认的user表做例子了,那样很容易和laravel的一些默认设置混淆. 首先确认,后台的用户表,我设计表叫做badmin,每个管理员有用户名(username),有昵称(nickname),有邮箱(email),有密码(password) 这里玩个花,使用larav

springboot+jpa+mysql+redis+swagger整合步骤

springboot+jpa+MySQL+swagger框架搭建好之上再整合redis: 在电脑上先安装redis: 一.在pom.xml中引入redis 二.在application.yml里配置redis,单独说明:redis刚一开始安装好是没有设置密码的.否则,会报connection错误. 三.在service配置Redis,需要说明的在方法前配置@Cacheable中只有value没有可以,key默认跟value一样. 四.在controller里实现Redis的一种方式 原文地址:h

Linux系统搭建zabbix监控系统实例讲解

第一步,配置本地yum仓库,如下 1,挂载,挂载光驱到/mnt mount /dev/cdrom /mnt2,创建目录 mkdir -p /repo/cos7dvd3,然后使用命令创建yum仓库文件,注意指定正确的软件源位置yum-config-manager --add-repo file:///repo/cos7dvd/4,使用 yum repolist命令检测刚创建的yum软件仓库是否正常.5,使用yum clean all 清空缓存(非必要步骤,在yum更新时使用)6,使用vim编辑器给