• 实用工具 小学数学练习 字帖生成 在线画板 函数绘制 拼音字母表 在线词典 黄历查询 中国历史 Excel函数 模拟请求 json格式化
  • 最新更新
  • 全站导航
  • 登陆/注册
  • 原创投稿
名师互学网
  • 知识解答知识解答
  • 合同文书合同文书
  • 教育问答教育问答
  • 最新资讯最新资讯
  • 学术期刊学术期刊
  • 资料下载资料下载
高考报名时间2022年11月1日还剩 天 距离2023年6月7日高考还有 天
  • 网站首页
  • 小学
  • 初中
  • 高中
  • 语言
  • 会计
  • 驾考
  • 学历
  • 司法
  • IT
  • 医护
  • 建筑
  • 作文
栏目分类:
  • 前沿技术
  • 软件开发
  • 系统运维
  • 产品运营
  • 生活办公
  • 面试经验
  • 考试题库
子分类:
  • 人工智能
  • 大数据
  • 云计算
  • 区块链
  • 物联网
  • 深度学习
  • 机器学习
  • NLP
  • 计算机视觉
  • 语音识别
  • 其他
  • 大数据系统
  • 数据可视化
  • 数据挖掘与分析
  • 其他
  • Docker/k8s
  • 虚拟化
  • 云平台
  • 其他
  • 基本原理
  • 数字货币
  • 智能合约
  • EOS应用
  • 其他
  • 通讯技术
  • 嵌入式开发
  • 单片机
  • 物联网应用
  • HarmonyOS
  • 其他
  • 后端开发
  • Web开发
  • 移动开发
  • 游戏开发
  • Python
  • Java
  • 架构设计
  • C/C++/C#
  • PHP
  • .Net
  • Go语言
  • R语言
  • asp
  • Html/CSS
  • 易语言
  • JavaScript
  • 汇编语言
  • Vue.js
  • React.JS
  • Ruby开发
返回
名师互学网
名师互学网用户登录
名师互学网
快速导航关闭
当前搜索
当前分类
前沿技术 软件开发 系统运维 产品运营 生活办公 面试经验 考试题库
子分类
人工智能 大数据 云计算 区块链 物联网 深度学习 机器学习 NLP 计算机视觉 语音识别 其他 大数据系统 数据可视化 数据挖掘与分析 其他 Docker/k8s 虚拟化 云平台 其他 基本原理 数字货币 智能合约 EOS应用 其他 通讯技术 嵌入式开发 单片机 物联网应用 HarmonyOS 其他 后端开发 Web开发 移动开发 游戏开发 Python Java 架构设计 C/C++/C# PHP .Net Go语言 R语言
实用工具
学习工具 小学数学练习 字帖生成 在线画板 函数绘制 拼音字母表 在线词典 黄历查询 亲戚关系计算 安全期计算 中国历史 Excel函数 模拟请求 json格式化 浏览器指纹
热门搜索
路由器设置 木托盘 宝塔面板 儿童python教程 心情低落 朋友圈 vim 双一流学科 专升本 我的学校 日记学校 西点培训学校 汽修学校 情书 化妆学校 塔沟武校 异形模板 西南大学排名 最精辟人生短句 6步教你追回被骗的钱 南昌大学排名 清朝十二帝 北京印刷学院排名 北方工业大学排名 北京航空航天大学排名 首都经济贸易大学排名 中国传媒大学排名 首都师范大学排名 中国地质大学(北京)排名 北京信息科技大学排名
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot入门级项目(一)学生管理系统(springboot+mybatis+bootstrap+thymeleaf)

Java 更新时间:2026-03-30 22:49:44 发布时间:1614天前 IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot入门级项目(一)学生管理系统(springboot+mybatis+bootstrap+thymeleaf)

目录
  • 先看项目效果
  • 前言
  • 一、初始配置
    • 1、sqlyog中新建数据库springboot
      • 1)使用sql
      • 2)使用可视化工具sqlyog
    • 2、idea中新建空项目springboot-system
      • 1)建立空项目
      • 2)建立springboot模块
      • 3)测试springboot是否可用
  • 二、连接数据库
    • 1、引入JDBC
      • 1)idea连接数据库
      • 2)导入Mybatis及jdbc、mysql连接驱动的依赖
      • 3)在application.yaml中配置
      • 4)测试mysql连接
    • 2、整合Mybatis
      • 1)配置application.yamml
      • 2)新建Account实体类
      • 3)mapper接口以及对应的xml映射文件(dao层)
      • 4)测试mybatis
  • 三、功能开发
    • 1、登录(index.html)
      • 1)使用thymeleaf
      • 2)页面中英文切换
      • 3)连接数据库
      • 4)解决URL泄露用户信息的问题
      • 5)解决直接通过URL可以进入dashboard页面的问题
      • 6)在主页设置欢迎词
    • 2、显示所有学生信息(list.html)
      • 1)Student实体类、StudentMapper、StudentMapper.xml
      • 2)视图跳转
      • 3)提取页面公共部分
      • 4)使点击的标签高亮
      • 5)修改list.html页面
    • 3、增加学生信息(add.html)
      • 1)添加学生按钮
      • 2)添加学生页面add.html
      • 3)add页面的添加按钮
    • 4、修改学生信息(edit.html)
      • 1)编辑 按钮
      • 2)编辑学生页面edit.html
      • 3) edit页面的修改按钮
    • 5、删除学生信息
    • 6、404页面(404.html)
    • 7、注销操作
  • 再说几句话

先看项目效果

1、登录页面 ,支持中英文切换

2、学生管理页面,支持增删改查(这里就不演示了,操作时间太长,录制的gif太大,传不上来,直接看主页面)

前言

跟着B站的狂神老师学习了一段时间的springboot,打算写个小项目练练手当做复习(我还是新手)。前端直接用的bootstrap已有的模板。
大家可以看看狂神的员工管理系统:https://www.bilibili.com/video/BV1PE411i7CV?p=20

学生管理系统资源获取:百度网盘
链接:https://pan.baidu.com/s/10_Ikc0I73brdkmPGejSaVA
提取码:jiyu

出现怎么都解决不了的问题但是觉得自己没错的话,可以尝试清除浏览器缓存或者idea缓存
清除浏览器缓存:快捷键ctrl+shift+del

idea清除缓存:

一、初始配置 1、sqlyog中新建数据库springboot

下面两种方法,选一个即可

1)使用sql
CREATE DATAbase `springboot`CHARACTER SET utf8 COLLATE utf8_general_ci; 

USE `springboot`; 
 CREATE TABLE `springboot`.`account`( `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '用户id', `username` VARCHAR(20) NOT NULL COMMENT '用户名', `password` VARCHAR(20) NOT NULL COMMENT '用户密码', PRIMARY KEY (`id`) ) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_general_ci; 
INSERT INTO `springboot`.`account` (`username`, `password`) VALUES ('admin001', 'admin001pwd'); 
INSERT INTO `springboot`.`account` (`username`, `password`) VALUES ('季瑜', 'jiyupwd'); 

USE `springboot`; 
 CREATE TABLE `springboot`.`student`( `sno` INT(10) NOT NULL COMMENT '学生学号', `sname` VARCHAR(10) NOT NULL COMMENT '学生姓名', `sage` INT(3) COMMENT '学生年龄', `saddress` VARCHAR(50) COMMENT '学生住址', PRIMARY KEY (`sno`) ) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_general_ci; 
INSERT INTO `springboot`.`student` (`sno`, `sname`, `sage`, `saddress`) VALUES ('001', 'test001', '16', 'test001add'); 
INSERT INTO `springboot`.`student` (`sno`, `sname`, `sage`, `saddress`) VALUES ('002', 'test002', '20', 'test002add'); 
2)使用可视化工具sqlyog

创建数据库


创建表

account表

student表

打开account表

增加数据

打开表student,增加数据

2、idea中新建空项目springboot-system 1)建立空项目

建立空项目方便把多个模块放在一起,因为前期做的都是很简单的springboot项目,所以放在一起方便复习。(真正开发不会这么做)

选择空项目

输入项目名springboot-system

这两个地方选择我们使用的jdk版本,再点apply和ok

项目结构很干净

2)建立springboot模块


主要修改这几处

先选择我们需要的web和thymeleaf依赖,之后用到的可以在pom中添加

模块的结构

3)测试springboot是否可用

在com.jiyu包下建立包:controller
在controller中建立类TestController

package com.jiyu.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @RequestMapping("/test01")
    public String test01(){
        return "test01";
    }
}

@RestController注解相当于@ResponseBody + @Controller合在一起的作用
表示方法的返回值直接以指定的格式写入Http response body中,而不是解析为跳转路径。

点击这里运行

进入浏览器输入http://localhost:8080/test01
出现test01说明环境搭建成功

二、连接数据库 1、引入JDBC 1)idea连接数据库


输入账号密码后测试连接

连接成功

选择需要的数据库,先apply再ok

已经可以看到两个表了

2)导入Mybatis及jdbc、mysql连接驱动的依赖

导入以下几个依赖:jdbc、mysql-connector-java、mybatis-spring-boot-starter

 		
            org.springframework.boot
            spring-boot-starter-jdbc
        

        
            mysql
            mysql-connector-java
            runtime
        

        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.2.0
        

项目中本就导入了web、thymeleaf
所以目前的所有依赖如下

    
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-jdbc
        

        
            mysql
            mysql-connector-java
            runtime
        

        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.2.0
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    
3)在application.yaml中配置

将application.properties重命名为application.yaml
配置application.yaml,注意严格控制空格
在这里我们将端口号改为8888,并且连接了名为springboot的数据库

server:
  port: 8888
spring:
  datasource:
    username: root
    password: 123456
    #?serverTimezone=UTC解决时区的报错
    url: jdbc:mysql://localhost:3306/springboot?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
    driver-class-name: com.mysql.cj.jdbc.Driver
4)测试mysql连接

在该测试类中添加测试方法

@SpringBootTest
class StudentMsApplicationTests {
    @Autowired
    DataSource dataSource;

    @Test//测试DataSource
    void contextLoads() throws SQLException {
        System.out.println(dataSource.getClass());
        System.out.println(dataSource.getConnection());
    }

}

@Autowired 注释,可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用可以消除 set ,get方法。

运行结果如下

无论如何,connection一定是com.mysql.cj.jdbc.ConnectionImpl
class和使用的连接池有关,在我们不配置的时候默认使用Springboot的HikariDataSource

2、整合Mybatis 1)配置application.yamml


在配置文件中插入以下这段代码,表示我们使用了Mybatis。
type-aliases-package让mybatis自动扫描到我们自定义的entity,说明这个包下面的类都使用别名,这就不用写长长的一串全限定名了。别名默认为就是类名小写(如:com.jiyu.pojo.Account就是account)

mapper-locations用于配置mapper.xml路径,我这样就是mapper.xml 路径在 resources/mapper/ 下面(所以下面我们要建立新的xml文件)

mybatis:
  type-aliases-package: com.jiyu.pojo
  mapper-locations: classpath:mapper/*.xml

springboot中的classpath就是main/java + main/resources +target/classes的根目录。main/java下的源程序、resource下的静态资源都会打包到target/classes目录。

在resources文件夹下新建一个mapper文件夹,里面创建一个空文件AccountMapper.xml文件,等会再进行配置

2)新建Account实体类

POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。

public class Account {
    private int id;
    private String username;
    private String password;

    public Account() {
    }

    public Account(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "Account{" +
                "id=" + id +
                ", username='" + username + ''' +
                ", password='" + password + ''' +
                '}';
    }
}

注意有参构造器不包含id,因为对应的表的id是自增的,所以只需要我们设置好username和password就可以构造Account对象了

3)mapper接口以及对应的xml映射文件(dao层)

建立mapper文件夹,下面创建AccountMapper接口
里面就是我们写的dao层方法的定义,对应的sql实现写在映射文件AccountMapper.xml中

package com.jiyu.mapper;

import com.jiyu.pojo.Account;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;

//@Mapper : 表示本类是MyBatis的一个Mapper;直接在Mapper类上面添加注解@Mapper,这种方式要求每一个mapper类都需要添加此注解
// 也可以在Sp01StudentMsApplication.java添加@MapperScan("com.jiyu.mapper"),可以指定要扫描的Mapper类的包的路径
// 使用@MapperScan注解多个包:@MapperScan({"com.jiyu.demo","com.jiyu.mapper"})  

@Mapper
@Repository//Dao层
public interface AccountMapper {
    // 获取所有Account信息
    List queryAccountList();

    // 通过id获得Account信息
    Account queryAccountById(Integer id);

	//通过username获得Account信息
    Account queryAccountByUsername(String username);

    // 新增一个Account
    int addAccount(Account account);

    // 通过id删除Account
    int deleteAccount(Integer id);

    //更新Account信息
    int updateAccount(Account account);
}

这里写上了CRUD的几个基本方法,有的不一定用得到,不过可以拿来测试或者参考

接下来编写AccountMapper.xml






    
        select * from account where id = #{id};
    

	
                

其中,这几处改变样式的代码是去除input type="number"时,输入框右侧会出现的上下箭头(比较难看,强迫症不喜欢)

重启主程序后点击添加学生的按钮,效果如下

3)add页面的添加按钮

在add.html页面,当我们填写完信息,点击添加按钮,要将数据添加到数据库并且返回到list.html

然后编写对应的controller,在StudentController中添加一个方法,用于提交添加信息

	@PostMapping("/add")
    public String add(Student student) {
        System.out.println("add: "+student);
        studentMapper.addStudent(student);//添加一个员工
        return "redirect:/students";//重定向到/students,刷新列表,返回到list页面
    }

重启主程序,进入添加页面,填写信息

点击添加按钮,添加成功

数据库中也插入成功了

4、修改学生信息(edit.html) 1)编辑 按钮

当我们点击编辑标签时,应该跳转到编辑页面edit.html,并且携带编辑的学生的信息(学号设置为只读,不可修改)

在list.html中将编辑标签添加href属性

编辑


然后编写对应的controller,在StudentController中添加一个方法,用于跳转到编辑界面

//restful风格接收参数
    @RequestMapping("/toEdit/{sno}")
    public String toEdit(@PathVariable("sno") int sno, Model model) {
        //查询指定sno的学生,用于前端接收
        Student student = studentMapper.queryStudentBySno(sno);
        System.out.println("before editing: "+student);
        model.addAttribute("student", student);
        return "student/edit";//返回到编辑学生页面
    }
2)编辑学生页面edit.html

在templates/student下新建一个edit.html

代码和add.html差不多






    
    
    
    

    Dashboard Template for Bootstrap
    
    

    
    
    




启动主程序测试,点击编辑学号666的学生
成功跳转到edit.html,且所选学生信息正确

3) edit页面的修改按钮

在StudentController中添加一个方法,用于提交修改信息

	@PostMapping("/edit")
    public String edit(Student student) {
        studentMapper.updateStudent(student);
        System.out.println("after editing: "+student);
        return "redirect:/students";//添加完成重定向到/students,刷新列表
    }

重启测试,把test666的年龄修改为18

点击 修改 按钮
成功修改并返回到list.html

5、删除学生信息

在list.html修改删除标签

删除


然后编写对应的controller,删除指定学生

 	@GetMapping("/delete/{sno}")
    public String delete(@PathVariable("sno") Integer sno) {
        studentMapper.deleteStudent(sno);
        return "redirect:/students";
    }

重启测试,点击删除按钮即可删除指定学生

6、404页面(404.html)

在templates目录下新建一个error文件夹,然后引入404.htm,SpringBoot报错时就会自动找到这个页面

重启程序测试,随便访问一个不存在的页面
出现的404页面就是我们自己的404.html

7、注销操作

在公共commons页面,顶部导航栏处的标签添加href属性

然后在LoginController中编写对应的方法,处理点击注销标签的请求,清除session,并重定向到首页

	@RequestMapping("/user/logout")
    public String logout(HttpSession session) {
        session.invalidate();
        return "redirect:/index.html";
    }

重启测试,登录成功后,点击 注销 即可退出到首页

再说几句话

至此,基本的功能我们就开发完了,接下来也可以选择继续开发新的功能,因为侧边栏很多链接我们都没有实现。可以做几个和account表有关的功能,比如修改密码、注销账户、注册账号等,这些还是比较简单的,你们可以自行实现。对student表的操作有表格的分页、搜索等,这些我也没有做,知道原理很容易实现,只要写对sql就成功一大半了。这个项目只是方便初学者整合所学、轻松入门的,没有太高深的地方,大佬就别喷我了。。。可以直接路过。
接下来我还会做几个使用不同技术的项目,会陆续发在springboot专栏里。感谢看到这里的人~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/351033.html

上一篇 Java数组,数组的应用

下一篇 B站学习springboot笔记(2)

Java相关栏目本月热门文章

  • 1【Linux驱动开发】设备树详解(二)设备树语法详解
  • 2别跟客户扯细节
  • 3Springboot+RabbitMQ+ACK机制(生产方确认(全局、局部)、消费方确认)、知识盲区
  • 4【Java】对象处理流(ObjectOutputStream和ObjectInputStream)
  • 5【分页】常见两种SpringBoot项目中分页技巧
  • 6一文带你搞懂OAuth2.0
  • 7我要写整个中文互联网界最牛逼的JVM系列教程 | 「JVM与Java体系架构」章节:虚拟机与Java虚拟机介绍
  • 8【Spring Cloud】新闻头条微服务项目:FreeMarker模板引擎实现文章静态页面生成
  • 9JavaSE - 封装、static成员和内部类
  • 10树莓派mjpg-streamer实现监控及拍照功能调试
  • 11用c++写一个蓝屏代码
  • 12从JDK8源码中看ArrayList和LinkedList的区别
  • 13idea 1、报错java: 找不到符号 符号: 变量 log 2、转换成Maven项目
  • 14在openwrt使用C语言增加ubus接口(包含C uci操作)
  • 15Spring 解决循环依赖
  • 16SpringMVC——基于MVC架构的Spring框架
  • 17Andy‘s First Dictionary C++ STL set应用
  • 18动态内存管理
  • 19我的创作纪念日
  • 20Docker自定义镜像-Dockerfile
热门相关搜索
路由器设置 木托盘 宝塔面板 儿童python教程 心情低落 朋友圈 vim 双一流学科 专升本 我的学校 日记学校 西点培训学校 汽修学校 情书 化妆学校 塔沟武校 异形模板 西南大学排名 最精辟人生短句 6步教你追回被骗的钱 南昌大学排名 清朝十二帝 北京印刷学院排名 北方工业大学排名 北京航空航天大学排名 首都经济贸易大学排名 中国传媒大学排名 首都师范大学排名 中国地质大学(北京)排名 北京信息科技大学排名 中央民族大学排名 北京舞蹈学院排名 北京电影学院排名 中国戏曲学院排名 河北政法职业学院排名 河北经贸大学排名 天津中德应用技术大学排名 天津医学高等专科学校排名 天津美术学院排名 天津音乐学院排名 天津工业大学排名 北京工业大学耿丹学院排名 北京警察学院排名 天津科技大学排名 北京邮电大学(宏福校区)排名 北京网络职业学院排名 北京大学医学部排名 河北科技大学排名 河北地质大学排名 河北体育学院排名
学习工具
代数计算器
三角函数
解析几何
立体几何
知识解答
教育知识
百科知识
生活知识
常识知识
写作必备
作文大全
作文素材
句子大全
实用范文
关于我们
关于我们
联系我们
网站地图
交流群

名师互学网交流群

名师互学网客服

名师互学网客服

名师互学网 版权所有 (c)2021-2022 ICP备案号:晋ICP备2021003244-6号

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号