Spring Boot学习之---Spring Boot的Web开发2(七)

    科技2022-07-15  130

    一、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

    Processed: 0.008, SQL: 8