參考地址人人開源官網:
- https://www.renren.io/guide/
1.1.項目描述
renren-fast 是一個輕量級的 Spring Boot 快速開發平台,能快速開發項目並交付【接私活利器】 完善的 XSS 防范及腳本過濾,徹底杜絕 XSS 攻擊,實現前后端分離,通過 token 進行數據交互 推薦使用阿里雲服務器部署項目,免費領取阿里雲優惠券,請點擊 免費領取
1.2.獲取幫助
- 后台地址:https://gitee.com/renrenio/renren-fast
- element-ui地址:https://github.com/daxiongYang/renren-fast-vue
- 代碼生成器:https://gitee.com/renrenio/renren-generator
- 如需關注項目最新動態或擔心以后找不到項目,可以Watch、Star項目,同時也是對項目最好的支持
1.3.官方QQ群
- 高級群:324780204(大牛雲集,跟大牛學習新技能)
- 普通群:145799952(學習交流,互相解答各種疑問)
本項目是前后端分離的,需要先部署好后端,再部署前端頁面,才能看到項目的頁面效果。
2.1.后端部署
- 環境要求 JDK1.8 、 MySQL5.5+
- 通過 git ,下載renren-fast源碼,如下:
git clone
- git clone https://git.oschina.net/renrenio/renren-fast.git
- 用 idea 打開項目, File -> Open 如下圖:
-
- 用 eclipse 打開項目,如下圖:
-
- 創建數據庫 renren_fast ,數據庫編碼為 UTF-8
- 執行 doc/db.sql 文件,初始化數據(默認支持MySQL)
- 修改 application-dev.yml ,更新MySQL賬號和密碼
- 運行 io.renren.RenrenApplication.java 的 main 方法,則可啟動項目
- Swagger路徑:http://localhost:8080/renren-fast/swagger/index.html
- Swagger注釋路徑:http://localhost:8080/renren-fast/swagger-ui.html
2.2.前端部署
renren-fast-vue基於vue、element-ui構建開發,實現renren-fast后台管理前端功能,
提供一套更優的前端解決方案。歡迎star或fork前端Git庫,方便日后尋找,及二次開發。
- 開發環境,需要安裝node8.x最新版
-
git clone
- # 克隆項目
- git clone https://github.com/daxiongYang/renren-fast-vue.git
- # 安裝依賴
- npm install
- # 啟動服務
- npm run dev
- 生成環境,打包並把dist目錄文件,部署到Nginx里
-
git clone
- # 構建生產環境(默認) npm run build
- # 構建測試環境
- npm run build --qa
- # 構建驗收環境
- npm run build --uat
- # 構建生產環境
- npm run build --prod
- # 安裝Nginx,並配置Nginx server {
- listen 80;
- server_name localhost;
- location / {
- root E:\\renren-fast-vue; index index.html index.htm;
- } }
- # 啟動Nginx后,訪問如下路徑即可 http://localhost
- 登錄的賬號密碼:admin/admin
-
2.3.配置文件
-
conf file
- # Tomcat
- server:
- tomcat:
- uri-encoding: UTF-8
- max-threads: 1000
- min-spare-threads: 30
- port: 8080 #tomcat端口號
- context-path: /renren-fast
- spring:
- # 環境 dev|test|prod
- profiles:
- active: dev
- # jackson時間格式化
- jackson:
- time-zone: GMT+8
- date-format: yyyy-MM-dd HH:mm:ss
- http:
- multipart:
- max-file-size: 100MB
- max-request-size: 100MB
- enabled: true
- redis:
- open: false # 是否開啟redis緩存 true開啟 false關閉
- database: 0
- host: localhost
- port: 6379
- password: # 密碼(默認為空)
- timeout: 6000 # 連接超時時長(毫秒)
- pool:
- max-active: 1000 # 連接池最大連接數(使用負值表示沒有限制)
- max-wait: -1 # 連接池最大阻塞等待時間(使用負值表示沒有限制)
- max-idle: 10 # 連接池中的最大空閑連接
- min-idle: 5 # 連接池中的最小空閑連接
- #mybatis
- mybatis-plus:
- mapper-locations: classpath:mapper/**/*.xml
- #實體掃描,多個package用逗號或者分號分隔
- typeAliasesPackage: io.renren.modules.*.entity
- global-config:
- #主鍵類型 0:"數據庫ID自增", 1:"用戶輸入ID",2:"全局唯一ID (數字類型唯一ID)", 3:"全局唯一ID UUID";
- id-type: 0
- #字段策略 0:"忽略判斷",1:"非 NULL 判斷"),2:"非空判斷"
- field-strategy: 2
- #駝峰下划線轉換
- db-column-underline: true
- #刷新mapper 調試神器
- refresh-mapper: true
- #數據庫大寫下划線轉換
- #capital-mode: true
- #序列接口實現類配置
- #key-generator: com.baomidou.springboot.xxx
- #邏輯刪除配置
- logic-delete-value: -1
- logic-not-delete-value: 0
- #自定義填充策略接口實現
- #meta-object-handler: com.baomidou.springboot.xxx
- #自定義SQL注入器
- sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector
- configuration:
- map-underscore-to-camel-case: true
- cache-enabled: false
- call-setters-on-nulls: true
- renren:
- # APP模塊,是通過jwt認證的,如果要使用APP模塊,則需要修改【加密秘鑰】
- jwt:
- # 加密秘鑰
- secret: f4e2e52034348f86b67cde581c0f9eb5[www.renren.io]
- # token有效時長,7天,單位秒
- expire: 604800
- header: token
- # 數據庫配置
- spring:
- datasource:
- type: com.alibaba.druid.pool.DruidDataSource
- driverClassName: com.mysql.jdbc.Driver
- druid:
- first: #數據源1
- url: jdbc:mysql://localhost:3306/renren_fast?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8
- username: renren
- password: 123456
- second: #數據源2
- url: jdbc:mysql://localhost:3306/bdshop?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8
- username: renren
- password: 123456
- initial-size: 10
- max-active: 100
- min-idle: 10
- max-wait: 60000
2.4.數據交互
- 一般情況下,web項目都是通過session進行認證,每次請求數據時,都會把jsessionid放在cookie中,以便與服務端保持會話
- 本項目是前后端分離的,通過token進行認證(登錄時,生成唯一的token憑證),每次請求數據時,都會把token放在header中,服務端解析token,並確定用戶身份及用戶權限,數據通過json交互
- 數據交互流程:
-
3.1.功能描述
- 我們來完成一個商品的列表、添加、修改、刪除功能,熟悉如何快速開發自己的業務功能模塊。
- 我們先建一個商品表tb_goods,表結構如下所示:
-
create table
- CREATE TABLE `tb_goods` (
- `goods_id` bigint NOT NULL AUTO_INCREMENT,
- `name` varchar(50) COMMENT '商品名',
- `intro` varchar(500) COMMENT '介紹',
- `price` decimal(10,2) COMMENT '價格',
- `num` int COMMENT '數量',
- PRIMARY KEY (`goods_id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品管理';
- 接下來,我們利用代碼生成器,幫我們生成基礎代碼,可以大大的節省重復工作量,代碼生成器Git地址:https://gitee.com/renrenio/renren-generator
3.2.使用代碼生成器
- 代碼生成器是Spring Boot開發的項目,通過git clone把項目下載到本地后,直接運行main方法,就可以通過http://localhost打開,我們先來看看配置文件,如下所示:
-
conf file
- #配置文件:generator.properties
- #包名
- package=io.renren.modules.generator
- #作者
- author=chenshun
- email=sunlightcs@gmail.com
- #表前綴(類名不會包含表前綴)
- tablePrefix=tb_
- #類型轉換,配置信息
- tinyint=Integer
- smallint=Integer
- mediumint=Integer
- int=Integer
- integer=Integer
- bigint=Long
- float=Float
- double=Double
- decimal=BigDecimal
- bit=Boolean
- char=String
- varchar=String
- tinytext=String
- text=String
- mediumtext=String
- longtext=String
- date=Date
- datetime=Date
- timestamp=Date
- 上面的配置文件,可以配置包名、作者信息、表前綴、類型轉換。其中,類型轉換是指,MySQL中的類型與JavaBean中的類型,是怎么一個對應關系。如果有缺少的類型,可自行在generator.properties文件中補充。
- 再看看application.yml配置文件,我們只要修改數據庫名、賬號、密碼,就可以了。其中,數據庫名是指待生成的表,所在的數據庫。
-
conf file
- # Tomcat
- server:
- tomcat:
- max-threads: 10
- min-spare-threads: 10
- port: 80
- # mysql
- spring:
- datasource:
- type: com.alibaba.druid.pool.DruidDataSource
- driverClassName: com.mysql.jdbc.Driver
- url: jdbc:mysql://localhost:3306/renren_fast?useUnicode=true&characterEncoding=UTF-8
- username: renren
- password: 123456
- jackson:
- time-zone: GMT+8
- date-format: yyyy-MM-dd HH:mm:ss
- resources:
- static-locations: classpath:/static/,classpath:/views/
- # Mybatis配置
- mybatis:
- mapperLocations: classpath:mapper/**/*.xml
- 在數據庫renren_fast中,執行建表語句,創建tb_goods表,再啟動renren-generator項目(運行RenrenApplication.java的main方法即可),如下所示:
-
- 我們只需勾選tb_goods,點擊【生成代碼】按鈕,則可生成相應代碼,如下所示:
-
3.3.測試項目
- 我們先在renren_fast庫中,執行goods_menu.sql語句,這個SQL是生成菜單的,SQL語句如下所示:
-
create table
- -- 菜單SQL
- INSERT INTO `sys_menu` (`parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`)
- VALUES ('1', '商品管理', 'modules/generator/goods.html', NULL, '1', 'fa fa-file-code-o', '6');
- -- 按鈕父菜單ID
- set @parentId = @@identity;
- -- 菜單對應按鈕SQL
- INSERT INTO `sys_menu` (`parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`)
- SELECT @parentId, '查看', null, 'goods:list,goods:info', '2', null, '6';
- INSERT INTO `sys_menu` (`parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`)
- SELECT @parentId, '新增', null, 'goods:save', '2', null, '6';
- INSERT INTO `sys_menu` (`parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`)
- SELECT @parentId, '修改', null, 'goods:update', '2', null, '6';
- INSERT INTO `sys_menu` (`parent_id`, `name`, `url`, `perms`, `type`, `icon`, `order_num`)
- SELECT @parentId, '刪除', null, 'goods:delete', '2', null, '6';
- 然后把生成的main目錄覆蓋renren-fast的main目錄,再重啟renren-fast,效果如下所示:
-
-
-
-
- 我們就操作了這幾步,就把查詢、新增、修改、刪除就完成了,是不是很快啊,下面就是我們才生成的代碼,如下所示:
-