如题,在做毕设开始的时候就困扰了我很久的一个问题。SpringBoot不推荐使用jsp,而是推荐使用html。
这段时间真的难苦了。一直在思考怎么能像jsp一样直接从后台得到值类似于${data}这样获取。html又不能这样,也没有session那样的内置对象。因为html是静态页面嘛毕竟。
今天终于把thymeleaf配置成功啦~开心。
讲一下步骤:
- 引入Maven依赖
<dependency><!--页面模板依赖-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency><!--热部署依赖-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
这里我还引入了热部署依赖,虽然不知道有什么用。。。
- 配置application.yml
spring:
thymeleaf:
cache: false
prefix: classpath:/static/views/admin/
check-template: true
suffix: .html
encoding: UTF-8
servlet:
content-type: text/html
mode: HTML
prefix里面默认是从templates里面查询模板页面,因为我之前已经做了很多了页面全部放在views的amin路径下,所以我prefix设置到了我放置的文件夹下。
- 在Controller层返回modelAndView
//这里value我图方便设成这样,方便自己已经做好了的html里面的资源引用
@RequestMapping(value = "views/admin/searchPatent.action", method = RequestMethod.GET)
public ModelAndView searchByName(HttpServletRequest req) {
ModelAndView mv = new ModelAndView();
String searchName = req.getParameter("searchName");
List<Patent> patent = patentService.selectPatentByName(searchName);
if (patent.size() != 0) {
mv.addObject("code", 1);
mv.addObject("patent", patent);
mv.setViewName("searchPage.html");
} else {
mv.addObject("code", 0);
mv.setViewName("searchPage.html");
}
return mv;
}
- html页面配置
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
</head>
<body>
<p th:text="${patent[0].patentNo}"></p>
</body>
</html>
这样就配置好啦,页面里面就能像jsp一样从后台得到一堆一堆的数据啦~