基于NoSQL的租房信息系统

一、项目介绍

1.1 项目简介

本项目主题是“地区租房项目数据展示”,项目基于 SpringBoot 框架,主要使用了 MySQL、MongoDB 作为后台数据库,使用了 JSP、CSS、JS、JQuery等前端组件,使用了 SpringMVC视图解析器、Ajax 等前后端交互开发技术。

1.2项目目的

(1)熟练运用 NoSQL 数据库操作;
(2)熟悉 Spring 框架的 MVC 三层架构;
(3)使用 SpringBoot 简化 Spring 项目开发;
(4)熟悉前后端交互方式,熟悉交互数据类型等;

1.3运行环境

1.3.1硬件环境

(1)Windows 10 操作系统
(2)四核 i5 处理器

1.3.2软件环境

(1)Idea 编译器
(2)Chrome 浏览器(测试前端页面)
(3)Tomcat v9.0.33
(4)SpringBoot 2.7.7

1.4项目组件

在这里插入图片描述

1.5项目设计

1.5.1数据库设计

User表(MySQL):
User 表用于存储用户登录信息,包含 4 个字段,分别为: ①user_id (int,主键)、②identity ( varchar )、③username ( varchar)、④password ( varchar )。

在这里插入图片描述

RentInfo表(MongoDB):
RentInfo表用于存储租房房源信息,包含 9个字段,分别为:①_id(Integer)、②address(String)、③area(String)、④floor(Integer)、⑤position(String)、⑥price(Double)、⑦roomType(String)、⑧square(Double)、⑨title(String)、⑩location(map)。
其中第⑩个字段是内嵌文档,存储了地址的经纬度信息,包含 3 个字段,分别为:①count(Integer)、②lng(Double)、③lat(Double)

在这里插入图片描述

1.5.2 Web项目设计

项目基于 SpringBoot,因此采用常见的 MVC 三层架构,M 是指业务模型,V 是指用户界面,C 则是控制器,使用 MVC 的目的是将 M 和V 的实现代码分离,从而使同一个程序可以使用不同的表现形式。其中,View 的定义比较清晰,就是用户界面。
在这里插入图片描述

业务设计过程遵循 Controller 层调用 Service 层、Service 层调用 Dao 层的原则。

二、 项目构成

2.1数据爬取

2.1.1简述

为了模拟真实项目场景,项目所需数据将使用 Jsoup 组件对特定网站页面进行数据爬取。爬取过程使用 Gson 作为 Json 解析器,便于数据之间的格式转化。数据爬取操作将在 Idea 编译器上进行。

Jsoup
Jsoup是一款Java的HTML解器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

Gson
Google Gson是一个简单的基于Java的库,用于将Java对象序列化为JSON,反之亦然。它是由Google开发的开源库。以下列出了Gson的一些最突出的功能:
(1)易于使用 - Gson API 提供了一个高级外观,以简化常用的用例;
(2)无需创建映射 - Gson API 为大多数要序列化的对象提供默认映射;
(3)性能 - Gson 速度非常快,内存占用少。 它适用于大型对象图或系统;
(4)清洁JSON- Gson创建一个干净,紧凑的JSON结果,易于阅读;
(5)无依赖关系 - 除了 JDK 之外,Gson 库不需要任何其他库;
(6)开源 - Gson库是开源的;它是免费提供的。

2.1.2使用Jsoup多线程爬取网站数据

(1)新建工具类 HmlParseUtil,通过网站 url 地址获取 HTML 的 dom 元素;
在这里插入图片描述

(2)利用正则表达式和java.lang.String 类处理 dom 元素解析出各个字段;
在这里插入图片描述
在这里插入图片描述
(3)利用 Jsoup 获取百度地图 API 的地址解析请求,以获取地址所在的经纬度;
在这里插入图片描述
(4)建立线程池,多线程爬取数据并写入本地的 json 格式文件;
在这里插入图片描述
在这里插入图片描述
新建工具类JsonFormatTool,对生成的json文件进行格式化,每一条数据进行换行:
在这里插入图片描述
新建工具类CreateJsonFile,在E:\NoSQL中生成Info.json文件:

(5)爬取约 2976 条数据,耗时约10s。相比于单线程耗时10min,效率有了极大的提升。
在这里插入图片描述
在这里插入图片描述

2.1.3爬虫数据存入MongoDB

(1)新建 RentInfo1 实体类,使用 Gson 解析 json 数据,转化为 List类型;
在这里插入图片描述
(2)开启MongoDB服务器:
在这里插入图片描述
(3)连接MongoDB服务器:
在这里插入图片描述
(4)将List转化为Document对象,插入MongoDB集合内:
在这里插入图片描述
在这里插入图片描述
(5)查询数据库,确保数据均已插入:
在这里插入图片描述

2.2前端页面

主要含有login.html(登录),register.html(注册),index.html(首页):
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

为基础页面 login.html(登录)、register.html(注册)、添加 Control 层访问请求。
在这里插入图片描述
在这里插入图片描述

2.3后台

2.3.1 项目基本架构

在这里插入图片描述
在这里插入图片描述

2.3.2 整合 MyBatis

MyBatis是一款优秀的持久层框架,它支持定制化 SOL、存储过程以及高级映射。MyBatis避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java的 POJOs (Plain Ordinary Java Obiect,普通的 Java 对象)映射成数据库中的记录。

(1)在pom.xml文件导入如下依赖包:
在这里插入图片描述

(2)applications.properties 配置文件内配置 mybatis 相关属性:
在这里插入图片描述

(3)Springboot 启动类上添加扫描注解:
在这里插入图片描述

2.3.3 整合jdbc+mysql 数据源

pom.xml 文件下导入 mysql相关依赖包:
在这里插入图片描述

2.3.4 整合 mongoDB 数据源

(1)启动mongodb服务;
(2)使用idea插件测试连接mongodb:
在这里插入图片描述
(3)在SpringBoot项目中导入mongodb依赖包:
在这里插入图片描述

(4)在application.yml配置文件中配置mongodb服务器:
在这里插入图片描述

(5)测试连接。新建实体类RentInfo,属性与mongodb中的RentInfo集合名相同,并添加集合注解:
在这里插入图片描述

(6)填写测试类,装配mongoTemplate对象,查询RentInfo集合:
在这里插入图片描述

(7)测试结果:
在这里插入图片描述

2.4模板引擎

Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。它与 JSP,Velocity,FreeMaker 等模板引擎类似,也可以轻易地与 Spring MVC 等 Web 框架集成。与其它模板引擎相比,Thymeleaf 最大的特点是,即使不启动 Web 应用,也可以直接在浏览器中打开并正确显示模板页面。
(1)在pom.xml文件中导入Thymeleaf相关依赖包:
在这里插入图片描述

(2)在application.yml配置文件中配置Thymeleaf相关属性,包括视图解析路径,是否开启缓存等:
在这里插入图片描述

2.5 用户登录安全认证

2.5.1 数据库准备

(1)创建User表,用户身份有两种:管理员(admin)和普通用户(user):
在这里插入图片描述
(2)插入数据便于测试:
在这里插入图片描述

(3)创建实体类,属性名与数据库User表相对应:
在这里插入图片描述

2.5.2 整合 shiro安全认证框架

(1)导入shiro依赖包:
在这里插入图片描述

(2)新建UserRealm实体类,继承AuthorizingRealm类:
在这里插入图片描述

(3)新建ShiroConfig配置类,添加@Configuration配置注解,使用@Bean注解将固定的3个方法注入spring容器内:
在这里插入图片描述

2.6 其他技术支持

2.6.1 Aiax 异步请求技术

Aiax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。通过在后台与服务器进行少量数据交换,Aiax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
本项目中,Ajax技术使用JQuery完成,其基本语法如下:
在这里插入图片描述

2.6.2 Echarts图表

为了在本项目中使用Echarts图表,需在前端页面导入相关js包:
在这里插入图片描述

三、 项目功能介绍

3.1 用户登陆和注册 MVC 基础服务架构

使用该安全认证后,Shiro框架自动认证MySQL中的用户名和密码,同时根据数据库中的identity字段赋予不同的角色,不同的角色能够显示的内容是不同的。
管理员操作界面:
在这里插入图片描述

普通用户操作界面:
在这里插入图片描述
用户注册操作界面:
在这里插入图片描述
查看数据库,用户注册成功,成功跳转至登录页面进行登录:
在这里插入图片描述

3.1.1 dao 层

3.1.2 service 层

3.1.3 Control 层

3.1.4 shiro 安全认证

3.1.5 浏览器查看 session

3.2 Aiax 请求分页查询数据

3.2.1 前端代码实现

3.2.2 后台代码实现

3.3 搜索框功能实现

3.3.1 前端代码实现

3.3.2 后台代码实现

3.4 Echarts 数据可视化

3.4.1 前端代码实现

3.4.2 后台代码实现

由于一开始交作业,只截了一些图片来编写文档,然后发现有的图片上传了之后还是挺模糊的🙁,所以第三部分就先不上传了,因为图片太多了🤧

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值