关于spring-mvc:动吧旅游生态系统day01

4次阅读

共计 2742 个字符,预计需要花费 7 分钟才能阅读完成。

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)

  1. 对立工作区编码(UTF-8)
  2. 对立 JDK 版本(JDK1.8)
  3. 对立 MAVEN 配置(3.6.3)

3.2 创立我的项目

  1. 项目名称:CGB-DB-SYS-V3.01
  2. 组 ID: com.cy
  3. 打包形式:jar

3.2.1 增加我的项目依赖

3.2.2 查看是不是 utf-8

3.2.3 批改配置文件

在 application.yml 文件中增加如下配置(server,datasource,mybatis,mvc)

#server
server:
  port: 80
 servlet:
    context-path: /
#spring
spring:
  datasource:
    url: jdbc:mysql:///dbsys?serverTimezone=GMT%2B8&characterEncoding=utf8
    username: root
    password: 1234
  thymeleaf:
    prefix: classpath:/templates/pages/
    suffix: .html
#mybatis
mybatis:
  configuration:
    default-statement-timeout: 60
 map-underscore-to-camel-case: true
 mapper-locations:
    - classpath:/mapper/*/*.xml
#lOG
logging:
  level:
    com.cy: debug

3.3 首页初始化

3.3.1 定义页面初始资源

  1. 将 js、css、images 相干资源拷贝到我的项目 static 目录
  2. 将 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 重点难点剖析

  1. 我的项目需要调研,剖析,原型设计, 评审?
  2. 我的项目整体利用分层架构及 API 设计架构?
  3. 我的项目初始化环境配置 (数据库,IDE,MAVEN) 及运行?

4.2 FAQ 剖析

  1. 我的项目是如何进行分层设计的?(MVC)。
  2. 我的项目页面是如何设计的? (BootStrap,AdminLTE- 网址(adminlte.io))。
  3. 客户端向服务端发动一个申请, 服务端申请解决的一个过程是怎么的?

4.3 BUG 剖析

▪ 申请资源不存在, 如下图所示:

问题剖析:

1) 查看 url 是否正确(是否有对应的映射)

2) 查看 controller 的包是否正确以及是否有对应的注解 (例如 @Controller) 进行形容

▪ 响应资源解析异样, 如下图所示:

问题剖析:

1) 如果 start 是模板,查看响应页面是否存在.

2) 查看配置文件中视图的前缀、后缀是否正确

3) 如果 start 不是 html 模板,查看对应的 Controller 办法上是否有 @ReponseBody 注解

正文完
 0