1 項目簡介
1.1 概述
動吧旅遊生態系統,應市場高端用戶需求,決定開發這樣的一套旅遊系統,此係統包含旅遊電商系統(推薦子系統,廣告子系統,評價子系統,商品子系統,訂單子系統)等,旅遊分銷系統(分銷商的管理),旅遊業務系統(產品研發,計調服務,系統權限管理子系統)等。
1.2 原型分析
基於用戶需求,進行原型設計(基於html+css+js進行靜態頁面實現)。例如系統登陸頁面:
系統登陸成功頁面(例如starter.html)
菜單展現頁面css
本項目應用層基於MVC設計思想,進行分層架構設計,目的是將複雜問題簡單化,實現各司其職,各盡所能.而後基於「高內聚,低耦合」的設計思想,再實現各對象之間協同,從而提升系統的可維護性,可擴展性。
其中:
1.開放接口層:可直接封裝 Service 方法暴露成 RPC (遠程過程調用)接口;也可經過 Web 封裝成 http 接口;同時也可進行網關安全控制、流量控制等。
2.終端顯示層:負責各個端的模板渲染並顯示。當前主要是 thymeleaf 渲染,JS 渲染,移動端展現等。
3.Web請求處理層:主要是對訪問控制進行轉發,請求參數校驗,響應結果處理等
4.Service 層:相對具體的業務邏輯服務層(核心業務,擴展業務)。
5.Manager 層:通用業務處理層,它有以下特徵:
1) 對第三方平臺封裝的層,預處理返回結果及轉化異常信息;
2) 對 Service 層通用能力的下沉,如緩存方案、中間件通用處理;
3) 與 DAO 層交互,對多個 DAO 的組合複用。
6.DAO 層:數據訪問層,與底層 MySQL、Oracle、Hbase 等進行數據交互。
7.外部接口或第三方平臺:包括其它部門RPC開放接口,基礎平臺,其它公司的 HTTP 接口
說明:對如上分層中涉及到知識的點,逐步增強。
總之:分層的目的就是將複雜問題進行拆解,而後分而治,進而提升系統的可擴展性以及可維護性。html
總體API應用架構:java
3.1 啓動 MySQL 客戶端並登錄,而後執行
1) set names utf8;
2) source d:/dbpms.sql
說明:假如在 mysql 客戶端查詢表中數據,能夠先執行 set names gbk,不然可能會出
現亂碼。還有一點要記住,在拿到任何一個 sql 腳本文件時,不要上來就執行它,要先打開
看一看,檢查是否有刪除庫或刪除表的語句,這些語句是否會對你當前數據庫中的庫和表
有影響 ,假若有必定要通過 leader 審批,才能執行刪除等操做.
3.2 建立項目
3.2.1 建立項目 moudlemysql
項目建立之後,將項目 module 中的 src 刪除,並打開項目中的 pom 文件,修改 module 爲pom 工程,代碼以下:web
<packaging>pom</packaging>
在 parent 工程建立後之後,添加相關依賴,pom 文件以下:spring
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.cy</groupId> <artifactId>15-dbpms-parent</artifactId> <version>0.0.1-SNAPSHOT</version> <name>15-dbpms-parent</name> <description>Demo project for Spring Boot</description> <packaging>pom</packaging> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.3</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.cy</groupId> <artifactId>15-dbpms-parent</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.cy</groupId> <artifactId>15-dbpms-common</artifactId> <version>0.0.1-SNAPSHOT</version> <name>15-dbpms-common</name> <description>Demo project for Spring Boot</description> <packaging>jar</packaging> <properties> <java.version>1.8</java.version> </properties> </project>
5.dbpms-admin 工程 pom.xml 文件sql
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.cy</groupId> <artifactId>15-dbpms-parent</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.cy</groupId> <artifactId>15-dbpms-admin</artifactId> <version>0.0.1-SNAPSHOT</version> <name>15-dbpms-admin</name> <description>Demo project for Spring Boot</description> <packaging>jar</packaging> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>com.cy</groupId> <artifactId>15-dbpms-common</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> </project>
3.2.2 修改配置文件
在 application.yml 文件中添加以下配置(server,datasource,mybatis,mvc)數據庫
server: port: 80 spring: main: banner-mode: off datasource: url: jdbc:mysql:///dbpms?serverTimezone=GMT%2B8&characterEncoding=utf8 username: root password: root thymeleaf: prefix: classpath:/templates/modules/ suffix: .html cache: false mybatis: mapper-locations: classpath:/mapper/*/*.xml logging: level: com.cy: debug
3.3 首頁初始化
3.3.1 定義頁面初始資源apache
3.3.2 建立頁面 Controller
建立呈現首頁頁面的 controller 對象。此 controller 會做爲項目中全部頁面訪問的入口。緩存
package com.cy.pj.sys.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @RequestMapping("/") @Controller//處理客戶端全部頁面請求 public class PageController { @RequestMapping("doIndexUI") public String doIndexUI(){ return "starter"; } }
3.3.3 啓動項目進行測試
啓動 tomcat,在地址欄輸入 http://localhost/doIndexUI(地址中的端口號要參考本身tomcat 啓動端口)地址進行訪問,假如沒有問題會呈現以下頁面:
頁面訪問流程分析,以下圖所示:
問題分析:
問題分析: