栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Web项目实战 | 购物系统v2.0 | 开发记录(三)分页显示 | 根据商品名称进行模糊查询

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Web项目实战 | 购物系统v2.0 | 开发记录(三)分页显示 | 根据商品名称进行模糊查询

祝大家2022新年快乐!

文章目录

祝大家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"

五、BUG & DeBug
5.1 iframe指定其他页面,显示找不到路径

BUG:

解决: 在使用th:标签时指定路径,需要加上@{}符号,如: