一、 緒論
1.1 研究意義
當今社會作為一個飛速的發展社會,網絡已經完全滲入人們的生活, 網絡信息已成為傳播的第一大媒介, 可以毫不夸張說網絡資源獲取已逐步改變了人們以前的生活方式,網絡已成為人們日常,休閑主要工具。 人們記錄、分享和發現美食的方式正在逐漸發生改變,因此借助怎樣的互動方式能讓那些喜歡美食美味的人通過享受和分享美食美味來宣揚自己的價值觀, 獲得大家肯定以及關注是一個深入探討的話題。目前,基于springboot的美食分享網的設計與實現,正是互聯網和社會生活之間的緊密聯系體現。這個系統中我綜合應用了 mysql5、springboot、mybaits等知識。網頁界面結構設計以實用性出發,具有易于操作、方便特點。在設計中,首先,運用HTML5語言對網站的靜態頁面進行精細加工并且在網站的美工方面取得了良好效果。然后,對于 Java 編程、 HTML5的動態編程以及 mysql5 數據庫進行努力學習和實踐,并運用到了網站的建設中。 本論文就此美食分享網進行了詳細全面論述。
?
1.2項目的可行性研究設計
此系統需要java面向對象編程基礎,數據庫知識和功能分析。根據目前階段所掌握的相關專業知識,以及這學期和之前學習掌握的java編程知識和數據庫應用知識以及前端知識做出一個這樣的基于、springboot輕量級框架網頁版的美食分享平臺。
1.3相關技術簡介
1.3.1 spring
Spring框架是Java平臺上的一種開源應用框架,提供具有控制反轉特性容器。盡管Spring框架自身對編程模型沒有限制,以至于后來讓它作為EJB(EnterpriseJavaBeans)模型的補充,甚至是替補。Spring框架為開發提供了一系列的解決方案,比如利用控制反轉核心特性,并通過依賴注入實現控制反轉來實現管理對象生命周期的容器化,利用面向切面編程進行聲明式事務管理,整合多種持久化技術管理數據訪問,提供大量優秀的Web框架方便開發等。Spring框架具有控制反轉(IOC)特性,它提供了一種通過Java的反射機制對Java對象進行統一的配置管理的方法。Spring框架利用容器管理對象生命周期,容器可以通過掃描XML文件配置對象。Spring框架具有面向切面編程(AOP)框架,SpringAOP框架基于代理模式,運行時可配置;AOP框架主要針對模塊之間的交叉關注點進行模塊化。Spring框架的AOP框架僅提供基本的AOP特性,Spring框架下的事務管理、遠程訪問等功能均可以通過使用SpringAOP技術實現。Spring的事務管理框架為Java平臺帶來了一種抽象機制,使本地和全局事務以及嵌套事務能夠與保存點一起工作,并且幾乎可以在Java平臺的任何環境中工作。Spring集成多種事務模板,系統可以通過事務模板、XML或Java注解進行事務配置,并且事務框架集成了消息傳遞和緩存等功能。Spring數據訪問框架解決了開發人員在應用程序中使用數據庫時遇到的常見困難。它不僅對Java:JDBC、MyBATIs、Hibernate、Java數據對象(JDO)、ApacheOJB和ApacheCayne等所有流行的數據訪問框架中提供支持,同時還可以與Spring的事務管理一起使用,為數據訪問提供了靈活的抽象。Spring框架最初是沒有打算構建一個自己的WebMVC框架,其開發人員在開發過程中認為現有的Web框架的呈現層和請求處理層之間以及請求處理層和模型之間的分離不夠,于是創建了SpringMVC。
1.3.2 mybatis
mybatis是對jdbc的封裝,它讓數據庫底層操作變的透明。mybatis的操作都是圍繞一個sqlSessionFactory實例展開。mybatis通過配置文件關聯到各實體類Mapper文件,Mapper文件中配置了每個類對數據庫所需進行的sql語句映射。在每次與數據庫交互,通過sqlSessionFactory拿到一個sqlSession,再執行sql。頁面發送請求給控制器,控制器調用業務層處理,邏輯層向持久層發送請求,持久層與數據庫交互,將結果返回給業務層,業務層將處理邏輯發送給控制器,控制器再調用視圖展現數據。
1.3.3 Shiro權限框架
shiro是一個安全框架,是Apache的一個項目。shiro提供了:認證、授權、加密、會話管理、與web集成、緩存等模塊。 ?
1.1、模塊介紹
Authentication:用戶身份識別,可以是登錄;
Authorization:授權,權限驗證,驗證某個已認證的用戶是否擁有某個權限功能;即判斷用戶是否能做事情,常見:驗證某個用戶是否擁有某個角色。或者細粒度的驗證某個用戶對某資源是否具有某個權限。
Session Manager:會話管理,用戶登錄后就是一次會話,在沒有退出之前,所有信息都在會話中;會話可以是普通 JavaSE 環境的,也可以是如 Web 環境的。
Cryptography:加密,保護數據的安全性,密碼加密存儲到數據庫,而不是明文存儲。
Web Support:Web支持,可以非常容易的集成到 javaweb 環境。
Caching:緩存,比如用戶登錄后,其用戶信息、擁有的角色/權限不必每次去查,這樣可以提高效率。
Concurrency:shiro 支持多線程應用的并發驗證,即如在一個線程中開啟另一個線程,能把權限自動傳播過去。
Testing:提供測試支持。
2、核心概念
Subject:主體,代表了當前操作用戶,這個用戶不一定是具體的人,與當前應用交互的任何東西都是subject,即抽象概念。所有Subject都綁定到SecurityManager,與Subject交互都會委托給SercurityManager;
SecurityManager:安全管理器;即所有與subject安全有關的操作都會與SecurityManager交互;且它管理著所有的Subject;它負責與里面的各個組件交互,也可以把它理解成springmvc中DispatcherServlet前端控制器。
Realm:域,安全數據源。shiro從Realm獲取安全數據(如用戶、權限),就是說SecurityManager驗證用戶身份,那么它需要從Realm得到用戶相應角色、權限進行驗證用戶是否能進行操作;可以把Realm看成DataSource,即安全數據源。
1、應用代碼通過Subject來進行認證和授權,而Subject又委托給SecurityManager;
2、SecurityManager要驗證用戶身份,那么它需要從Realm中獲取相對應的用戶、角色、權限進行比較以確定用戶身份是否合法。
總結:shiro不提供維護用戶、權限,而是通過Realm讓開發人員自己注入。
3、shiro內部架構介紹
1) Subject:主體,看到主體可以是任何與應用交互“用戶”。
2) SecurityManager:相當于 SpringMVC 中的 DispatcherServlet 或者 Struts2 中的FilterDispatcher。它是 Shiro 的核心,所有具體的交互都通過 SecurityManager 進行控制。它管理著所有 Subject、且負責進行認證和授權、及會話、緩存的管理。
3) Authenticator:認證器,負責主體認證的,這是一個擴展點,如果用戶覺得 Shiro 默認的不好,我們可以自定義實現。其需要認證策略(Authentication Strategy),即什么情況下算用戶認證通過了。
4) Authrizer:授權器,或者訪問控制器。它用來決定主體是否有權限進行相應的操作,即控制著用戶能訪問應用中的哪些功能。
5) Realm:可以有1個或多個 Realm,可以認為是安全實體數據源,即用于獲取安全實體的。它可以是 JDBC 實現,也可以是 LDAP 實現,或者內存實現等。
6) SessionManager:如果寫過 Servlet 就應該知道 Session 的概念,Session 需要有人去管理它的生命周期,這個組件就是 SessionManager。而 Shiro 并不僅僅可以用在 Web 環境,也可以用在如普通的 JavaSE 環境。
7) SessionDAO:DAO 大家都用過,數據訪問對象,用于會話的 CRUD。我們可以自定義 SessionDAO 的實現,控制 session 存儲的位置。如通過 JDBC 寫到數據庫或通過 jedis 寫入 redis 中。另外 SessionDAO 中可以使用 Cache 進行緩存,以提高性能。
8) CacheManager:緩存管理器。它來管理如用戶、角色、權限等的緩存的。因為這些數據基本上很少去改變,放到緩存中后可以提高訪問的性能。
9) Cryptography:密碼模塊,Shiro 提高了一些常見的加密組件用于如密碼加密/解密的。
4、過濾器
當 Shiro 被運用到 web 項目時,Shiro 會自動創建一些默認的過濾器對客戶端請求進行過濾。以下是 Shiro 提供的過濾器:
過濾器簡稱? | 對應的 Java 類? |
anon? | org.apache.shiro.web.filter.authc.AnonymousFilter? |
authc? | org.apache.shiro.web.filter.authc.FormAuthenticationFilter? |
authcBasic? | org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter? |
perms? | org.apache.shiro.web.filter.authz.PermissionsAuthorizationFilter? |
port? | org.apache.shiro.web.filter.authz.PortFilter? |
rest? | org.apache.shiro.web.filter.authz.HttpMethodPermissionFilter? |
roles? | org.apache.shiro.web.filter.authz.RolesAuthorizationFilter? |
ssl? | org.apache.shiro.web.filter.authz.SslFilter? |
user? | org.apache.shiro.web.filter.authc.UserFilter? |
logout? | org.apache.shiro.web.filter.authc.LogoutFilter? |
noSessionCreation? | org.apache.shiro.web.filter.session.NoSessionCreationFilter? |
解釋:
/admins/**=anon # 表示該 uri 可以匿名訪問 /admins/**=auth # 表示該 uri 需要認證才能訪問 /admins/**=authcBasic # 表示該 uri 需要 httpBasic 認證 /admins/**=perms[user:add:*] # 表示該 uri 需要認證用戶擁有 user:add:* 權限才能訪問 /admins/**=port[8081] # 表示該 uri 需要使用 8081 端口 /admins/**=rest[user] # 相當于 /admins/**=perms[user:method],其中,method 表示 get、post、delete 等 /admins/**=roles[admin] # 表示該 uri 需要認證用戶擁有 admin 角色才能訪問 /admins/**=ssl # 表示該 uri 需要使用 https 協議 /admins/**=user # 表示該 uri 需要認證或通過記住我認證才能訪問 /logout=logout # 表示注銷,可以當作固定配置 |
1.3.4 SpringBoot
SpringBoot是Pivotal團隊在2013年開始研發、2014年4月發布第一個版本全新開源的輕量級框架。它基于Spring4.0設計,不僅繼承了Spring框架原有優秀特性,而且還通過簡化配置來進一步簡化了Spring應用的整個搭建開發過程。另外SpringBoot通過集成大量的框架使得依賴包的版本沖突,引用的不穩定性等問題得到了很好的解決。
SpringBoot具備的特征有:
(1)可以創建獨立的Spring應用程序,并且基于其Maven或Gradle插件,可以創建可執行的JARs和WARs;
(2)內嵌Tomcat或Jetty等Servlet容器;
(3)提供自動配置的“starter”項目對象模型(POMS)以簡化Maven配置;
(4)盡可能自動配置Spring容器;
(5)提供準備好的特性,如指標、健康檢查和外部化配置;
(6)絕對沒有代碼生成,不需要XML配置。 [1]??[2]
SpringBoot框架中還有兩個非常重要的策略:開箱即用和約定優于配置。開箱即用,Outofbox,是指在開發過程中,通過在MAVEN項目的pom文件中添加相關依賴包,然后使用對應注解來代替繁瑣的XML配置文件以管理對象的生命周期。這個特點使得開發人員擺脫了復雜的配置工作以及依賴的管理工作,更加專注于業務邏輯。約定優于配置,Convention over configuration,是一種由SpringBoot本身來配置目標結構,由開發者在結構中添加信息的軟件設計范式。這一特點雖降低了部分靈活性,增加了BUG定位的復雜性,但減少了開發人員需要做出決定的數量,同時減少了大量的XML配置,并且可以將代碼編譯、測試和打包等工作自動化。
SpringBoot應用系統開發模板的基本架構設計從前端到后臺進行說明:前端常使用模板引擎,主要有FreeMarker和Thymeleaf,它們都是用Java語言編寫的,渲染模板并輸出相應文本,使得界面的設計與應用的邏輯分離,同時前端開發還會使用到Bootstrap、AngularJS、JQuery等;在瀏覽器的數據傳輸格式上采用Json,非xml,同時提供RESTfulAPI;SpringMVC框架用于數據到達服務器后處理請求;到數據訪問層主要有Hibernate、MyBatis、JPA等持久層框架;數據庫常用MySQL;開發工具推薦IntelliJIDEA。
1.3.5 jQuery
jQuery是一個快速、簡潔JavaScript框架,是繼Prototype之后又一個優秀的JavaScript代碼庫(或JavaScript框架)。jQuery設計的宗旨是“write Less,Do More”,即倡導寫更少的代碼,做更多的事情。它封裝JavaScript常用的功能代碼,提供一種簡便的JavaScript設計模式,優化HTML文檔操作、事件處理、動畫設計和Ajax交互。
jQuery的核心特性可以總結為:具有獨特的鏈式語法和短小清晰的多功能接口;具有高效靈活的css選擇器,并且可對CSS選擇器進行擴展;擁有便捷的插件擴展機制和豐富的插件。jQuery兼容各種主流瀏覽器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等
1.3.6 Mysql
MySQL 是一款安全、跨平臺、高效的,并與 PHP、Java 等主流編程語言緊密結合的數據庫系統。該數據庫系統是由瑞典的 MySQL AB 公司開發、發布并支持,由 MySQL 的初始開發人員 David Axmark 和 Michael Monty Widenius 于 1995 年建立的。
MySQL 的象征符號是一只名為 Sakila 的海豚,代表著 MySQL 數據庫的速度、能力、精確和優秀本質。
目前 MySQL 被廣泛地應用在 Internet 上的中小型網站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,使得很多公司都采用 MySQL 數據庫以降低成本。
MySQL 數據庫可以稱得上是目前運行速度最快的 SQL 語言數據庫之一。除了具有許多其他數據庫所不具備的功能外,MySQL 數據庫還是一種完全免費的產品,用戶可以直接通過網絡下載 MySQL 數據庫,而不必支付任何費用。
MySQL 特點
下面總結了一下 MySQL 具備的特點。
1) 功能強大
MySQL 中提供了多種數據庫存儲引擎,各引擎各有所長,適用于不同的應用場合,用戶可以選擇最合適的引擎以得到最高性能,可以處理每天訪問量超過數億的高強度的搜索 Web 站點。MySQL5 支持事務、視圖、存儲過程、觸發器等。
2) 支持跨平臺
MySQL 支持至少 20 種以上的開發平臺,包括 Linux、Windows、FreeBSD 、IBMAIX、AIX、FreeBSD 等。這使得在任何平臺下編寫的程序都可以進行移植,而不需要對程序做任何的修改。
3) 運行速度快
高速是 MySQL 的顯著特性。在 MySQL 中,使用了極快的 B 樹磁盤表(MyISAM)和索引壓縮;通過使用優化的單掃描多連接,能夠極快地實現連接;SQL 函數使用高度優化的類庫實現,運行速度極快。
4) 支持面向對象
PHP 支持混合編程方式。編程方式可分為純粹面向對象、純粹面向過程、面句對象與面向過程混合 3 種方式。
5) 安全性高
靈活和安全的權限與密碼系統,允許基本主機的驗證。連接到服務器時,所有的密碼傳輸均采用加密形式,從而保證了密碼的安全。
6) 成本低
MySQL 數據庫是一種完全免費的產品,用戶可以直接通過網絡下載。
7) 支持各種開發語言
MySQL 為各種流行的程序設計語言提供支持,為它們提供了很多的 API 函數,包括 PHP、ASP.NET、Java、Eiffel、Python、Ruby、Tcl、C、C++、Perl 語言等。
8) 數據庫存儲容量大
MySQL 數據庫的最大有效表尺寸通常是由操作系統對文件大小的限制決定的,而不是由 MySQL 內部限制決定的。InnoDB 存儲引擎將 InnoDB 表保存在一個表空間內,該表空間可由數個文件創建,表空間的最大容量為 64TB,可以輕松處理擁有上千萬條記錄的大型數據庫。
9) 支持強大的內置函數
PHP 中提供了大量內置函數,幾乎涵蓋了 Web 應用開發中的所有功能。它內置了數據庫連接、文件上傳等功能,MySQL 支持大量的擴展庫,如 MySQLi 等,可以為快速開發 Web 應用提供便利。
數據庫的應用
數據庫是計算機應用系統中的一種專門管理數據資源的系統。數據有多種形式,如文字、數碼、符號、圖形、圖像及聲音等,數據是所有計算機系統所要處理的對象。我們所熟知的一種處理辦法是制作文件,即將處理過程編成程序文件,將所涉及的數據按程序要求組成數據文件,再用程序來調用,數據文件與程序文件保持著一定的關系。
在計算機應用迅速發展的情況下,這種文件式管理方法便顯出它的不足。比如,它使得數據通用性差、不便于移植、在不同文件中存儲大量重復信息、浪費存儲空間、更新不便等。
而數據庫系統便能解決上述問題。數據庫系統不從具體的應用程序出發,而是立足于數據本身的管理,它將所有數據保存在數據庫中,進行科學的組織,并借助于數據庫管理系統,以它為中介,與各種應用程序或應用系統接口,使之能方便地使用數據庫中的數據。
其實簡單地說,數據庫就是一組經過計算機整理后的數據,存儲在一個或多個文件中,而管理這個數據庫的軟件就稱為數據庫管理系統。一般一個數據庫系統(Database System)
可以分為數據庫(Database)與數據管理系統(Database Management System,DBMS)兩個部分。主流的數據庫軟件有 Oracle、Informix、Sybase、SQL Server、PostgreSQL、MySQL、Access、FoxPro 和 Teradata 等等。
數據庫在 Web 開發中的重要地位
歸根結底,動態網站都是對數據進行操作,我們平時瀏覽網頁時,會發現網頁的內容會經常變化,而頁面的主體結構框架沒變,新聞就是一個典型。這是因為我們將新聞存儲在了數據庫中,用戶在瀏覽時,程序就會根據用戶所請求的新聞編號,將對應的新聞從數據庫中讀取出來,然后再以特定的格式響應給用戶。
Web 系統的開發基本上是離不開數據庫的,因為任何東西都要存放在數據庫中。所謂的動態網站就是基于數據庫開發的系統,最重要的就是數據管理,或者說我們在開發時都是在圍繞數據庫在寫程序。所以作為一個 Web 程序員,只有先掌握一門數據庫,才可能去進行軟件開發。
二、系統需求分析
2.1系統功能分析
1.用戶模塊管理:用戶登錄、用戶注冊、用戶的查詢、添加、刪除操作、
2.美食分享筆記管理:分享筆記列表的展示、添加、修改、刪除操作、
3.美食筆記詳情管理:美食筆記詳情列表的查看、添加、刪除等操作、
4.管理員信息管理:管理員信息的查看、修改、
5.公告信息管理:公告信息的查看、添加、修改、刪除操作、
6.用戶模塊管理:用戶列表查詢、添加、刪除、
7.用戶評論模塊管理:用戶評論查詢、添加、刪除、
8.注銷退出登錄管理
2.2系統運行環境
JavaJDK1.8環境配置、
Java運行在idea軟件上,
數據庫用mysql5版本數據庫、
數據庫采用Nacicat Mysql可視化工具、
基于主流的谷歌瀏覽器運行展示以及F12控制臺調試樣式、
三、系統設計
3.1系統模板設計
系統主要設計采用Java語言開發、采用springboot為后臺框架、數據庫框架采用mybatis、前端采用jquery、layui框架等
主要模塊設計如下:
1.用戶模塊管理:用戶登錄、用戶注冊、用戶的查詢、添加、刪除操作、
2.美食分享筆記管理:分享筆記列表的展示、添加、修改、刪除操作、
3.美食筆記詳情管理:美食筆記詳情列表的查看、添加、刪除等操作、
4.管理員信息管理:管理員信息的查看、修改、
5.公告信息管理:公告信息的查看、添加、修改、刪除操作、
6.用戶模塊管理:用戶列表查詢、添加、刪除、
7.用戶評論模塊管理:用戶評論查詢、添加、刪除、
8.注銷退出登錄管理
3.2系統流程描述
3. 3項目源碼架構設計
四、系統實現
4.1 程序主要類
4.1.1用戶管理員類
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer adminId; // 管理員Id
@Column(length=200)
private String userName; ?// 用戶名
@Column(length=200)
private String password; ?// 密碼
@Column(length=200)
private String trueName; ?// 真實姓名
@Column(length=200)
private String headPortrait; ?// 頭像
@Column(length=50)
private String sex; ?// 性別
@Column(length=500)
private String signature; ?// 備注
@Column(length=200)
private String phone; ?// 電話
4.1.4美食分享類
@Id
?@GeneratedValue(strategy = GenerationType.IDENTITY)
?private Integer articleId; // 文章Id
?@Column(length = 200)
?private String title; // 文章標題
?@Lob
?@Column(columnDefinition = "TEXT")
?private String content; // 文章內容
?@Transient
?private String contentNoTag; // 博客內容 無網頁標簽 Lucene分詞用到
?private Date publishDate; // 發布日期
?@Column(length = 200)
?private String author; // 作者
?@ManyToOne
?@JoinColumn(name = "classifyId")
?private Classify classify; // 文章類別
?private Integer click; // 點擊數
?private Integer commentNum; // 評論數
4.1.4美食分享博主類
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer bloggerId; // 博主Id
@Column(length=200)
private String nickName; ?// 昵稱
@Column(length=200)
private String headPortrait; ?// 頭像
@Column(length=500)
private String motto; ?// 座右銘
@Column(length=500)
private String signature; ?// 個性簽名
@Column(length=200)
private String site; ?// 地址
4.1.4美食評論類
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer commentId; // 評論Id
@ManyToOne
@JoinColumn(name="articleId")
private Article article; // 文章Id
@ManyToOne
@JoinColumn(name="userId")
private User user; // 用戶Id
@Column(length=500)
private String content; // 評論內容
private Date commentDate; // 評論時間
?
4.1.4公告信息類
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer noticeId; ?// 公告Id
@Column(length=500)
private String content; ?// 公告內容
private Date publishDate; ?// 發布日期
@Column(length=200)
private Integer grade; ?// 等級 ?0 重要 ?1 一般
4.1.4美食評論回復類
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer replyId; // 回復Id
@ManyToOne
@JoinColumn(name="commentId")
private Comment comment; // 評論Id
@ManyToOne
@JoinColumn(name="userId")
private User user; // 用戶Id
@Column(length=500)
private String content; // 回復內容
private Date replyDate; // 回復時間
4.1.4用戶信息類
@Id
?@GeneratedValue(strategy = GenerationType.IDENTITY)
?private Integer userId; // 用戶Id
?@Column
?private String username;// 用戶名
?@Column
?private String password;// 密碼
?@Column(length = 200)
?private String openId; // openID
?@Column(length = 200)
?private String nickname; // 昵稱
?@Column(length = 200)
?private String headPortrait; // 頭像
?@Column(length = 50)
?private String sex; // 性別
?@Column(nullable = false, columnDefinition = "timestamp", updatable = false)
?private Date registrationDate; // 注冊日期
?private Date latelyLoginTime; // 最近登錄時間
?private String phone;// 手機號
?private java.sql.Date birthday;// 生日
?private String articleIds;// 收藏文章id
?private String userIds;// 關注的用戶id
?private String momo;// 備注
4.3系統功能主要實現模塊截圖
4.3.1登錄注冊
用戶輸入網址localhost:80、然后輸入數據賬號密碼進行驗證登錄、
4.3.1登錄頁面
輸入賬號密碼、昵稱和性別等信息進行注冊
4.3.2注冊頁面:
4.3.2 主頁面功能
輸入地址localhost:80進入系統首頁
?
4.3.2.1?美食筆記專欄管理
在首頁上方導航欄點擊筆記專欄查看專欄美食信息
4.3.2.3?美食分享首頁
點擊網站首頁查看當前美食分享平臺上面的最新美食分享、點擊可以查看美食分享具體信息。
4.3.2.4 ?添加美食筆記
添加美食分享文章標題信息、作者、分享筆記類型和封面圖片以及主要內容完成添加
4.3.2.5?個人中心管理
在美食分享頁面個人中心--里面可以查看修改我的個人信息、查看我的筆記、我喜歡的美食收藏信息等操作。
4.3.2.6?后臺美食分類管理
在地址輸入http://localhost/admin/login?之后輸入賬號密碼進行管理員登錄管理、點擊美食筆記類型管理可以添加美食分類信息、比如中餐。西餐、小吃等類型、可以對美食類型進行修改、刪除操作
4.3.2.7?美食筆記管理
在美食筆記管理頁面可以查看美食分享列表信息、可以添加美食分享信息、修改和刪除美食分享信息。
美食信息列表
美食筆記分享添加:
4.3.2.8 ?美食公告管理
在美食公告管理頁面可以查看美食公告列表信息、可以添加美食公告信息、修改和刪除美食公告信息。
4.3.2.9 ?美食分享評論管理
在美食分享評論管理頁面可以查看美食分享評論列表信息
4.3.3部分關鍵源碼展示:
4.3.4.1登錄模塊:
/**
???* 驗證登錄
???*
???* @param user
???* @param request
???* @return
???*/
??@RequestMapping("/checkLogin")
??public ModelAndView checkLogin(User user, HttpServletRequest request) {
????ModelAndView mav = new ModelAndView();
????HttpSession session = request.getSession();
????User u = userService.findByUsernameAndPassword(user.getUsername(), user.getPassword());
????if (u == null) {
??????mav.addObject("user", user);
??????mav.addObject("errorInfo", "用戶名或者密碼錯誤!");
??????mav.setViewName("webLogin");
????} else {
??????u.setLatelyLoginTime(new Date());
??????userService.save(u);
??????session.setAttribute("user", u);
??????mav.addObject("success", true);
??????mav.setViewName("/index");
????}
????return mav;
??}
4.3.4.2 springboot全局配置文件:
server:
??port: 80
??servlet:
????context-path: /
??
spring:
??datasource:
????driver-class-name: com.mysql.jdbc.Driver
????url: jdbc:mysql://localhost:3306/lifeShare?characterEncoding=utf8
????username: root
????password: 123456
??jpa:
????hibernate:
??????ddl-auto: update
????show-sql: true
??thymeleaf:
????cache: false
MD5Salt: longwang
imageFilePath: C:\\Users\\Administrator\\Desktop\\bishe\lifeShare\\src\\main\\webapp\\static\\images\\
downloadImagePath: ?C:\\Users\\Administrator\\Desktop\\bishe\lifeShare\\src\\main\\webapp
lucenePath: C:\\Users\\Administrator\\Desktop\\bishe\lifeShare\\lucene
4.3.4.3 數據庫連接配置文件:
#數據源的地址
spring.datasource.url=jdbc:mysql://127.0.0.1:3307/db_fruit_vegetable_shop?serverTimezone=GMT%2b8&useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=crit@2019
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.continue-on-error=false
spring.datasource.test-while-idle=true
#獲取連接時候驗證,會影響性能
spring.datasource.test-on-borrow=false
#在連接歸還到連接池時是否測試該連接
spring.datasource.test-on-return=false
spring.datasource.validation-query=SELECT 1 FROM DUAL
#空閑連接回收的時間間隔,與test-while-idle一起使用,設置5分鐘
spring.datasource.time-between-eviction-runs-millis=300000
#連接池空閑連接的有效時間 ,設置30分鐘
spring.datasource.min-evictable-idle-time-millis=1800000
spring.datasource.initial-size=5
#指定連接池中最大的活躍連接數.
spring.datasource.max-active=50
#指定連接池等待連接返回的最大等待時間,毫秒單位.
spring.datasource.max-wait=60000
#指定必須保持連接的最小值
spring.datasource.min-idle=5
#熱部署生效
spring.devtools.restart.enabled=true
#mybatis駝峰匹配開啟
mybatis.configuration.map-underscore-to-camel-case=true
# 控制臺日志配置
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#mapper文件掃描路徑
mybatis.mapper-locations=classpath*:mappers/admin/*.xml,classpath*:mappers/home/*.xml,classpath*:mappers/common/*.xml
#mail配置
spring.mail.host=smtp.163.com
spring.mail.protocol=smtp
spring.mail.default-encoding=UTF-8
spring.mail.username=15959100218@163.com
spring.mail.password=LBWCLXTCZNGUMVMZ
spring.mail.test-connection=true
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
#redis配置
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.database=0
#圖片上傳設置
yjq.upload.photo.sufix=.jpg,.png,.gif,.jpeg
#1024KB
yjq.upload.photo.maxsize=1024
#200MB = 204800KB
yjq.upload.attachment.maxsize=204800
yjq.upload.photo.path=D:/IDEA_project/FruitAndVegetableShop/src/main/resources/upload/photo/
yjq.upload.attachment.path=D:/IDEA_project/FruitAndVegetableShop/src/main/resources/upload/attachment/
4.3.4.5代碼主啟動類:
package com.longwang;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class BlogApplication {
public static void main(String[] args)
{
SpringApplication.run(BlogApplication.class, args);
}
}
4.4數據庫表設計
數據庫采用mysql5版本、滿足數據庫設計三范式。
編碼采用utf8 -- UTF-8 Unicode
排序規則采用utf8_general_ci
4.4.0數據庫三范式要求:
一、第一范式
1NF是對屬性的原子性,要求屬性具有原子性,不可再分解;
二、第二范式
2NF是對記錄的唯一性,要求記錄有唯一標識,即實體的唯一性,即不存在部分依賴;
三、第三范式
3NF是對字段的冗余性,要求任何字段不能由其他字段派生出來,它要求字段沒有冗余,即不存在傳遞依賴;
4.4.1數據庫表ER圖
4.4.2用戶表設計
主要字段有:用戶名、密碼、郵箱、頭像、個人信息、昵稱、關注ids、手機號等信息
4.4.3美食分享文章表設計
主要字段有:id、美食標題、內容、用戶評論數量、是否為原創、轉載、用戶id、圖片名稱等
4.4.4個人博客表設計
主要字段有:博客id、頭像圖片、標題、姓名、地址等字段
4.4.5美食分類表設計
主要字段有:id、美食分類名稱
4.4.6美食分享評論表設計
主要字段有:id、評論時間、評論內容、評論人等
4.4.7美食分享公告表設計
主要字段有:id、公告內容、內容級別、時間等字段
4.4.6數據庫sql文件
/*
Navicat MySQL Data Transfer
Source Server ? ? ? ? : 139-3307
Source Server Version : 50727
Source Host ? ? ? ? ? : localhost:3307
Source Database ? ? ? : lifeshare
Target Server Type ? ?: MYSQL
Target Server Version : 50727
File Encoding ? ? ? ? : 65001
Date: 2021-03-02 17:16:15
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for hibernate_sequence
-- ----------------------------
DROP TABLE IF EXISTS `hibernate_sequence`;
CREATE TABLE `hibernate_sequence` (
?`next_val` bigint(20) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Records of hibernate_sequence
-- ----------------------------
INSERT INTO `hibernate_sequence` VALUES ('3');
INSERT INTO `hibernate_sequence` VALUES ('3');
INSERT INTO `hibernate_sequence` VALUES ('3');
INSERT INTO `hibernate_sequence` VALUES ('3');
INSERT INTO `hibernate_sequence` VALUES ('3');
INSERT INTO `hibernate_sequence` VALUES ('3');
INSERT INTO `hibernate_sequence` VALUES ('3');
INSERT INTO `hibernate_sequence` VALUES ('3');
INSERT INTO `hibernate_sequence` VALUES ('3');
-- ----------------------------
-- Table structure for t_admin
-- ----------------------------
DROP TABLE IF EXISTS `t_admin`;
CREATE TABLE `t_admin` (
?`admin_id` int(11) NOT NULL AUTO_INCREMENT,
?`head_portrait` varchar(200) DEFAULT NULL,
?`password` varchar(200) DEFAULT NULL,
?`phone` varchar(200) DEFAULT NULL,
?`sex` varchar(50) DEFAULT NULL,
?`signature` varchar(500) DEFAULT NULL,
?`true_name` varchar(200) DEFAULT NULL,
?`user_name` varchar(200) DEFAULT NULL,
?PRIMARY KEY (`admin_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Records of t_admin
-- ----------------------------
INSERT INTO `t_admin` VALUES ('1', 'DefaultHeadPortrait.jpg', 'admin', '18574375225', '男', '我是管理員', 'Admin', 'admin');
-- ----------------------------
-- Table structure for t_article
-- ----------------------------
DROP TABLE IF EXISTS `t_article`;
CREATE TABLE `t_article` (
?`article_id` int(11) NOT NULL AUTO_INCREMENT,
?`author` varchar(200) NOT NULL,
?`click` int(11) DEFAULT NULL,
?`comment_num` int(11) DEFAULT NULL,
?`content` text,
?`image_name` varchar(255) DEFAULT NULL,
?`is_original` int(11) DEFAULT NULL,
?`is_top` int(11) DEFAULT NULL,
?`publish_date` datetime DEFAULT NULL,
?`title` varchar(200) NOT NULL,
?`classify_id` int(11) DEFAULT NULL,
?`user_id` int(11) DEFAULT NULL,
?PRIMARY KEY (`article_id`),
?KEY `FKo4fros4yfq1m9ay7sgtlcvbc4` (`classify_id`),
?CONSTRAINT `FKo4fros4yfq1m9ay7sgtlcvbc4` FOREIGN KEY (`classify_id`) REFERENCES `t_classify` (`classify_id`)
) ENGINE=InnoDB AUTO_INCREMENT=52 DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Records of t_article
-- ----------------------------
INSERT INTO `t_article` VALUES ('11', '李楊勇', '84', '3', '<p>在當今這個互聯網時代,甚至5G馬上就要普遍使用的時代,餐飲行業如果還只是停留在專心做好菜品就能口口相傳,生意不愁的時代已經不復存在了,據相關數據顯示2020年全國將近1000萬家餐飲門店,但每天有近10000家餐廳關門!唯有把握好當今餐飲行業的發展趨勢,才能在競爭中立于不敗之地。</p>\n\n<p>2020年因疫情的原因餐飲行業實體店受到很大程度的影響,大多數餐飲企業都開始轉為線上點餐及預約就餐服務。那么問題來了這些問題應該怎么實現呢?餐飲網站建設的興起為餐飲行業線上服務做出了很大的支撐,下面時代匯創在這里為大家分享一下成都餐飲行業網站建設必須要有的一下功能板塊!</p>\n\n<p><img src=\"https://inews.gtimg.com/newsapp_bt/0/13224992512/1000\" /><em>成都餐飲電商網站制作</em></p>\n\n<p>首先要做到菜品的食材的追根溯源,讓消費者可以查到這些食材的來源,隨著時代的發展,現在越來越多的人重視健康了,讓消費者可以看到他點的菜品食材的所有來源也比較放心,就會對這個企業放心,對企業也是很好的一種宣傳方式!</p>\n\n<p>其次就是要做到顧客點餐的簡單便捷,現在大多數的年輕人都比較看中時間,不喜歡繁瑣的操作步驟,簡單易操作的點餐環節可以很好的留住顧客。</p>\n\n<p>通過這次疫情很多的餐飲企業通過重視餐飲網站建設發展電商業務,極大的緩解了因疫情帶來的巨大經濟壓力。可以預見的是,疫情結束后,很多的餐飲企業對于餐飲網站建設電商業務的探索不會停止,電商業務的發展也會給餐飲行業帶來新的靈感與活力。</p>\n', '20210302043445.png', '1', '1', '2021-03-02 16:34:47', '成都餐飲電商網站制作會給餐飲行業帶來新的靈感與活力嗎?', '15', null);
INSERT INTO `t_article` VALUES ('13', 'Single·湘潭', '69', '2', '<p>百度seo搜索引擎優化工具</p>\n\n<p> </p>\n\n<p>百度鏈接提交工具: 普通收錄_加快網站內容抓取,快速提交數據工具_站長工具_網站支持_百度搜索資源平臺?</p>\n\n<p>百度博客提交: http://ping.baidu.com/ping.html</p>\n\n<p>百度信譽申請: http://trust.baidu.com/vstar/feedback</p>\n\n<p>百度死鏈提交入口: http://zhanzhang.baidu.com/badlink/index</p>\n\n<p>百度數據標注工具: http://zhanzhang.baidu.com/itemannotator/index</p>\n\n<p>百度站點子鏈工具: http://zhanzhang.baidu.com/sitelink/index</p>\n\n<p>百度站點屬性工具: http://zhanzhang.baidu.com/property/index</p>\n\n<p>百度抓取頻次檢測工具: http://zhanzhang.baidu.com/pressure/index</p>\n\n<p>百度死鏈提交工具: http://zhanzhang.baidu.com/badlink/index</p>\n\n<p>百度新聞源投訴:http://tool.lusongsong.com/post/497.html<br?/>\n百度網頁申訴:http://zhanzhang.baidu.com/feedback<br?/>\n百度百科刪除工具:http://help.baidu.com/add?prod_id=10#3<br?/>\n百度百科舉報工具:http://quzhanzhang.com/baidu/baikejubao/url/<br?/>\n百度百科投訴工具:http://quzhanzhang.com/baidu/baiketousu/url/<br?/>\n百度貼吧投訴工具:http://tieba.baidu.com/helpcenter/index#/index<br?/>\n百度快照更新工具:http://help.baidu.com/webmaster/add/#1<br?/>\n百度快照刪除:http://quzhanzhang.com/baidu/kuaizhaoshanchu/url/<br?/>\n百度推廣舉報工具:http://quzhanzhang.com/baidu/tuiguangjubao/url/<br?/>\n百度快照更新投訴地址:http://help.baidu.com/webmaster/add/</p>\n\n<p>轉自:<a href=\"http://www.tyseo.cn/seo/107.html\" target=\"_blank\">http://www.tyseo.cn/seo/107.html</a></p>\n', '20210302043445.png', '0', '0', '2021-03-02 16:19:33', '百度seo搜索引擎優化工具', '2', null);
INSERT INTO `t_article` VALUES ('50', '李楊勇', '3', '0', '<p>中國菜在國外有迎合老外口味的食物,但我們知道這里的很多中餐并不是傳統中餐,像西蘭花牛肉、陳皮雞、炒飯等等食物我們并不喜歡,就曾有老外困惑道“為什么我喜歡的中國菜,中國人不會點?”顯然他并不知道這不是符合我們口味的食物。</p>\n\n<p><img src=\"https://t11.baidu.com/it/u=1649321449,3712678580&fm=173&app=49&f=JPEG?w=619&h=411&s=5B932FC3060607531FB5603E03001040\" /></p>\n\n<p>那么外國人必須嘗試的中國菜是什么?一位國外美食家就分享了他認為:你應該嘗試的8種最受歡迎的中國菜。很奇怪一些外國網友并不滿意這位美食家的推薦,他們的回復亮了,現在我們先來看看那些中國菜上榜了。</p>\n\n<p><img src=\"https://t10.baidu.com/it/u=1221878814,2895117533&fm=173&app=49&f=JPEG?w=640&h=352&s=3750653205CA45495CE1D1DB0000C0B1\" /></p>\n\n<p>第一道菜:咕嚕肉(糖醋里脊)這位美食家說道:有一個顏色鮮艷的橙紅色,和好吃的糖醋味。一開始只有糖醋豬肉,但為了滿足需求,這道菜有了一些發展。現在,豬肉可以被雞肉、牛肉或排骨等其他食材代替。</p>\n\n<p>第二道菜:宮保雞丁,這位外國美食家說道:一個著名的川味特色菜受中國人和外國人的歡迎。主要成分是雞丁、干辣椒和炸花生米。一種西式的宮保雞丁,雞丁上覆蓋著玉米淀粉,再加入蔬菜、糖醋醬和蒜蓉。</p>\n\n<p><img src=\"https://t10.baidu.com/it/u=1676440191,1412392146&fm=173&app=49&f=JPEG?w=639&h=445&s=932044A14E120AC2209249340300D048\" /></p>\n\n<p>第三道菜:麻辣豆腐。他說道:麻辣豆腐描述的是一種來自辣椒粉的豆腐食物,豆腐和棕紅色的碎牛肉和切碎的蔥花,這真是一道美味佳肴。</p>\n\n<p>第四道菜:餛飩。這位美食家說道:餛飩最通用的形狀是簡單的直角三角形,類似于意大利餃子。餛飩通常是煮熟后放在湯里吃,有時是油炸的。餛飩的餡可以是豬肉末或蝦丁。</p>\n\n<p><img src=\"https://t11.baidu.com/it/u=2652520486,1129685177&fm=173&app=49&f=JPEG?w=637&h=450&s=7E3836C45A232603142B867C0300007B\" /></p>\n\n<p>第五道菜:餃子。他說道:餃子在中國有著1800多年的悠久歷史,是一種廣受歡迎的傳統食品。餃子由肉末和切碎的蔬菜包裝在一塊薄的面團皮膚。</p>\n\n<p>第六道菜:炒面,這意味著是炒的面。一般來說,這道炒菜由面條、肉(通常是雞肉、牛肉、蝦或豬肉)洋蔥和芹菜組成。</p>\n\n<p><img src=\"https://t11.baidu.com/it/u=4261881181,1733979252&fm=173&app=49&f=JPEG?w=640&h=486&s=9F305C87CFF2B6C0566FDD2C03007049\" /></p>\n\n<p>第七道菜:北京烤鴨,這位美食家說道:北京烤鴨享受世界的名聲,視為中國國菜之一。北京烤鴨以皮薄脆而著稱,通常與薄煎餅、甜豆醬或蒜蓉醬油一起吃。這是一道你必須嘗試的中國菜。</p>\n\n<p>第八道菜:春卷。春卷是一個圓柱形狀的廣東點心。春卷的餡料可以是蔬菜也可以是肉,味道可以是甜的也可以是香的,通過油炸賦予金黃色。</p>\n\n<p><img src=\"https://t11.baidu.com/it/u=3301257643,1369950624&fm=173&app=49&f=JPEG?w=640&h=268&s=6F50E5128FE06D0B42F151CA03007030\" /></p>\n\n<p>現在我們看看這位外國美食家推薦的必須嘗試的8道中國菜,實際上這些菜都是老生常談,像麻婆豆腐、春卷、炒面,在國外非常流行,而且沒有傳統中餐里的食物,如火鍋、肉夾饃、包子等等這樣的食物。</p>\n\n<p>所以就有網友回復道:嗯這些都是美式中國菜吧?為什么沒有清蒸魚、麻辣燙、水煮肉片、糖醋排骨、青椒肉菜?你肯定沒有去過中國或者吃過真正的中國菜。</p>\n', '20210302015008.png', '0', '1', '2021-03-02 16:19:33', '你必須嘗試的8種中國菜', '15', null);
-- ----------------------------
-- Table structure for t_blogger
-- ----------------------------
DROP TABLE IF EXISTS `t_blogger`;
CREATE TABLE `t_blogger` (
?`blogger_id` int(11) NOT NULL AUTO_INCREMENT,
?`head_portrait` varchar(200) DEFAULT NULL,
?`motto` varchar(500) DEFAULT NULL,
?`nick_name` varchar(200) DEFAULT NULL,
?`site` varchar(200) DEFAULT NULL,
?`signature` varchar(500) DEFAULT NULL,
?PRIMARY KEY (`blogger_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Records of t_blogger
-- ----------------------------
INSERT INTO `t_blogger` VALUES ('1', '20180610034905.jpg', '有個被嘲笑的夢想萬一有天實現了呢?up up~', 'Single', '湖南 - 湘潭', 'Single,一枚90后的java程序員,好奇心比較強,目前是一個碼農,從事Java方向的研究和開發。-- Single');
-- ----------------------------
-- Table structure for t_classify
-- ----------------------------
DROP TABLE IF EXISTS `t_classify`;
CREATE TABLE `t_classify` (
?`classify_id` int(11) NOT NULL AUTO_INCREMENT,
?`classify_name` varchar(200) NOT NULL,
?PRIMARY KEY (`classify_id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Records of t_classify
-- ----------------------------
INSERT INTO `t_classify` VALUES ('2', '粵菜');
INSERT INTO `t_classify` VALUES ('12', '中華名小吃');
INSERT INTO `t_classify` VALUES ('15', '中餐美食');
-- ----------------------------
-- Table structure for t_comment
-- ----------------------------
DROP TABLE IF EXISTS `t_comment`;
CREATE TABLE `t_comment` (
?`comment_id` int(11) NOT NULL AUTO_INCREMENT,
?`comment_date` datetime DEFAULT NULL,
?`content` varchar(500) DEFAULT NULL,
?`article_id` int(11) DEFAULT NULL,
?`user_id` int(11) DEFAULT NULL,
?PRIMARY KEY (`comment_id`),
?KEY `FKlsvvc2ob8lxg2m9qqry15ru0y` (`article_id`),
?KEY `FKtamaoacctq4qpko6bvtv0ke1p` (`user_id`),
?CONSTRAINT `FKlsvvc2ob8lxg2m9qqry15ru0y` FOREIGN KEY (`article_id`) REFERENCES `t_article` (`article_id`),
?CONSTRAINT `t_comment_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `t_user` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Records of t_comment
-- ----------------------------
INSERT INTO `t_comment` VALUES ('1', '2021-03-02 16:19:33', '<p><span>世界上只有10種人,懂二進制和不懂二進制的。<img src=\"http://www.long225.cn/static/foreground/layui/images/face/3.gif\" alt=\"[可愛]\"></span></p>', null, '1');
INSERT INTO `t_comment` VALUES ('2', '2021-03-02 16:19:33', 'gyhj', '11', '3');
INSERT INTO `t_comment` VALUES ('3', '2021-03-02 16:19:33', 'hdvd ', '11', '1');
INSERT INTO `t_comment` VALUES ('4', '2021-03-02 16:19:33', '<p>這個歌可以不要換一個頁面就重播一次嘛,可以換一個頁面就換一首歌或者唱完再重播嘛</p><p>給你一個666,嘿嘿</p>', null, '6');
INSERT INTO `t_comment` VALUES ('5', '2021-03-02 16:19:33', '1', '13', '7');
INSERT INTO `t_comment` VALUES ('6', '2021-03-02 16:19:33', 'asd as a', '13', '13');
INSERT INTO `t_comment` VALUES ('7', '2021-03-02 16:19:33', '對學習毫無興趣了,怎么辦。', null, '1');
INSERT INTO `t_comment` VALUES ('8', '2021-03-02 16:19:33', '百度第一頁了,老鐵,66666', null, '11');
INSERT INTO `t_comment` VALUES ('9', '2021-03-02 16:35:41', 'eqwqweq', '11', '16');
-- ----------------------------
-- Table structure for t_link
-- ----------------------------
DROP TABLE IF EXISTS `t_link`;
CREATE TABLE `t_link` (
?`link_id` int(11) NOT NULL AUTO_INCREMENT,
?`link_email` varchar(200) DEFAULT NULL,
?`link_name` varchar(200) DEFAULT NULL,
?`link_url` varchar(200) DEFAULT NULL,
?`order_num` int(11) DEFAULT NULL,
?PRIMARY KEY (`link_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Records of t_link
-- ----------------------------
INSERT INTO `t_link` VALUES ('1', 'baidu@qq.com', '百度一下', 'https://www.baidu.com/', '1');
INSERT INTO `t_link` VALUES ('2', 'layui@qq.com', 'Layui', 'http://www.layui.com/', '2');
INSERT INTO `t_link` VALUES ('3', '13262629692@qq.com', '勿擾個人博客', 'http://wurao.xin/index.html', '3');
INSERT INTO `t_link` VALUES ('4', '694076359@qq.com', 'ITcodai博客', 'http://blog.itcodai.com/', '4');
-- ----------------------------
-- Table structure for t_music
-- ----------------------------
DROP TABLE IF EXISTS `t_music`;
CREATE TABLE `t_music` (
?`music_id` int(11) NOT NULL AUTO_INCREMENT,
?`artist` varchar(200) DEFAULT NULL,
?`cover` varchar(500) DEFAULT NULL,
?`name` varchar(200) DEFAULT NULL,
?`url` varchar(500) DEFAULT NULL,
?PRIMARY KEY (`music_id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of t_music
-- ----------------------------
INSERT INTO `t_music` VALUES ('1', '暗杠', 'http://p1.music.126.net/HP69gdNMpzh6yq9_Ws6Nvw==/109951163317309202.jpg?param=130y130', '童話鎮', 'http://link.hhtjim.com/163/566443468.mp3');
INSERT INTO `t_music` VALUES ('3', '林宥嘉', 'http://p1.music.126.net/jI1EcP0FrAVpPlZdGXd5Cw==/109951163304640811.jpg?param=130y130', '成全', 'http://link.hhtjim.com/163/562594267.mp3');
INSERT INTO `t_music` VALUES ('2', '李榮浩', 'http://p1.music.126.net/rVkRzdKkIqVxRjDhN4LFHQ==/18342052975051883.jpg?param=130y130', '戒煙', 'http://link.hhtjim.com/163/518686034.mp3');
INSERT INTO `t_music` VALUES ('4', '宋冬野', 'http://p1.music.126.net/GcRunGm02vZBicYmIN6GXw==/109951163200249252.jpg?param=130y130', '安河橋', 'http://link.hhtjim.com/163/27646205.mp3');
INSERT INTO `t_music` VALUES ('5', '宋冬野', 'http://p1.music.126.net/GcRunGm02vZBicYmIN6GXw==/109951163200249252.jpg?param=130y130', '董小姐', 'http://link.hhtjim.com/163/27646198.mp3');
-- ----------------------------
-- Table structure for t_notice
-- ----------------------------
DROP TABLE IF EXISTS `t_notice`;
CREATE TABLE `t_notice` (
?`notice_id` int(11) NOT NULL AUTO_INCREMENT,
?`grade` int(11) DEFAULT NULL,
?`content` varchar(500) DEFAULT NULL,
?`publish_date` datetime DEFAULT NULL,
?PRIMARY KEY (`notice_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Records of t_notice
-- ----------------------------
INSERT INTO `t_notice` VALUES ('1', '0', '<p><span style=\"color:#ff0000\">本博客前端采用的是zuoqy博客的界面風格。</span></p>\n', '2021-03-02 16:19:33');
INSERT INTO `t_notice` VALUES ('2', '1', '<p>推薦用谷歌或火狐瀏覽器</p>\n', '2021-03-02 16:19:33');
INSERT INTO `t_notice` VALUES ('3', '0', '<p><span style=\"color:#ff0000\">親愛的美食分享者、歡迎您</span></p>\n', '2021-03-02 16:19:33');
-- ----------------------------
-- Table structure for t_reply
-- ----------------------------
DROP TABLE IF EXISTS `t_reply`;
CREATE TABLE `t_reply` (
?`reply_id` int(11) NOT NULL AUTO_INCREMENT,
?`content` varchar(500) DEFAULT NULL,
?`reply_date` datetime DEFAULT NULL,
?`comment_id` int(11) DEFAULT NULL,
?`user_id` int(11) DEFAULT NULL,
?PRIMARY KEY (`reply_id`),
?KEY `FKk4ydp71wampdbnguly8iks4rf` (`comment_id`),
?KEY `FKslt6r79iw1p9cbxns09erjv6v` (`user_id`),
?CONSTRAINT `FKk4ydp71wampdbnguly8iks4rf` FOREIGN KEY (`comment_id`) REFERENCES `t_comment` (`comment_id`),
?CONSTRAINT `t_reply_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `t_user` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Records of t_reply
-- ----------------------------
INSERT INTO `t_reply` VALUES ('1', 'jsbd d ', '2021-03-02 16:19:33', '2', '1');
INSERT INTO `t_reply` VALUES ('2', '上個版本不會重播,但那影響到百度抓取我的頁面,所以改了。', '2021-03-02 16:19:33', '4', '1');
INSERT INTO `t_reply` VALUES ('3', '2', '2021-03-02 16:19:33', '5', '7');
INSERT INTO `t_reply` VALUES ('4', '3', '2021-03-02 16:19:33', '5', '1');
INSERT INTO `t_reply` VALUES ('5', '感謝前端大佬光臨本站,嘿嘿。', '2021-03-02 16:19:33', '8', '1');
-- ----------------------------
-- Table structure for t_timeline
-- ----------------------------
DROP TABLE IF EXISTS `t_timeline`;
CREATE TABLE `t_timeline` (
?`timeline_id` int(11) NOT NULL AUTO_INCREMENT,
?`content` varchar(200) DEFAULT NULL,
?`publish_date` datetime DEFAULT NULL,
?`month` varchar(200) DEFAULT NULL,
?`year` varchar(200) DEFAULT NULL,
?PRIMARY KEY (`timeline_id`)
) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of t_timeline
-- ----------------------------
INSERT INTO `t_timeline` VALUES ('1', '藍色牛仔褲博客項目啟動!', '2021-03-02 16:19:33', '06', '2018');
INSERT INTO `t_timeline` VALUES ('2', '<p>本博客前臺采用Layui框架,后臺使用springboot框架1!</p>\n', '2021-03-02 16:19:33', '06', '2018');
INSERT INTO `t_timeline` VALUES ('3', '你就是我不愛別人的理由。', '2021-03-02 16:19:33', '05', '2018');
INSERT INTO `t_timeline` VALUES ('4', '采用shiro作為安全權限框架!', '2021-03-02 16:19:33', '05', '2018');
INSERT INTO `t_timeline` VALUES ('5', 'l love three things in this world. Sun,Moon and You. Sun for morning,Moon for night,and You forever.', '2021-03-02 16:19:33', '05', '2018');
INSERT INTO `t_timeline` VALUES ('6', '博客持續更新中...', '2021-03-02 16:19:33', '03', '2018');
INSERT INTO `t_timeline` VALUES ('7', '感覺自己寫的樣式太丑了,兼容性不好,發現了zuoqy博客的風格', '2021-03-02 16:19:33', '02', '2018');
INSERT INTO `t_timeline` VALUES ('8', '開始學習java,嘻嘻', '2021-03-02 16:19:33', '09', '2017');
INSERT INTO `t_timeline` VALUES ('10', '<p>發布測試</p>\n', '2021-03-02 16:19:33', '06', '2018');
INSERT INTO `t_timeline` VALUES ('11', '<p><span style=\"color:#ff0000\">文章專欄開通關鍵詞搜索功能,使用Lucene作為全文檢索,SmartChineseAnalyzer中文分詞器。</span></p>\n', '2021-03-02 16:19:33', '06', '2018');
INSERT INTO `t_timeline` VALUES ('12', '<p>項目考核涼了,B班見。</p>\n', '2021-03-02 16:19:33', '06', '2018');
-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
?`user_id` int(11) NOT NULL AUTO_INCREMENT,
?`head_portrait` varchar(200) DEFAULT NULL,
?`lately_login_time` datetime DEFAULT NULL,
?`nickname` varchar(200) DEFAULT NULL,
?`registration_date` datetime DEFAULT NULL,
?`sex` varchar(50) DEFAULT NULL,
?`open_id` varchar(200) DEFAULT NULL,
?`password` varchar(255) DEFAULT NULL,
?`username` varchar(255) DEFAULT NULL,
?`article_ids` varchar(255) DEFAULT NULL,
?`birthday` date DEFAULT NULL,
?`momo` varchar(255) DEFAULT NULL,
?`phone` varchar(255) DEFAULT NULL,
?`user_ids` varchar(255) DEFAULT NULL,
?PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of t_user
-- ----------------------------
INSERT INTO `t_user` VALUES ('1', null, '2021-03-02 16:19:33', '2', '2021-03-02 16:19:33', '男', null, '1', 'xiao', null, null, null, null, null);
INSERT INTO `t_user` VALUES ('2', 'http://qzapp.qlogo.cn/qzapp/101477629/B5D5212D0429E4491D932EEEF814FE99/100', '2021-03-02 16:19:33', 'Mr.Long', '2021-03-02 16:19:33', '男', 'asdasdasds', null, null, null, null, null, null, null);
INSERT INTO `t_user` VALUES ('3', 'http://qzapp.qlogo.cn/qzapp/101477629/0ABFEA14AAF50D3C07B6489440FEE081/100', '2021-03-02 16:19:33', '一念之間', '2021-03-02 16:19:33', '男', 'sdfsdf', null, null, null, null, null, null, null);
INSERT INTO `t_user` VALUES ('4', 'http://qzapp.qlogo.cn/qzapp/101477629/142350DC6080D761759CA72042447829/100', '2021-03-02 16:19:33', '十七', '2021-03-02 16:19:33', '男', 'sdfsdfghg', null, null, null, null, null, null, null);
INSERT INTO `t_user` VALUES ('5', 'http://qzapp.qlogo.cn/qzapp/101477629/E79436B993353FA72023157E21CD2C3F/100', '2018-06-10 20:06:11', 'Single', '2021-03-02 16:19:33', '男', 'sdfsd', null, null, null, null, null, null, null);
INSERT INTO `t_user` VALUES ('6', 'http://qzapp.qlogo.cn/qzapp/101477629/88A9474D1A53563D118543E48F59F721/100', '2021-03-02 16:19:33', '我跑不動啊', '2021-03-02 16:19:33', '女', 'sdfgrsd', null, null, null, null, null, null, null);
INSERT INTO `t_user` VALUES ('7', 'http://qzapp.qlogo.cn/qzapp/101477629/E5DB0905E97D1C1D0429638180659871/100', '2021-03-02 16:19:33', 'the lack of sleep', '2021-03-02 16:19:33', '男', 'dgbtgd', null, null, null, null, null, null, null);
INSERT INTO `t_user` VALUES ('8', 'http://qzapp.qlogo.cn/qzapp/101477629/A4ADB5EFBC940831DE19D512169184A8/100', '2021-03-02 16:19:33', 'Pingchas', '2021-03-02 16:19:33', '男', 'gdfgtrg', null, null, null, null, null, null, null);
INSERT INTO `t_user` VALUES ('9', 'http://qzapp.qlogo.cn/qzapp/101477629/78392FE441D2DBDA7FB2234B5D3EE3FB/100', '2021-03-02 16:19:33', '友人A', '2021-03-02 16:19:33', '男', '345345', null, null, null, null, null, null, null);
INSERT INTO `t_user` VALUES ('10', 'http://qzapp.qlogo.cn/qzapp/101477629/D2EED660C5B57BF4EFD247CC2CA137F0/100', '2021-03-02 16:19:33', 'Ms.Right', '2021-03-02 16:19:33', '男', '345reggdg', null, null, null, null, null, null, null);
INSERT INTO `t_user` VALUES ('11', 'http://qzapp.qlogo.cn/qzapp/101477629/2D4D8F55CF18BD03F1FF9351CB744116/100', '2021-03-02 16:19:33', '如果,雨之后', '2021-03-02 16:19:33', '男', 'dfgrgdrg', null, null, null, null, null, null, null);
INSERT INTO `t_user` VALUES ('12', 'http://qzapp.qlogo.cn/qzapp/101477629/3279E599883D7D2E9468C8A8A7E11E5D/100', '2021-03-02 16:19:33', '綠乄茶', '2021-03-02 16:19:33', '男', 'ghgfhnn', null, null, null, null, null, null, null);
INSERT INTO `t_user` VALUES ('13', 'http://qzapp.qlogo.cn/qzapp/101477629/F2A070ABD05227F5A2AF61CC81A2B5F8/100', '2021-03-02 16:19:33', '超越', '2021-03-02 16:19:33', '男', 'dfgergd', null, null, null, null, null, null, null);
INSERT INTO `t_user` VALUES ('14', 'http://qzapp.qlogo.cn/qzapp/101477629/FFC7B2289731ABCFFB01D21467FF04A5/100', '2021-03-02 16:19:33', 'Arc', '2021-03-02 16:19:33', '男', 'dffff', null, null, null, null, null, null, null);
INSERT INTO `t_user` VALUES ('15', 'http://qzapp.qlogo.cn/qzapp/101477629/F15203D785A4EE987A28B92A617A2DA8/100', '2021-03-02 16:19:33', 'Yuu', '2021-03-02 16:19:33', '男', 'aaaaaa', null, null, null, null, null, null, null);
INSERT INTO `t_user` VALUES ('16', null, '2021-03-02 16:35:36', '123', '2021-03-02 16:19:33', '男', null, '123', 'lyy', null, null, null, null, null);