1我的项目简介
1.1 概述
动吧游览生态系统,应市场高端用户需要,公司决定开发这样的一套游览零碎,此零碎蕴含游览电商零碎(广告子系统,举荐子系统,评估子系统,商品子系统,订单子系统,…),游览分销零碎(分销商的治理),游览业务零碎(产品研发,计调服务,零碎权限管理子系统,..),,。。。
1.2 原型剖析
基于用户需要,进行原型设计(基于html+css+js进行动态页面实现)。例如零碎登录页面:
零碎登录胜利页面(例如starter.html)
菜单展现页面
阐明:原型设计好当前,会与客户进行确认,确认好当前进行签字,而后就是设计和实现.
2 技术架构
2.1 我的项目分层架构
本我的项目应用层基于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 接口
阐明:对如上分层中波及到常识的点,逐渐增强。
总之:分层的目标就是将简单问题进行拆解,而后分而治,进而进步零碎的可扩展性以及可维护性。
2.2 API利用架构
整体API利用架构:
3 技术整合
3.1 环境筹备
3.1.1 数据库初始化
启动MySQL客户端并登陆,而后执行
1) set names utf8;
2) source d:/jtsys.sql
阐明:如果在mysql客户端查问表中数据,能够先执行set names gbk,否则可能会呈现乱码。还有一点要记住,在拿到任何一个sql脚本文件时,不要上来就执行它,要先关上看一看,查看是否有删除库或删除表的语句,这些语句是否会对你以后数据库中的库和表有影响 ,如果有肯定要通过leader审批,能力执行删除等操作.
3.1.2 IDE配置初始化(STS)
- 对立工作区编码(UTF-8)
- 对立JDK版本(JDK1.8)
- 对立MAVEN配置(3.6.3)
3.2 创立我的项目
- 项目名称:CGB-DB-SYS-V3.01
- 组ID: com.cy
- 打包形式:jar
3.2.1 增加我的项目依赖
3.2.2 查看是不是utf-8
3.2.3 批改配置文件
在application.yml文件中增加如下配置(server,datasource,mybatis,mvc)
#serverserver: port: 80 servlet: context-path: /#springspring: datasource: url: jdbc:mysql:///dbsys?serverTimezone=GMT%2B8&characterEncoding=utf8 username: root password: 1234 thymeleaf: prefix: classpath:/templates/pages/ suffix: .html#mybatismybatis: configuration: default-statement-timeout: 60 map-underscore-to-camel-case: true mapper-locations: - classpath:/mapper/*/*.xml#lOGlogging: level: com.cy: debug
3.3 首页初始化
3.3.1 定义页面初始资源
- 将js、css、images相干资源拷贝到我的项目static目录
- 将pages页面拷贝到我的项目的templates目录
3.3.2 创立页面Controller
创立出现首页页面的controller对象。
package com.cy.pj.sys.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;//只有是申请页面就交给这个controller去做@Controller@RequestMapping("/")public class PageController { @GetMapping("doIndexUI")//申请门路 public String doIndexUI(){ return "starter";//返回咱们的starter.HTML页面 }}
阐明:此controller会作为我的项目中所有页面拜访的入口。
3.3.3 启动我的项目进行测试
启动tomcat,在地址栏输出http://localhost/doIndexUI(地址中的端口号要参考本人tomcat启动端口)地址进行拜访,如果没有问题会出现如下页面:
页面拜访流程剖析,如下图所示(理解):
4 总结
4.1 重点难点剖析
- 我的项目需要调研,剖析,原型设计,评审?
- 我的项目整体利用分层架构及API设计架构?
- 我的项目初始化环境配置(数据库,IDE,MAVEN)及运行?
4.2 FAQ剖析
- 我的项目是如何进行分层设计的?(MVC)。
- 我的项目页面是如何设计的? (BootStrap,AdminLTE-网址(adminlte.io))。
- 客户端向服务端发动一个申请,服务端申请解决的一个过程是怎么的?
4.3 BUG剖析
▪ 申请资源不存在,如下图所示:
问题剖析:
1) 查看url是否正确(是否有对应的映射)
2) 查看controller的包是否正确以及是否有对应的注解(例如@Controller)进行形容
▪ 响应资源解析异样,如下图所示:
问题剖析:
1) 如果start是模板,查看响应页面是否存在.
2) 查看配置文件中视图的前缀、后缀是否正确
3) 如果start不是html模板,查看对应的Controller办法上是否有@ReponseBody注解