Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)十五(实现商品页面搜索功能,以及分页功能)

外链图片转存中…(img-UbaJB5Gy-1713508812610)][外链图片转存中…(img-ow0Mdauh-1713508812610)]
摘要由CSDN通过智能技术生成

},

methods:{

loadData(){

//发送数据到后台

ly.http.post(“/search/page”,this.search).then(resp => {

console.log(resp);

}).catch(error =>{

})

}

},

3)刷新页面观察请求发送情况

请求路径

在这里插入图片描述

请求参数

在这里插入图片描述

发送请求成功

2、后台接收请求并返回数据

(1)编写对象用于接收页面发送的请求

在这里插入图片描述

在这里插入图片描述

package com.leyou.search.pojo;

public class SearchRequest {

private String key;//搜索字段

private Integer page;//当前页

private static final Integer DEFAULT_SIZE = 20;//每页个数

private static final Integer DEFAULT_PAGE = 1;//默认页

public String getKey() {

return key;

}

public void setKey(String key) {

this.key = key;

}

public Integer getPage() {

if(page == null){

return DEFAULT_PAGE;

}

//获取页码的时候进行校验,不能小于1

return Math.max(DEFAULT_PAGE,page);// Math.max返回DEFAULT_PAGE,page之间的最大值

}

public void setPage(Integer page) {

this.page = page;

}

public static Integer getDefaultSize() {

return DEFAULT_SIZE;

}

}

(2)SearchController

首先分析几个问题:

  • 请求方式:Post

  • 请求路径:/search/page,不过前面的/search应该是网关的映射路径,因此真实映射路径page,代表分页查询。

  • 请求参数:json格式,目前只有一个属性: key,搜索关键字,但是搜索结果页一定是带有分页查询的,所以将

来肯定会有page属性,因此我们可以用一个对象来接收请求的json数据:

  • 返回值为之前定义的PageResult

在这里插入图片描述

在这里插入图片描述

package com.leyou.search.web;

import com.leyou.common.vo.PageResult;

import com.leyou.search.pojo.Goods;

import com.leyou.search.pojo.SearchRequest;

import com.leyou.search.service.SearchService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.http.ResponseEntity;

import org.springframework.web.bind.annotation.PostMapping;

import org.springframework.web.bind.annotation.RequestBody;

import org.springframework.web.bind.annotation.RestController;

@RestController

public class SearchController {

@Autowired

private SearchService searchService;

/*

搜索功能

*/

@PostMapping(“page”)

public ResponseEntity<PageResult> search(@RequestBody SearchRequest request){

return ResponseEntity.ok(searchService.search(request));

}

}

(3)完善SearchService(设置将请求的字段进行)

在这里插入图片描述

在这里插入图片描述

public PageResult search(SearchRequest request) {

Integer page = request.getPage();

Integer size = request.getSize();

//创建查询构建器SpringDataElasticSearch - NativeSearchQueryBuilder过滤聚合高亮查询

NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder();

//0 结果过滤

queryBuilder.withSourceFilter(new FetchSourceFilter(new String[]{“id”,“subTitle”,“skus”},null));

//1 分页

queryBuilder.withPageable(PageRequest.of(page,size));

//2 过滤

queryBuilder.withQuery(QueryBuilders.matchQuery(“all”,request.getKey()));

//3 查询

Page result = repository.search(queryBuilder.build());

//4 解析结果

long total = result.getTotalElements();

int totalPage = result.getTotalPages();

List goodsList = result.getContent();

return new PageResult<>(total,totalPage,goodsList);

}

(4)从新启动运行测试

在这里插入图片描述

http://www.leyou.com/search.html?key=手机

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(4)上述当中我们发现其他字段都为null(设置jackson如果是null就不返回数据)

在这里插入图片描述

jackson:

default-property-inclusion: non_null

重新运行并测试

在这里插入图片描述

刷新刚刚的网页

返回完美的数据

在这里插入图片描述

测试翻页

在这里插入图片描述

在这里插入图片描述

(5)商户数情况下发现永远查询不到第一页所有需要修改代码(SearchService)

在这里插入图片描述

Integer page = request.getPage() - 1;

重新运行并测试

在这里插入图片描述

在这里插入图片描述

二、功能实现(前台)搜索功能


1、将返回的数据渲染到页面上

(1)找到页面上的 <div class="goods-list"> 删除其他的li,设置v-for

在这里插入图片描述</

  • 13
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本文介绍了一个基于Spring BootSpring CloudVue前后端分离项目实战。这个项目是一个简单的在线商城,包含了用户注册、登录、商品展示、购物车、订单管理等功能。通过这个项目,读者可以深入理解前后端分离的架构模式和互联网应用的开发方式。 首先,文章介绍了前后端分离的基本概念和优势。前后端分离是将应用的前端和后端代码分开来开发,使得前端和后端具有独立的开发周期和技术栈,进而提高了开发效率和代码质量。同时,前后端分离还可以提供更好的用户体验和灵活性,对于互联网应用来说尤为重要。 接下来,文章介绍了项目的架构和技术栈。项目采用了Spring BootSpring Cloud框架来实现后端代码,采用MyBatis作为ORM框架和Redis作为缓存中间件。同时,项目还采用了Vue.js作为前端框架和Element UI组件库来实现前端页面。通过这些开源框架和组件,可以快速搭建一个前后端分离的互联网应用。 然后,文章介绍了项目的核心功能和代码实现。在用户注册和登录方面,项目采用了Spring Security框架和JWT令牌来实现用户认证和授权,保证了用户信息的安全性。在商品展示和购物车方面,项目采用了Vue.js来实现前端页面和事件处理。在订单管理方面,项目采用了MyBatis Plus来实现订单数据的持久化和分页查询。 最后,文章介绍了项目的测试和优化。通过对项目的压力测试和性能测试,文章发现项目还存在一些性能瓶颈和安全隐患,可以通过优化数据库查询、缓存配置和代码实现来提高应用的性能和安全性。 总之,这篇文章介绍了一个基于Spring BootSpring CloudVue前后端分离项目实战,通过实现一个在线商城功能,展示了前后端分离的开发模式和互联网应用的开发技术栈。本文可以作为前后端分离开发的入门教程,也可以作为互联网应用开发的参考文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值