Springboot Web开发

静态资源的导入

resources目录下存放静态资源。

模板引擎Thymeleaf

就是将后端的数据渲染到前端的页面上去显示,例如 jsp 就是一个模板引擎。

thymeleaf 的使用

首先导入它的依赖,在springboot中要添加其他组件,没有什么是一个starter解决不了的!

1
2
3
4
5
<!--thymeleaf-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

将测试页面放在templates目录下,编写conntroller跳转页面

1
2
3
4
5
6
7
@Controller
public class TestController {
@RequestMapping("/test1")
public String test1(){
return "test1";
}
}

thmeleaf 语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>test1</h1>
<!--所有的html元素都可以被thymeleaf替换接管 th:元素名-->
<p th:text="${msg}"></p>
<hr/>
<!--循环-->
<div th:each="val:${arr}" th:text="${val}"></div>
<!--传递参数-->
<a th:href="@{/toUpdate/}+${emp.getId()}">编辑</a>
<a th:href="@{/delete/}+${emp.getId()}">删除</a>
<!--引入公共组件-->
<div th:replace="~{common/common::topbar}"></div>
<!--日期格式化-->
<p th:text="${#dates.format(emp.getBirth(),'yyyy-MM-dd')}"></p>
</body>
</html>

接管SpringMVC

创建config目录,在config目录下编写类,用来接管、扩展SpringMVC

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
@Override // 配置页面映射关系
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("/index");
registry.addViewController("/index.html").setViewName("/index");
registry.addViewController("/main.html").setViewName("/dashboard");
}

@Override // 配置拦截器
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/*")
.excludePathPatterns("/index.html","/","/user/login","/static/**");
}
}

编写拦截器的实现类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class LoginHandlerInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 登录成功后有user的session
Object loginUser = request.getSession().getAttribute("loginUser");
if(loginUser==null){
// 没有登录
request.setAttribute("msg","没有权限,请登录!");
request.getRequestDispatcher("/index.html").forward(request,response);
return false;
}
return true;
}
}

处理器接收页面传参

1
<a th:href="@{/delete/}+${emp.getId()}">删除</a>
1
2
@RequestMapping("/delete/{id}")// @PathVarable 接收路径中占位符的值
public String delete(@PathVariable("id")Integer id){}

项目配置文件

1
2
3
4
5
6
7
8
9
10
11
# 关闭thymeleaf 缓存
spring.thymeleaf.cache=false

# 项目路径 localhost:8080/zyz
server.servlet.context-path=/springboot_web

# 国际化
# spring.messages.basename=i18n.login

# 时间日期格式化
spring.mvc.format.date=yyyy-MM-dd