一、RestfulCRUD
Restful风格,例:http://localhost:7001/xxx/itemEdit/2/牡丹。而非http://localhost:7001/xxx/itemEdit.do?id=2&name='牡丹'
1)、设置默认访问首页
设置所有的../请求或../index.html请求都发送到静态资源目录下的index.html页面
2)、使用模板引擎
使用thymeleaf引入公共资源@{/}:/代表当前项目下,如引入Bootstrap的公共资源,先引其依赖
3)、国际化
步骤:1、编写国际化配置文件,使用Resource Bundle视图2、Spring使用ResourceBundleMessageSource 管理国际化资源文件,但
Spring Boot自动配置好了管理资源国际化的组件。只需要在application.properties中设置国际化资源文件的基础名(基础名就是去掉语言国家代码的,如:login_zh_CN.properties的基础名是login)即可3、自动配置国际化的组件的
源码参考:MessageSourceAutoConfiguration类。4、在页面获取国际化内容,使用thymeleaf,获取如下#{}。注意行内写法[[#{}]]5、乱码问题6、点击链接切换国际化 --编写自己的区域信息解析器LocaleResolver并注册7、切换国际化的
原理: Locale(区域信息对象);LocaleResolver(区域信息解析器) WebMvcAutoConfiguration类里面配置了LocaleResolver自动注解,方法默认从请求头获取,如果我们想要实现 “自己链接切换国际化 ”的功能,就需要手动写一个LocaleResolver并@Bean进行注册,Spring Boot就会加载我们的LocaleResolver而非默认的(@ConditionalOnMissingBean)
4)、登陆
5)、开发时注意
在IDEA中模板引擎页面修改后并不会实时生效。若要实时生效,需做以下操作: 1、禁用模板引擎页面的缓存,配置:spring.thymeleaf.cache=false 2、页面修改完后,需按ctrl+f9进行重新编译 即可 因为IDEA不会自动重新编译
6)、拦截器进行登陆检查
登陆成功以后有这样一个问题:解决重复提交的办法就是:重定向 但这样又有了一个问题,就是直接复制../main.html页面到其他浏览器,不经过登陆就能访问到,登陆页面就失去效果了。可以使用拦截器来解决这个问题。 效果:
7)、Restful风格的CRUD
Restful风格的CRUD通过 请求方式来区分操作。 Restful风格,例:http://localhost:7001/xxx/itemEdit/2/牡丹。普通:http://localhost:7001/xxx/itemEdit.do?id=2&name='牡丹'。 参考:https://blog.csdn.net/qq_37358143/article/details/103509565 配合@PathVariable注解使用 实体类叫Emp。
普通CRUD(uri来区分操作)RestfulCRUD(请求方式来区分操作)
查询getEmp emps---GET 查询所有
emp/{id}---GET 查询单个
添加addEmp?xxxemp---POST修改updateEmp?id=xxx&xxx=xxemp/{id}---PUT删除deleteEmp?id=1emp/{id}---DELETE
8)、thymeleaf公共页面、公共元素抽取
1、抽取公共片段
<div th:fragment="copy">
© 2011 The Good Thymes Virtual Grocery
</div>
2、引入公共片段
<div th:insert="~{footer :: copy}"></div>
<div th:replace="~{footer :: copy}"></div>
<div th:include="~{footer :: copy}"></div>
~{footer :: copy}有两种实现方式:
~{templatename::selector}:模板名::选择器
~{templatename::fragmentname}:模板名::片段名
3、使用注意
在div中使用th:insert、th:replace、th:include属性进行引入,可以不用写~{},
但行内写法要加上:[[~{}]];[(~{})];
4、三种引入公共片段的th属性的区别:
th:insert:将公共片段整个插入到声明引入的元素中
th:replace:将声明引入的元素替换为公共片段
th:include:将被引入的片段的内容包含进这个标签中
参考thymeleaf的pdf文档的 “8 Template Layout”
三种引入方式的效果如下:
<footer th:fragment="copy">
© 2011 The Good Thymes Virtual Grocery
</footer>
引入方式
<div th:insert="footer :: copy"></div>
<div th:replace="footer :: copy"></div>
<div th:include="footer :: copy"></div>
效果
<div> --直接把上面的整个footer标签插入到div中
<footer>
© 2011 The Good Thymes Virtual Grocery
</footer>
</div>
<footer> --直接用footer标签替换引入的div
© 2011 The Good Thymes Virtual Grocery
</footer>
<div> --直接把footer标签里面的内容包含到div标签中
© 2011 The Good Thymes Virtual Grocery
</div>
9)、Restful CRUD-员工列表
10)、高亮显示:将需要高亮的页面地址通过()传进来active
参考:
11)、Restful CRUD-员工添加
包括两步:①跳转到添加页面emp---GET;②页面添加emp---POST
注意:日期格式的添加,Spring Boot里面默认的日期格式是spring.mvc.format.date=dd/MM/yyyy,如果想要改变录入的日志格式可以在application.properties文件里配置:spring.mvc.format.date=yyyy-MM-dd
12)、Restful CRUD-员工修改
包括两步:①跳转到修改页面emp/{id}---GET;②页面修改emp/{id}---PUT
修改和添加共用一个add.html页面,要区分是添加页面还是修改页面。添加:emp---POST ;修改:emp/{id}---PUT 效果:
13)、Restful CRUD-员工删除
这种delete方式失败了post也不行,get和post可以,报错:type=Method Not Allowed, status=405。 网上说是tomcat7以上会出现这个问题。暂未解决...12却成功了???... 参考:https://blog.csdn.net/Array_dear/article/details/79704233?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight