上一章
SpringBoot自学第6天——凡死了,爬了模板之家的会员付费精品网站模板
文章目录
前言
视频中有些问题,勉强算解决了,但进度只有六个视频。lombok里的@Slf4j
注解还挺好用的,建议使用。
网页用的雷神的网页(昨天的文章里面有链接),按部就班一向是最不用动脑筋的。
一、修改网页成thymeleaf格式
项目链接放最后,直接自己对照着看,过程的话雷神视频里有。
1. 公共页写法
head
标签里的引用放进公共页head
中,并且将链接改成th:href
或者th:src
这种后台注入的模板引擎格式。
分块引用时可以添加div
块元素来封装,然后给div
加上id
属性或者th:fragment
属性
2. 引用方法
有th:insert
、th:include
和 th:replace
三种引用方式,一般用replace即可
区别:
th:include
:加载模板的内容: 读取加载节点的内容(不含节点名称),替换div内容
th:replace
:替换当前标签为模板中的标签,加载的节点会整个替换掉加载他的div
th:insert
:将模板内容直接插入到当前标签内
调用方式:
- 如果在同一目录下,公共页名字为:common.html,引用的fragment名为foot则引用方式为:
<div th:replace="common::foot"/>
- 如果公共页在common目录下名为common.html,则引用方法为:
<div th:replace="common/common::foot"/>
- 如果需要引用的fragement属性处于当前页面下,则可以直接通过省略页面名来获取公共片段:
<div th:replace="::foot"/>
- 如果要加载整个页面,而不是某个fragment片段,可以直接写页面
相对路径/文件名
例如:<div th:replace="commont"/> 或者 <div th:replace="common/common"/>
- 如果引用的片段没有fragment属性,而只有id,则可以通过:
<div th:replace="common::#id属性"/>
(类似于有fragment的写法,只需属性前面(双冒号后面)加井号即可)
3. th:each
高级用法
<!--基础用法-->
<tbody>
<tr th:each="user:${users}">
<td th:text="${user.username}"></td>
<td th:text="${user.password}"></td>
</tr>
</tbody>
二、拦截器用法步骤
1.创建一个拦截器类,继承于HandlerInterceptor
继承了拦截器类后就可以重写里面的三个函数了:
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//do something 拦截前要做的事情
return false;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
//do something 拦截通过时的事情 这里可以在请求到达响应的响应函数前,改网页的请求参数,返回值等
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
//请求被响应后要干的事情,我也不知道能干什么,之前的知识都忘了
}
2. 修改MyConfig配置,添加一个拦截器
代码如下(示例):
//addPathPatterns函数是添加拦截的路径
//excludePathPatterns函数是抛弃拦截的路径(不拦截的路径)
@Configuration
public class MyConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginIntercepter())
.addPathPatterns("/**")
.excludePathPatterns("/","/login","/login.html","/css/**","/fonts/**","/images/**","/js/**","/error/**","/favicon.ico");
}
}
登陆功能的业务逻辑就不在这里写了,都比较简单,更何况还没整合数据库。
总结
修改网页浪费时间还很无聊,还是写业务逻辑的时候比较有意思。
我通过IDEA来初始化springboot项目模板,总是请求超时,唉,只能去网页再下载一次模板了。
gitee项目地址:SpringBoot自学第7天——thymeleaf+拦截器写好网页登陆功能
报错请检查lombok插件,并删除项目缓存,重新加载索引,清缓存的方式:file->invalidate->勾选第1个选项->确认。