京淘项目Day03
- SpringBoot整合动态web资源
=======================
1.1 创建web项目
1.1.1 创建项目
1.1.2 添加jar包
`
4.0.0
com.jt
springboot_demo3
1.0-SNAPSHOT
org.springframework.boot
spring-boot-starter-parent
2.4.2
1.8
true
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-devtools
runtime
true
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-starter-jdbc
mysql
mysql-connector-java
com.baomidou
mybatis-plus-boot-starter
3.2.0
javax.servlet
javax.servlet-api
javax.servlet
jstl
org.apache.tomcat.embed
tomcat-embed-jasper
org.springframework.boot
spring-boot-maven-plugin
org.projectlombok
lombok
`
1.1.3 编辑YML配置文件
`#配置tomcat服务器相关信息
server:
port: 8090
servlet:
#项目发布路径 一般都是默认值/
context-path: /
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
username: root
password: root
#配置视图解析器
mvc: #引入mvn配置
view:
prefix: /WEB-INF/ # /默认代表根目录 src/main/webapp
suffix: .jsp
#整合MybatisPlus
mybatis-plus:
#只要定义了别名包 之后的映射类型可以自动的完成拼接.
type-aliases-package: com.jt.demo.pojo
mapper-locations: classpath:/mybatis/mappers/*.xml
#开启驼峰映射
configuration:
map-underscore-to-camel-case: true
#打印sql语句
logging:
level:
com.jt.demo.mapper: debug`
1.1.4 编辑Controller方法
`package com.jt.demo.controller;
import com.jt.demo.pojo.User;
import com.jt.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/findAll")
@ResponseBody
public List findAll(){
return userService.findAll();
}
/**
* 实现页面跳转
* url:http://localhost:8090/userList userList.jsp
* 页面取值: ${userList}
* 如何将数据赋值给域对象????
*/
@RequestMapping("/userList")
//@ResponseBody //1.将返回值结果转化为JSON 2.表示程序结束 3.不会执行视图解析器配置
public String userList(Model model){
List userList = userService.findAll();
//利用model将数据保存到request域
model.addAttribute("userList",userList);
return "userList";
}
}`
1.1.5 页面跳转404异常说明
报错说明: 通过图上的报错信息 找不到具体的页面. 下列报错与代码无关,与IDEA的环境配置有关.
2).编辑IDEA环境配置
1.1.6 页面效果展现
1.2 异步方式实现数据访问
1.2.1 ajax特点
1.2.2 ajax业务说明
说明: 用户通过http://localhost:8090/ajaxUser 跳转到ajaxUserList.jsp页面中,其次通过ajax操作动态获取user集合数据,将数据在页面中进行展现.
核心:
1.跳转ajax发送请求的页面
2.编辑ajax发送请求获取结果,将数据在指定的位置展现.
1.2.3 跳转展现页面
`/**
* 跳转到ajax页面
*/
@RequestMapping("ajaxUser")
public String toAjax(){
return "ajaxUserList";
}`
1.2.4 导入JS函数类库
`<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
您好Springboot
学生信息
编号
姓名
年龄
性别
`
1.2.5 页面效果展现
- 京淘项目后台架构设计
==============
2.1 单体架构设计存在的问题
传统项目采用单体架构设计,虽然可以在一定的程度上解决企业问题,但是如果功能模块众多,并且将来需要二次开发.由于模块都是部署到同一台tomcat服务器中,如果其中某个模块代码出现了问题,将直接影响整个tomcat服务器运行.
这样的设计耦合性太高.不便于开发和维护.
2.2 分布式思想(拆)
2.2.1 分布式计算
说明: 如果某个业务需要处理1000G的数据 如果通过一个线程.该工作几乎不可能完成…
优化方式: 同时开启多个线程 一起执行任务的计算. 理论上来说运行的速度大幅度提升.
难点: 数据如何拆分/数据如何合并
计算方式: 大数据应用.
2.2.2 分布式系统
说明: 分布式系统指按照某种规则,将项目按照规则进行拆分.从架构上降低了系统的耦合性.提高软件的扩展性.
2.2.2.1 按照模块拆分
2.2.2.2 按照层级拆分
说明: 由于某个项目比较复杂.需要多个开发人员相互配合.这时为了提高开发的效率.采用层级拆分的方式进行.
2.2.3 分布式系统设计问题说明
铺垫: maven项目打包方式: 1.jar包(默认值) 2.war包 3.pom(聚合工程)
1).由于项目众多 如何统一的管理?
答案: 采用聚合工程的方式统一管理项目 打包方式 POM
2).项目多了之后,如何保证jar包版本的稳定?
答案: 采用统一的方式管理jar包文件 通过父级工程定义父级jar包.之后子级项目继承父级即可.
3).工具API如何做到统一的管理?
答案: 定义核心工具API工程. 架构师/高级程序员统一维护API项目. 之后API项目被其他的项目进行依赖.
3 京淘项目后台架构搭建
3.1 创建父级工程
3.1.1 创建父级工程JT
3.1.2 编辑jt pom.xml文件
`
4.0.0
com.jt
jt
1.0-SNAPSHOT
pom
org.springframework.boot
spring-boot-starter-parent
2.4.2
1.8
true
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-devtools
runtime
true
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-starter-jdbc
mysql
mysql-connector-java
com.baomidou
mybatis-plus-boot-starter
3.2.0
javax.servlet
javax.servlet-api
javax.servlet
jstl
org.apache.tomcat.embed
tomcat-embed-jasper
org.apache.httpcomponents
httpclient
org.springframework.boot
spring-boot-starter-aop
redis.clients
jedis
org.springframework.data
spring-data-redis
`
3.2 创建jt-common
3.2.1 创建项目
3.2.2 导入静态资源
3.2.3 编辑父级POJO对象
3.2.4 编辑Item对象
3.3 jt-manage搭建
3.3.1 创建项目
3.3.2 编辑pom.xml文件
`
4.0.0
jt-manage
war
jt
com.jt
1.0-SNAPSHOT
com.jt
jt-common
1.0-SNAPSHOT
org.springframework.boot
spring-boot-maven-plugin
org.projectlombok
lombok
`
3.3.3 关于父子级关系说明
说明: 如果搭建了父级工程 则可以通过父级检查所有的关联项目
3.3.4 导入资源文件
说明: 将课前资料中的文件jt-manage中的src文件信息 导入项目中即可.
3.3.5 修改YML配置信息
3.3.6 配置工作目录
3.3.7 后端启动测试
3.4 关于系统首页跳转说明
3.4.1 业务说明
通过http://localhost:8091访问服务器时,会动态的跳转到系统的欢迎页面.
实现原理: 说明程序启动时会自动的加载一个默认的请求路径(url:http://localhost:8091/) index 之后动态的拼接前缀和后缀. /WEB-INF/views/index.jsp
4 复习
1.了解JSON格式有几种
2.编辑一个你认为复杂的json格式 要求至少嵌套4层!!!