商品搜索结果展示——淘淘商城(二十一)

原创 2018年04月15日 12:16:17

商品搜索

需求

分析

  • head.jsp中调用search函数,参数值为key。
    9.searchKey.png
  • 这个search函数在base-v1.js中,包含请求url。
    9.searchjs.png
  • 响应的search.jsp中需要通过调用服务获取一些参数,包含商品列表、查询字符串、分页信息。
    9.params1.png
    9.params2.png
  • 注意item中需要包含图片列表的images属性,而数据库中image字段是用逗号分隔的url,需要转换。
http://192.168.57.139/2018/04/14/1523681619033411.jpg,http://192.168.57.139/2018/04/14/1523681619250477.jpg,http://192.168.57.139/2018/04/14/1523681619979646.jpg

总结

  • 在taotao-portal中开发。
  • 请求url:http://localhost:8082/search.html?q={查询字符创}
  • 请求参数:url中的查询字符串,当前页(默认1)。
  • 响应结果:包含参数的search.jsp。
    • query:查询字符串。
    • totalPages,page:分页信息。
    • itemList:商品列表,注意item中images属性。

Service层

  • pojo包下创建SearchResult和Item这两个类。Item中的images属性将image转换为Url的数组。
public class SearchResult {

    //查询结果列表
    private List<Item> list;
    //总记录数
    private long recordCount;
    //总页数
    private long pageCount;
    //当前页
    private long curPage;
}
public class Item {

    private String id;
    private String title;
    private String sellPoint;
    private long price;
    /**
     * 使用,分隔的多个图片url
     */
    private String image;
    private String categoryName;
    private String itemDesc;
    /**
     * 图片url的数组
     */
    private String[] images;

    public String[] getImages() {
        if (images == null) {
            setImages(image.split(","));
        }
        return images;
    }

    public void setImages(String[] images) {
        this.images = images;
    }
}
  • rest.properties中配置搜索服务的url。
#搜索服务基础url
SEARCH_SERVICE_URL=http://localhost:8083/search/query
  • 创建SearchService和实现类,根据查询字符串和页码,调用searh工程提供的服务,查询结果。
@Service
public class SearchServiceImpl implements SearchService {

    @Value("${SEARCH_SERVICE_URL}")
    private String SEARCH_SERVICE_URL;

    @Override
    public SearchResult search(String queryString, int page) {
        //设置查询参数
        Map<String, String> params = new HashMap<>();
        params.put("q", queryString);
        params.put("page", String.valueOf(page));

        try {
            //执行查询
            String res = HttpClientUtil.doGet(SEARCH_SERVICE_URL, params);
            TaotaoResult taotaoResult = TaotaoResult.formatToPojo(res, SearchResult.class);
            if (taotaoResult.getStatus() == 200) {
                SearchResult result = (SearchResult) taotaoResult.getData();
                return result;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

Controller层

  • 创建SearchController,接收查询字符串和页码,调用Service层,回显参数和逻辑视图。
@Controller
public class SearchController {

    @Autowired
    private SearchService searchService;

    @RequestMapping("/search")
    public String search(@RequestParam("q") String queryString, @RequestParam(defaultValue = "1") Integer page,
            Model model) {
        SearchResult searchResult = searchService.search(queryString, page);

        model.addAttribute("query", queryString);
        model.addAttribute("totalPages", searchResult.getPageCount());
        model.addAttribute("itemList", searchResult.getList());
        model.addAttribute("page", page);

        return "search";
    }
}

运行工程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40369829/article/details/79948146

学习淘淘商城第四十八课(商品搜索功能Controller实现)

在taotao-search-web工程需要添加对Search服务的引用,如下图所示。         springmvc.xml文件所有代码如下: ...
  • u012453843
  • u012453843
  • 2017-05-01 22:13:34
  • 1348

淘淘商城系列——商品搜索功能Dao实现

终于进入商品搜索功能的开发中了,本文我来教大家编写实现商品搜索功能的Dao层代码。 我们现在是在开发商品搜索功能,访问索引库也就是数据访问,那么Dao层应该使用什么来访问呢?使用SolrServer...
  • yerenyuan_pku
  • yerenyuan_pku
  • 2017-06-08 01:49:06
  • 1817

淘淘商城系列——实现商品详情页面展示

我相信大家通过上文的学习已经搭建好了商品详情页面展示工程,本文我将带领大家一起实现商品详情页面展示。 首先我们来看一下商品详情页面代码,可以看到商品一般属性在TbItem实体类中都是存在的,只是图片...
  • yerenyuan_pku
  • yerenyuan_pku
  • 2017-06-11 01:35:02
  • 2601

淘淘商城商品类目展示添加缓存

一、分析 在不影响原有的逻辑上,添加缓存,分为两块,一块是执行结果后存储缓存,一块是在执行之前调用缓存 二、缓存添加 1.打开taotao-rest工程,找到商品类目展示的service(I...
  • qq_31634461
  • qq_31634461
  • 2017-12-02 19:43:53
  • 2431

淘淘商城系列——商品搜索功能Service实现

首先我们在taotao-search-interface工程中新建一个SearchService接口,并在接口中添加一个方法,如下图所示。 接着,我们到taotao-search-service...
  • yerenyuan_pku
  • yerenyuan_pku
  • 2017-06-08 11:09:12
  • 1605

淘淘商城实现商品规格模板列表展示的实现

在做淘淘商城项目的时候,想实现展示商品规格模板列表的展示功能,因为是单表查询(数据库中有专门的tb_item_param这个表),所以DAO层可以使用逆向工程的代码。 service层:   (1...
  • zlj1217
  • zlj1217
  • 2017-04-16 20:09:57
  • 2442

淘淘商城系列——展示购物车商品列表

通过上文的学习,想必大家都已经实现了添加购物车的功能,本文我们将一起实现展示购物车商品列表的功能。 我们访问淘淘商城首页(前提是启动了所有的服务及工程,虽然有个别工程用不上,不过也没关系),点击“去...
  • yerenyuan_pku
  • yerenyuan_pku
  • 2017-06-16 18:27:50
  • 2382

【03】淘淘商城-规格参数展示

写这篇博客的起因是因为老师留的一个小作业: 5.3.1规格参数列表 从tb_item_param中查询数据展示到jsp,单表查询,实现分页。 作业!! 但是写完以后发现这里面并没有那么简单,所以写下笔...
  • wb8878
  • wb8878
  • 2017-08-18 16:22:55
  • 1220

淘淘商城系列——freemarker入门

通过上文的学习,我相信大家都已经学会在商品详情页面展示时添加缓存了,从现在开始,我们将步入freemarker的学习中。 我们都知道,缓存可以提高查询性能,但是当用户访问量很大时,单纯依靠缓存已经不...
  • yerenyuan_pku
  • yerenyuan_pku
  • 2017-06-11 15:15:22
  • 1398
收藏助手
不良信息举报
您举报文章:商品搜索结果展示——淘淘商城(二十一)
举报原因:
原因补充:

(最多只允许输入30个字)