06_SpringBoot_RESTful_CRUD

[TOC]

静态资源文件 - PathA

静态资源文件 - PathB

Demo from GitHub

  1. 将静态资源(css,img,js)添加到项目中,放到 SpringBoot 默认的静态资源文件夹下

  2. 将模板文件(html)放到 template文件夹下

1573896827010

如果你的静态资源明明放到了静态资源文件夹下却无法访问,请检查一下是不是在自定义的配置类上加了@EnableWebMvc注解

默认访问首页

template文件加不是静态资源文件夹,默认是无法直接访问的,所以要添加视图映射

访问:http://localhost:8080/

i18n国际化

  1. 编写国际化配置文件,抽取页面需要显示的国际化消息

    创建i18n文件夹存放配置文件,文件名格式为基础名(login)+语言代码(zh)+国家代码(CN)

    ResourceBundle配置A

    ResourceBundle配置B

  2. SpringBoot自动配置好了管理国际化资源文件的组件

  3. 使用 ResourceBundleMessageSource 在配置文件中添加国际化文件的位置和基础名

    如果配置文件中没有配置基础名,就在类路径下找基础名为 message 的配置文件

  4. 将页面文字改为获取国际化配置,格式 #{key},在页面使用 fmt:message 取出国际化内容

  5. 然后就可以更改浏览器语言,页面就会使用对应的国际化配置文件

    1573900071209

    image-20200628212019734

  6. 原理

    国际化Locale(区域信息对象);

    LocaleResolver(获取区域信息对象的组件);

    在springmvc配置类WebMvcAutoConfiguration中注册了该组件

    点击链接切换国际化

    默认的就是根据请求头带来的区域信息获取Locale进行国际化

点击连接切换语言

  1. 实现点击连接切换语言,而不是更改浏览器

    • 修改页面,点击连接携带语言参数

    • 自己实现区域信息解析器

    • 在配置类中将其注册到容器中

如果没有生效,请检查@Bean的那个方法的名称是否为localeResolver

实现登录功能

  1. 提供登录的controller

  2. 修改表单提交地址,输入框添加name值与参数名称对应

  3. 由于登录失败是转发,所以页面的静态资源请求路径会不正确,使用模板引擎语法替换

  4. 添加登录失败页面显示

修改页面立即生效

开发期间模板引擎页面修改以后,要实时生效

  1. 禁用模板引擎的缓存

  2. 在页面修改完成以后按快捷键ctrl+f9,重新编译;

拦截器进行登陆检查

  1. 实现拦截器

  2. 注册拦截器

    在spring2.0+的版本中,只要用户自定义了拦截器,则静态资源会被拦截。但是在spring1.0+的版本中,是不会拦截静态资源的。

    因此,在使用spring2.0+时,配置拦截器之后,我们要把静态资源的路径加入到不拦截的路径之中。

CRUD-员工列表

使用rest风格

实验功能

请求URI

请求方式

查询所有员工

emps

GET

查询某个员工(来到修改页面)

emp/1

GET

来到添加页面

emp

GET

添加员工

emp

POST

来到修改页面(查出员工进行信息回显)

emp/1

GET

修改员工

emp

PUT

删除员工

emp/1

DELETE

  1. 为了页面结构清晰,在template文件夹下新建emp文件夹,将list.html移动到emp文件夹下

  2. 将dao层和实体层java代码复制到项目中daoentities

  3. 添加员工controller,实现查询员工列表的方法

  4. 修改后台页面,更改左侧侧边栏,将customer改为员工列表,并修改请求路径

  5. 同样emp/list页面的左边侧边栏是和后台页面一模一样的,每个都要修改很麻烦,接下来,抽取公共片段

thymeleaf公共页面元素抽取

~{templatename::selector}:模板名::选择器

~{templatename::fragmentname}:模板名::片段名

具体参考官方文档:https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#including-template-fragments

三种引入公共片段的th属性:

  • th:insert:将公共片段整个插入到声明引入的元素中

  • th:replace:将声明引入的元素替换为公共片段

  • th:include:将被引入的片段的内容包含进这个标签中

后台页面抽取

  1. 将后台主页中的顶部导航栏作为片段,在list页面引入

    dashboard.html:

    list.html:

  2. 使用选择器的方式 抽取左侧边栏代码

    dashboard.html:

    list.html:

引入片段传递参数

实现点击当前项高亮

dashboard.html中的公共代码块抽出为单独的html文件,放到commos文件夹下

在引入代码片段的时候可以传递参数,然后在sidebar代码片段模板中判断当前点击的链接

语法:

topbar.html

sidebar.html

然后在dashboard.htmllist.html中引入

  1. 显示员工数据,添加增删改按钮

员工添加

  1. 创建员工添加页面add.html

  2. 点击链接跳转到添加页面

  3. EmpController添加映射方法

  4. 修改页面遍历添加下拉选项

  5. 表单提交,添加员工

日期格式修改

表单提交的日期格式必须是yyyy/MM/dd的格式,可以在配置文件中修改格式

员工修改

  1. 点击按钮跳转到编辑页面

  2. 添加编辑页面,表单的提交要为post方式,提供_method参数

  3. Controller转发到编辑页面,回显员工信息

  4. 提交表单修改员工信息

员工删除

  1. 点击删除提交发出delete请求

    如果提示不支持POST请求,在确保代码无误的情况下查看是否配置启动HiddenHttpMethodFilter

    1573987255217

    这个好像是2.0版本以后修改的

    1573988088629

    如果删除不掉,请修改EmployeeDao,把String转为Integer类型

最后更新于

这有帮助吗?