注:只有后端,没有前端,可以观看以下视频学习
狂神视频
1、项目搭建
-
创建项目(修改版本,如果版本本身没有问题就不用改)
-
pom文件
-
关闭thymeleaf的缓存
-
导入老师给的前端页面资源(资源我没找到)
前端页面:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8"/>
<title>狂神说Java-ES仿京东实战</title>
<link rel="stylesheet" th:href="@{/css/style.css}"/>
</head>
<body class="pg">
<div class="page" id="app">
<div id="mallPage" class=" mallist tmall- page-not-market ">
<!-- 头部搜索 -->
<div id="header" class=" header-list-app">
<div class="headerLayout">
<div class="headerCon ">
<!-- Logo-->
<h1 id="mallLogo">
<img th:src="@{/images/jdlogo.png}" alt="">
</h1>
<div class="header-extra">
<!--搜索-->
<div id="mallSearch" class="mall-search">
<form name="searchTop" class="mallSearch-form clearfix">
<fieldset>
<legend>天猫搜索</legend>
<div class="mallSearch-input clearfix">
<div class="s-combobox" id="s-combobox-685">
<div class="s-combobox-input-wrap">
<input v-model="keyword" type="text" autocomplete="off" value="dd" id="mq"
class="s-combobox-input" aria-haspopup="true">
</div>
</div>
<button type="submit" @click.prevent="searchKey" id="searchbtn">搜索</button>
</div>
</fieldset>
</form>
<ul class="relKeyTop">
<li><a>狂神说Java</a></li>
<li><a>狂神说前端</a></li>
<li><a>狂神说Linux</a></li>
<li><a>狂神说大数据</a></li>
<li><a>狂神聊理财</a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<!-- 商品详情页面 -->
<div id="content">
<div class="main">
<!-- 品牌分类 -->
<form class="navAttrsForm">
<div class="attrs j_NavAttrs" style="display:block">
<div class="brandAttr j_nav_brand">
<div class="j_Brand attr">
<div class="attrKey">
品牌
</div>
<div class="attrValues">
<ul class="av-collapse row-2">
<li><a href="#"> 狂神说 </a></li>
<li><a href="#"> Java </a></li>
</ul>
</div>
</div>
</div>
</div>
</form>
<!-- 排序规则 -->
<div class="filter clearfix">
<a class="fSort fSort-cur">综合<i class="f-ico-arrow-d"></i></a>
<a class="fSort">人气<i class="f-ico-arrow-d"></i></a>
<a class="fSort">新品<i class="f-ico-arrow-d"></i></a>
<a class="fSort">销量<i class="f-ico-arrow-d"></i></a>
<a class="fSort">价格<i class="f-ico-triangle-mt"></i><i class="f-ico-triangle-mb"></i></a>
</div>
<!-- 商品详情 -->
<div class="view grid-nosku">
<div class="product" v-for="result in results">
<div class="product-iWrap">
<!--商品封面-->
<div class="productImg-wrap">
<a class="productImg">
<img :src="result.img">
</a>
</div>
<!--价格-->
<p class="productPrice">
<em>{{result.price}}</em>
</p>
<!--标题-->
<p class="productTitle">
<a v-html="result.title"> </a>
</p>
<!-- 店铺名 -->
<div class="productShop">
<span>店铺: 狂神说Java </span>
</div>
<!-- 成交信息 -->
<p class="productStatus">
<span>月成交<em>999笔</em></span>
<span>评价 <a>3</a></span>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script th:src="@{/js/axios.min.js}"></script>
<script th:src="@{/js/vue.min.js}"></script>
<script>
new Vue(
{
el: '#app',
data: {
keyword: '', //搜索的关键字
results: [] //搜索结果
},
methods: {
searchKey(){
var keyword = this.keyword;
console.log(keyword);
//对接后端的接口
axios.get('search/'+keyword+"/1/10").then(response=>{
console.log(response.data);
this.results = response.data; // 绑定数据!
})
}
}
}
)
</script>
</body>
</html>
- 写controller测试一下项目可不可以
- 启动项目测试出现以下页面
2、爬取数据
爬取数据(获取请求返回的页面信息,筛选出我们想要的数据就可以了)
数据问题?数据库获取,消息队列中获取,都可以成为数据源,现在可以 爬虫获取数据!
-
pom文件中添加jsoup依赖
-
编写解析网页的工具类
J_goodsList是在京东页面查看源代码找出来的
输出一下可以看到这些内容
-
创建实体类
-
修改上面的工具类:
-
运行输出结果:
3、业务编写
- 编写config配置类,spring整合es
- 在Elasticsearch新建索引jd_goods
- service层
上面这个不能使用main方法来进行测试,因为使用了spring容器。所以将上面的main方法删除,具体代码如下图所示:
- controller层
- 启动项目测试
一开始jd_goods索引里是没有东西的
解析数据之后,数据就存到jd_goods索引里了
刷新Elasticsearch就可以看到数据了,但是有时候数据出现不完全,可以多刷新几次
这样之后后端的数据就入库了 - 解析获取这些数据,继续在service层写代码
- controller层继续添加如下代码
- 启动项目测试
4、绑定前端
前端使用vue完成前后端分离,这里省略,没有前端代码,视频可以看这里:
https://www.bilibili.com/video/BV1Nk4y1R7Hf?p=4&spm_id_from=pageDriver
5、搜索高亮
- service层加入高亮代码:
- 修改service层的代码用于解析高亮:
- 修改前端代码启动即可看到高亮部分