SpringBoot学习(三)-员工管理系统开发(重在理解)

news/2024/11/30 20:50:00/

注:此为笔者学习狂神说SpringBoot的笔记,其中包含个人的笔记和理解,仅做学习笔记之用,更多详细资讯请出门左拐B站:狂神说!!!
本文是基于狂神老师SpringBoot教程中的员工管理系统从0到1的实践和理解。该系统应用SpringBoot、SpringMVC、Mybatis、thymeleaf模板引擎的等框架,方便读者理解网站搭建流程和注意点。本文重在理解,建议和代码结合理解,并实践。

员工管理系统

1、准备工作

  • 去bookstarap 模板中下载

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 导入页面

在这里插入图片描述

  • 资源放在static上面

在这里插入图片描述

  • 创建实体类

在这里插入图片描述

  • 导入依赖 lombok 会使@data:会将属性用到的方法:set、get、tostring,有参和无参构造方法自动装配

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 创建模拟数据库

在这里插入图片描述

加上注解@Repository

在这里插入图片描述

在这里插入图片描述

将有参构造的注解@删除,由于 时间 一般情况下,都是默认配置的,所以自己配的话,可以通过有参函数中,new Date()赋给 时间属性,否则,不删掉有参构造(有Date属性)的注解,将会导致赋值时,难办。

在这里插入图片描述

引用类型Department要加上 new ,因为加载资源的方式,是先静态static,再到@Autowired的资源的

在这里插入图片描述

添加数据库的基本操作

在这里插入图片描述

在这里插入图片描述

2、首页实现

  • 不建议在 controller 这里配置,最好去 config 中的springmvc扩展配置中配置,但是css静态资源加载不进来。

在这里插入图片描述

  • 注:如果有几个项目有网站的,若没关,都会占用8080端口的,导致项目的网站运行不出来,可以改一下端口;或移除其他项目。
  • 如下,效果一样,但是css静态资源加载不进来。

在这里插入图片描述

  • 所以需要把下载过来的模板修改为 Thymeleaf模板引擎所支持的 格式结构,对照Thymeleaf的支持文档(去官网下载)

在这里插入图片描述

1)修改登录界面

  • 修改加载的格式,让静态资源css可以被加载进来

在这里插入图片描述

  • 更改测试的时候,可以关闭Thymeleaf的模板缓存
  • 修改完,记得开启模板引擎的缓存,不然跑不起来

在这里插入图片描述

  • 清理浏览器的缓存

在这里插入图片描述

  • 主要是修改静态资源的链接,在前面加 th: 然后会发现资源的图标恢复

在这里插入图片描述

2)修改404页面

在这里插入图片描述

  • 不用改在线链接,只改本地的

在这里插入图片描述

3)修改dashboard页面

在这里插入图片描述

4)修改list页面

在这里插入图片描述

  • 用了 @ 符号的的好处: @ 之后的 (/)相当于万能目录classpath,可以万能匹配 不管项目的http链接怎么变,都能加载到静态资源
  • 配置了sever.servlet.context-path= 后, 8080会失效的

在这里插入图片描述

在这里插入图片描述

  • 结论
    1.首页配置:注意点,所有页面的静态资源都需要使用thymeleaf接管;

3、页面国际化

1)准备国际化的东西

  • 创建 i18n 文件夹(国际化的缩写)

在这里插入图片描述

  • 手动添加配置文件

在这里插入图片描述

  • idea的可视化视图:可以映射到配置文件

在这里插入图片描述

在这里插入图片描述

  • 要去看源码,我们自己正常配置的,理解SpringBoot怎么识别国际化的

在这里插入图片描述

赋值的

在这里插入图片描述

  • 通过源码找到SpringBoot自动装配的默认配置信息,这样自己才知道,自己要配多少,才有用

在这里插入图片描述

2)修改全局配置文件

  • 在配置文件中配置国际化,让国际化生效

在这里插入图片描述

  • 国际化消息的 格式标签:去查Thymeleaf文档

在这里插入图片描述

  • 先修改一个,看#{}格式是否生效,别一下子全部改完

在这里插入图片描述

修改不成功

在这里插入图片描述

修改一下:

在这里插入图片描述

  • 理解赋的值放里面和外面的区别:一般像按钮、选择框等控件放外面才生效,一般的基本信息赋值放里面就可以了,基本用 th:text ,其余看语境。

    在这里插入图片描述

3)实现点击 按钮 *改变国际化的信息

在这里插入图片描述

  • 去看官方文档,知道自己该配置什么东西

在这里插入图片描述

找到MessageCodeResolver

在这里插入图片描述

查找AcceptHeaderLocalContextResolver类

在这里插入图片描述

又去找一下RequestMappingHandlerMapping类

在这里插入图片描述

找到了localeResolver类,理解里面的要求 ,为我们用户自配找到依据
什么什么default就是默认的!!!!!!!

在这里插入图片描述

  • @ConditionalOnMissingBean:生效的话,会让bean失效,按照这里的意思,就是说,如果有用户自定义配置,就会让SpringBoot自动装配的bean失效。

找到AcceptHeaderLocaleResolver类去看看

在这里插入图片描述

  • 得知这个类继承了LocaleResolver地区解调器接口,

在这里插入图片描述

  • 实现自己的LocaleResolver国际化解析器==实现地区解调器接口

    依据

    在这里插入图片描述

在这里插入图片描述

  • 具体操作

    在这里插入图片描述

  • 一点击按钮, l 就会把消息传到后端

在这里插入图片描述

  • 解析请求

在这里插入图片描述

在配置类中,注册国际化组件的@bean到SpringBoot中

在这里插入图片描述

修改:

在这里插入图片描述

  • default打开页面默认的语言界面,由于浏览器默认一开始就是中文的,所以语法出错,也会返回中文

结果

在这里插入图片描述

  • 结论

在这里插入图片描述

4、登录功能实现

1)测试跳转功能

  • 修改index.html页面

在这里插入图片描述

  • 创建Logincontroller类,注:先测试一下能否正常跳转页面,写一步,测一步

在这里插入图片描述
在这里插入图片描述

2)前端传输数据到后端,并验证登录

  • 修改index.html页面

在这里插入图片描述

  • 后端获取数据。注:有@ResponseBody就跳不了视图,想要跳视图,把它去掉

在这里插入图片描述

在这里插入图片描述

  • 修改后,登录成功,但是登陆失败后,没有提示

在这里插入图片描述

3)登陆失败信息回传

  • 修改index页面,让回传信息msg,有地方放和显示
  • 去网页审查元素,定位一下,可以在那放回传的提示信息

在这里插入图片描述

  • 定位标签

    在这里插入图片描述

  • 去Thymeleaf.pdf里,找判断参数是否为空的方法

    在这里插入图片描述

  • 修改一下index页面,isEmpty(msg):msg是否为空,不为空,返回 false,not+false=true,显示文本。

在这里插入图片描述

在这里插入图片描述

4)登陆成功之后,URL有问题

  • 思路

​ 访问那个页面,能映射过来就好了

在这里插入图片描述

  • 在管理映射路径的类里修改,此程序在 MyMvcConfig 中

在这里插入图片描述

  • 修改LoginController,登录验证成功后,添加:redirct:/ 让页面跳转,更像网页跳转的情况,一个接一个

在这里插入图片描述

  • 问题:无论登不登录,都能进后台页面,所以要配置 拦截器 !!!!!!!!!!

    在这里插入图片描述

5)登录拦截器

  • 创建 自定义拦截器LoginHandlerInterceptor 继承 HandlerInterceptor拦截器接口

在这里插入图片描述

  • 登录成功后,用户名自定义设置显示

在这里插入图片描述

  • 登录成功后,获得了参数 loginUser ,返回true,随便切换都行

在这里插入图片描述

  • 在用户 自定义配置的类MyMvcConfig里面,声明这个拦截器方法(并不需要注册成一个bean,声明就好)

在这里插入图片描述

  • 修改Dashboard的元素Company name

在这里插入图片描述

  • 修改dashboard页面

在这里插入图片描述

  • 效果:用同一个浏览器会有缓存,也可以直接访问的,所以 清理浏览器缓存 或者 关掉浏览器 ,或者 换一个浏览器。

在这里插入图片描述

  • 过程

    继承接口→添加参数并设置username→拦截器条件构造→声明拦截器与拦截链接

5、展示员工列表

1)自己的员工查询页面

  • 登录功能已经实现,接下来修改前端员工的的列表展示,点员工管理,然后跳到 自己的员工查询页面

修改dashboard页面,去掉多余的效果标签(CSS)

在这里插入图片描述

复制一份list.html到emp中,以便区分

在这里插入图片描述

新建EmployController类,用来跳转页面,并设置数据

在这里插入图片描述

实现页面的一连串跳转

在这里插入图片描述

修改list.html页面,让点击了 员工管理 跳转到list页面

在这里插入图片描述

在这里插入图片描述

实现点击 list页面 的跳转循环

在这里插入图片描述

2)抽取界面元素Fragments的 insert标签

主界面和从界面的界面元素相同的话,抽取相同的界面元素

在这里插入图片描述

commons页面路径,main页面路径下的哪一个位置

在这里插入图片描述

抽取侧边栏,它可以作为一个组件,插入到其他页面

在这里插入图片描述

插入 list页面 中,注意格式

在这里插入图片描述

插入后效果是一样的

在这里插入图片描述

删掉list的顶部栏,也使用插入的

在这里插入图片描述

修改dashboard页面的顶部导航栏,使用 th:fragment=""定义可引用的部分

在这里插入图片描述

将dashboard页面的顶部导航栏作为控件,插入到list页面,效果和自定义的一样

在这里插入图片描述

3)替换界面元素的Fragment的 replace标签,可以理解为引用

  • 引用的话,就可以,传递参数

新建一个 commons界面 (不显示,作为工具页面),作为公共界面,用来replace,并实现 改一个地方,其它地方同时生效

在这里插入图片描述

修改公共页面commons,将 首页 点击设为 main.html ,跳转到登陆成功后的第一个页面

在这里插入图片描述

在这里插入图片描述

修改dashboard和list页面,实现代码的复用,都

在这里插入图片描述

在这里插入图片描述

效果:

在这里插入图片描述

4)设置点击的光标

在这里插入图片描述

在这里插入图片描述

在dashboard和list页面发送光标参数main.html

在这里插入图片描述

在这里插入图片描述

在commons中接收光标参数main.html,并设置条件语句判断,有接收到,则亮,没有接收到,则不亮

在这里插入图片描述

在这里插入图片描述

效果

在这里插入图片描述

  • 可以理解为 引用,然后传参数

在这里插入图片描述

5)list显示员工的信息

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

td:加粗、居中

添加操作

在这里插入图片描述

在这里插入图片描述

springboot内部嵌入了一些CSS样式,所有只要指定类,就可以自动使用 类选择器,来修饰按钮
显示出现问题,修改就好

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 显示信息过程:

添加表格表项→添加dao取出的数据(注意中间参数)→添加管理操作(注意CSS样式)→修改信息的格式(查表)

6、添加员工实现

1)按钮提交

  • 步骤如下:

在这里插入图片描述

  • 添加添加按钮,添加超链接

在这里插入图片描述

点击后的请求是get请求

2)设置链接的跳转

  • 添加add页面

复制一份list.html,命名为add.html,只需修改表单部分即可

在这里插入图片描述

  • 表单添加的位置

在这里插入图片描述

3)找表单样式

  • 找表单样式,去bookstrap找

在这里插入图片描述

  • 找自己喜欢的表单,改就好了

在这里插入图片描述

  • 表单形式

在这里插入图片描述

4)修改表单的内容

  • 先复制一份 list.html 到 add.html 中

  • 添加各自的name属性(没有name,无法提交),并对应实体类的属性

在这里插入图片描述

  • name和value:name一定要对应实体类的信息,否则后续操作,会报错,数据传输错误

5)获取数据

  • 利用dao,获取departments的所有部门数据

在这里插入图片描述

model传递参数,内容就是:所有部门的数据,传入页面当中去

  • 修改下拉列表的部门数据

在这里插入图片描述

在这里插入图片描述

6)表单链接的特殊用法post

  • 同一个链接的不同的用法,区分开来,方便接收后,功能的实现在这里插入图片描述

  • Post接收,专门用于接收表单的链接

在这里插入图片描述

  • 先保证逻辑是对的,然后再往下,写代码,逻辑不能错
  • 注意:redirect的使用格式: redirect:/emps,别用中文输入法输入。
  • 区分forward和redirect:去找thymeleaf的源码中的视图解析器

在这里插入图片描述

  • 理解视图解析器里面的内容

在这里插入图片描述

7)保存员工信息

  • 保存员工信息,并显示在页面上

在这里插入图片描述

  • 处理错误

在这里插入图片描述

8)遇到问题

在这里插入图片描述

绑定数据失败,验证employee失败了

在这里插入图片描述

9)格式问题

springboot自动配置了 dd/mm/yyyy

在这里插入图片描述

在这里插入图片描述

  • 格式错了!!!

找源码,看底层,默认的

在这里插入图片描述

找默认配置信息的另一种方法:从application.properties中找

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

所以,自定义的格式会报错,因为程序采取默认的格式,这是springboot自动装配的原因

  • 自定义的时间格式:需要在application.properties配置

在这里插入图片描述

  • 注意点

在这里插入图片描述

  • 我们接收的是一个对象:employee,只需要提交一个属性:id

  • save()方法保存一个指定id的employee

  • 总结:设置按钮,添加超链接→在controller中设置链接跳转链接→修改表单内容th→在controller中利用引用类型dao,来获取数据,设置传输参数→设置表单跳转链接→保存信息→处理格式问题

7、修改员工信息

1)创建update页面

在这里插入图片描述

2)将属性id作为链接参数

在这里插入图片描述

在这里插入图片描述

3)设置跳转的的链接

获取id数据

在这里插入图片描述

4)修改映射update对应的员工属性信息

  • 如果页面加载不出来,可以重新加载一下,或者重启idea

在这里插入图片描述

  • 查出部门信息,方便页面的修改

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

报错:

在这里插入图片描述

解决:

在这里插入图片描述

点击编辑效果:

在这里插入图片描述

5)员工修改保存操作

在这里插入图片描述

在这里插入图片描述

  • 和增加员工的操作没有本质的区别

在这里插入图片描述

在这里插入图片描述

6)报错解决

①时间格式报错

在这里插入图片描述

②修改后员工id自增

在这里插入图片描述

在这里插入图片描述

  • 携带id的隐藏域,将id隐藏起来,这样主键自增会识别是不是新的id,不是,就可以实现修改对应员工信息了,而不至于增加新的员工信息

在这里插入图片描述

  • 总结:创建update页面→将属性id作为链接参数→设置跳转链接(并获取id数据)→修改映射update对应的员工属性信息→员工修改保存操作,设置表单跳转链接→格式报错问题

8、删除员工及404处理

1)修改 list.html 页面

在这里插入图片描述

2)添加跳转链接和删除操作

404不需要设置跳转,遇到报错,它会自动跳转

所以"redirect:/emps"返回正常list列表即可

在这里插入图片描述

3)添加404

在这里插入图片描述

  • 404这个数字可以自己设定,就是html的名字

在这里插入图片描述

在这里插入图片描述

  • 总结:修改list页面→添加跳转链接和删除操作→添加404

9、注销功能

在这里插入图片描述

在这里插入图片描述

  • 重点:href链接+Cotroller的链接跳转设置
  • 总结:修改common页面的注册链接 → 设置跳转链接操作 → 并删除用户名,让登录名失效,踢出

笔者已经实践过上述提到的功能,方案确实可行。阅读和理解本笔记可以对读者如何使用SpringBoot简单搭建web应用起引导作用,若读者需要实践,可以去狂神老师的公众号或视频下载基础代码加深理解。

SpringBoot学习(三)-员工管理系统开发理解的学习笔记到此完结,笔者归纳、创作不易,大佬们给个3连再起飞吧


http://www.ppmy.cn/news/1290553.html

相关文章

音频筑基:巴克谱和梅尔谱辨析

音频筑基:巴克谱和梅尔谱辨析 是什么深入了解相关参考 在音频信号处理中,巴克谱和梅尔谱是我们经常遇到的概念,也是语音处理中常用到的频域特征,这里谈谈自己对它们的理解。 是什么 巴克谱又称Bark Spectrum,梅尔谱又…

智能化校园:深入探讨云端管理系统设计与实现(二)

系列文章目录 智能化校园:深入探讨云端管理系统设计与实现(一) 文章目录 系列文章目录功能开发登录功能分析验证码功能实现登录校验功能登录后跳转功能 系统管理器实现验证码响应图片功能实现异步图片上传头像功能实现全局修改密码功能实现 …

28、商城系统(十):ElasticSearch的映射,nginx下载安装,es分词器,springboot整合es

目录 一、Mapping映射 1.es7删除类型 2.es给字段设置字段类型,即映射 (1)创建映射

python弹奏《起风了》

代码是很大的! 其实就是python用ctypes调用Win API import ctypes import threading import time winmm = ctypes.windll.winmmclass Scale:Rest = 0C8 = 108B7 = 107A7s = 106A7 = 105G7s = 104G7 = 103F7s = 102F7 = 101E7 = 100D7s = 99D7 = 98C7s = 97C7 = 96B6 = 95A6s…

4.Unity中向量相关

向量 //三维向量 - Vector3 //Vector3有两种几何意义 //1.位置 -- 代表一个点 print(this.transform.position);//2.方向 -- 代表一个方向 print(this.transform.forward); print(this.transform.up); 两点决定一个向量 //A和B此时 几何意义 是两个点Vector3 A new Vector3(…

elasticsearch操作索引库

目录 一、创建索引库 二、查询索引库 三、删除索引库 四、修改索引库 mapping映射属性 mapping是对索引库中文档的约束,常见的mapping属性包括: type:字段数据类型,常见的简单类型有: 字符串:text&…

【论文阅读】Self-Paced Curriculum Learning

论文下载 代码 Supplementary Materials bib: INPROCEEDINGS{,title {Self-Paced Curriculum Learning},author {Lu Jiang and Deyu Meng and Qian Zhao and Shiguang Shan and Alexander Hauptmann},booktitle {AAAI},year {2015},pages {2694--2700} }1. 摘…

Linux下查看CPU信息

#lscpu Architecture: x86_64,表示系统的处理器架构为x86-64。CPU op-mode(s): 32-bit, 64-bit,表示处理器支持32位和64位操作系统。Byte Order: Little Endian,表示系统使用的字节序为小端序。CPU(s): 96,表示系统中有96个CPU核…