祝大家2022新年快乐!历史记录一、运行环境二、PagheHelper插件插件实现分页显示三、根据商品名称进行模糊查询四、Thymeleaf引擎使用五、BUG & DeBug
5.1 iframe指定其他页面,显示找不到路径5.2 JS函数修改全局变量的形参没有作用5.3 Thymeleaf页面获取不到session域的值
历史记录
Web项目实战 | 购物系统v2.0 | 开发记录(一)需求分析 | 技术选型 | 系统设计 | 数据表设计 | SpringBoot、SSM、Thymeleaf、Bootstrap…
Web项目实战 | 购物系统v2.0 | 开发记录(二)搭建SpringBoot+SSM框架环境 | 配置Druid+MyBatis | 基于Bootstrap实现登陆页面| 图片验证码接口
一、运行环境windows10IDEA 2021.1 专业版JDK8SpringBoot2Druid 1.2.5Bootstrap 4.6.0MySQL 8Navicat 11 二、PagheHelper插件插件实现分页显示
PageHelper插件是基于MyBatis框架实现的,使用原先的pageHelper插件需要有配置文件,而在SpringBoot项目中只要设置起步依赖,配置即用,十分的方便
pom.xml
org.mybatis.spring.boot mybatis-spring-boot-starter 2.2.1 com.github.pagehelper pagehelper-spring-boot-starter 1.4.1
前端代码:
![]()
¥
控制层
@GetMapping("/index.html/{pageNow}")
public String findAllByPage(ModelMap modelMap,
@PathVariable(value = "pageNow" , required = false)
Integer pageNow,
@RequestParam(value = "pageSize", defaultValue = "10")
Integer pageSize){
if(pageNow == null) pageNow = new Integer(1);
PageHelper.startPage(pageNow, pageSize);
List comInfo = commodityMapper.selectByExample(new CommodityExample());
PageInfo pageInfo = new PageInfo<>(comInfo);
// 首页设置上一个页面为1,防止上一页到末页
if(pageNow == 1) pageInfo.setPrePage(1);
// 末页设置最后一个页面,防止下一页到首页
if(pageInfo.getNextPage() == 0) pageInfo.setNextPage(pageInfo.getPrePage() + 1);
modelMap.addAttribute("pageNow", pageNow);
modelMap.addAttribute("pageSize", pageSize);
modelMap.addAttribute("comInfo", comInfo);
modelMap.addAttribute("pageInfo", pageInfo);
return "index";
}
三、根据商品名称进行模糊查询
使用MyBatis逆向工程生成的Mapper接口进行查询
前端页面:
控制层
@GetMapping("/search.html/{searchText}/{pageNow}")
public String findBySome(ModelMap modelMap,
@PathVariable String searchText,
@PathVariable(value = "pageNow" , required = false)
Integer pageNow,
@RequestParam(value = "pageSize", defaultValue = "10")
Integer pageSize){
if(pageNow == null) pageNow = new Integer(1);
PageHelper.startPage(pageNow, pageSize);
CommodityExample e1 = new CommodityExample() {{
createCriteria().andComNameLike("%" + searchText + "%");
}};
List comInfo = commodityMapper.selectByExample(e1);
PageInfo pageInfo = new PageInfo<>(comInfo);
// 首页设置上一个页面为1,防止上一页到末页
if(pageNow == 1) pageInfo.setPrePage(1);
// 末页设置最后一个页面,防止下一页到首页
if(pageInfo.getNextPage() == 0) pageInfo.setNextPage(pageInfo.getPrePage() + 1);
modelMap.addAttribute("pageNow", pageNow);
modelMap.addAttribute("pageSize", pageSize);
modelMap.addAttribute("comInfo", comInfo);
modelMap.addAttribute("pageInfo", pageInfo);
System.out.println("ok!" + searchText);
return searchText == null ? "/index.html/1" : "index";
}
四、Thymeleaf引擎使用
基本语法:
th:fragment="名称" 创建页面th:replace="页面路径::页面部分" 替换指定的页面
使用Thymeleaf渲染页面十分方便,能把不同的代码分为不同模块,如下图所示:
其中,除了 link 、script 标签借助 th:href、th:src 引入了pom.xml依赖里的jar包和静态资源以外,能使用其他的元素内标签借助th:replace进行替换,替换的内容就是在其他支持thymeleft的HTML页面的一部分,比如search.html的内容就是之前实现模糊查询的部分,如下图所示:
search.html 里声明当前标签的为 th:fragment="search"
5.1 iframe指定其他页面,显示找不到路径
BUG:
解决: 在使用th:标签时指定路径,需要加上@{}符号,如:



