SpringBoot课件.pdf

Part 1 JAVA WEB发展史

1) web的产生

静态资源的发布媒介 html http url

image.png

动态资源的展示 http 参数的不同 返回不同的信息

2) CGI的诞生

协议/标准 把参数写进环境变量里 启动CGI的程序获取参数后返回动态的结果(工作模式)
一笔请求 => 启动一个CGI程序 耗费资源

巨头公司“腾讯”部分业务 c++服务端 php前端页面

3)java解决方案

i applet 浏览器的插件 把服务端传过来的java代码在插件中解释执行 (客户端执行代码)

ii servlet = server + applet 服务端解决方案

html标签 + 动态代码 + 放到大 servlet类里 去输出

  1. out.println("<html><title>");
  2. out.println("hello"+name);
  3. out.println("</html></title>");

iii jsp = java server pages

解决样板代码的问题

  1. <html><title>hello <%name%> </title></html>

iv mvc分层思想

model javabean 数据层
view jsp 展示层
controller 业务控制类 控制层 接收请求 查找返回页面 生成页面的数据 结合一起 返回动态页面

image.png

v ajax 渲染部分页面 js整个技术的一个基石
4)Spring
without EJB => spring框架 ioc aop
ioc 控制反转 di 依赖注入
本质:构建对象的技术 单例模式 SprIng 用工厂来创建对象的方式容器 对象之间的依赖关系 A 属性B
程序获取对象时 容器会自动注入对象给程序(从容器的角度) => 依赖注入 本应该程序自己来控制的对象,交给容器帮我们控制 (从程序的角度) => 控制反转
aop 面向切面编程
系统中有多个模块 模块A 日志打印 异常获取 事务管理 等等 模块B C 各个模块的交叉关注点 非核心业务逻辑 通用的处理方案来解决
配置繁杂
5)SpringBoot
引导你更便捷的使用spring
6) 未来
总结 技术诞生的规律 : 新技术的诞生用来解决现存技术的痛点 异步化 spring5 响应式编程

Part 2 搭建hello world

创建maven项目 pom.xml(管理依赖)
总共分三步:
1)依赖放进去
pom.xml

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.duyi</groupId>
    <artifactId>SpringBootDemo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

<!--    超级父pom,是SpringBoot的父依赖-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
    </parent>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.3.4.RELEASE</version>
        </dependency>

    </dependencies>

</project>

2)把程序入口开开
Demo.java

package com.duyi;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @SpringBootApplication
 * 声明我们的入口类,并且声明是SpringBoot项目的
 */
@SpringBootApplication
public class Demo {
    public static void main(String[] args) {
        //使用SpringApplication类的静态方法,启动SpringBoot程序
        //方法的参数;程序的入口类+main函数的参数
        SpringApplication.run(Demo.class,args);
    }
}

3)把业务逻辑放进去
controller.HelloController

package com.duyi.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {

    /**
     * @RequestMapping
     * 指定方法和请求之间的映射关系
     * @return
     */
    @RequestMapping("/hello")
    @ResponseBody
    public String hello(){
        return "Hello World!";
    }
}

image.png

热部署

1.引入依赖

<!--        开发工具,达到热部署的效果-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

2.对idea进行一些配置
image.png
3.同时按下ctrl+shift+alt+/ 之后选择registry
image.png
热部署会占用大量资源,如果经常需要修改代码或者需要大量修改代码的话最好把热部署关掉