企业级信息系统开发讲课笔记4.1 Spring Boot入门程序

news2024/12/23 0:52:36

文章目录

  • 零、学习目标
  • 一、Spring Boot框架概述
    • (一)由Spring到Spring Boot
    • (二)Spring Boot框架的核心功能
    • (三)Spring Boot框架的应用
  • 二、使用Maven方式构建Spring Boot项目
    • (一)创建Maven项目HelloWorld01
    • (二)修改Maven项目配置文件pom.xml
    • (三)创建启动类HelloWorld01Application
    • (四)创建控制器HelloWorld01Controller
    • (五)运行启动类HelloWorld01Application
    • (六)在浏览器里访问http://localhost:8080/hello
    • (七)修改控制器,启动应用,查看效果
    • (八)定制Banner
      • 1、在resources目录下创建banner.txt文件
      • 2、通过http://patorjk.com/software/taag网站生成字符
      • 3、将网站生成的字符复制到banner.txt文件里
      • 4、启动应用程序,查看启动图案
      • 5、关闭Banner
  • 三、使用Spring Initializr方式构建Spring Boot项目
    • (一)创建Spring Boot项目HelloWorld02
    • (二)创建控制器HelloWorld02Controller
    • (三)运行启动类HelloWorld02Application
    • (四)在浏览器里访问http://localhost:8080/hello
    • (五)修改控制器,启动应用,查看效果
    • (六)利用控制器返回页面
      • 1、添加thymeleaf依赖
      • 2、准备图片作为静态资源
      • 3、创建首页
      • 4、修改控制器,添加映射方法,负责返回页面
      • 5、启动应用,访问http://localhost:8080/hw02/index
    • (七)演示一个控制器方法配多个映射路径
      • 1、给hello()方法设置三个映射路径
      • 2、启动应用,测试效果
  • 四、Spring Boot自动配置里的WebProperties类
  • 五、课后作业
    • 任务1、创建Spring Boot项目输出学生信息
    • 任务2、让HelloWorld02实现页面跳转功能

零、学习目标

  1. 了解Spring Boot框架的优点
  2. 掌握使用Maven方式构建Spring Boot项目
  3. 掌握使用Spring Initializr方式构建Spring Boot项目

一、Spring Boot框架概述

  • Spring Boot官网:https://spring.io/projects/spring-boot
    在这里插入图片描述

(一)由Spring到Spring Boot

  • 早期版本的Spring专注于XML配置,开发一个程序需要配置各种XML配置文件。为了简化开发,在Spring 2.x版本开始引入少量的注解,由于支持的注解不是很多且功能尚不完善,所以只能辅助使用。
  • 随着实际生产中敏捷开发的需要,以及Spring注解的大量出现和功能改进,到了Spring 4.x版本基本可以脱离XML配置文件进行项目开发,多数开发者也逐渐感受到了基于注解开发的便利,因此,在Spring中使用注解开发逐渐占据了主流地位。与此同时,Pivotal团队在原有Spring框架的基础上通过注解的方式进一步简化了Spring框架的使用,并基于Spring框架开发了全新的Spring Boot框架。

(二)Spring Boot框架的核心功能

  1. 独立运行的Spring项目
  2. 内嵌Servlet容器
  3. 提供starter简化Maven配置
  4. 自动配置Spring
  5. 准生产的应用监控
  6. 无代码生成和xml配置

(三)Spring Boot框架的应用

  • Spring Boot框架本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用,并且在开发过程中大量使用“约定优先配置”(convention over configuration)的思想来摆脱Spring框架中各种复杂的手动配置,同时衍生出了Java Config(取代传统XML配置文件的Java配置类)这种优秀的配置方式。也就是说,Spring Boot并不是替代Spring框架的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具,同时Spring Boot还集成了大量常用的第三方库配置(例如Jackson、JDBC、Redis、Mail等)。使用Spring Boot开发程序时,几乎是开箱即用(out-of-the-box),大部分的Spring Boot应用都只需少量的配置,这一特性更能促使开发者专注于业务逻辑的实现。
  • 另外,随着近几年微服务开发的需求和火爆,怎样快速、简便地构建一个准生产环境的Spring应用也是摆在开发者面前的一个难题,而Spring Boot框架的出现恰好完美的解决了这些问题,同时内部还简化了许多常用的第三方库配置,使得微服务开发更加便利。

二、使用Maven方式构建Spring Boot项目

(一)创建Maven项目HelloWorld01

  • 选择创建的项目类型 - Maven
    在这里插入图片描述
  • 设置Maven项目Name、Location、GroupId与ArtifactId
    – Name: HelloWorld01
    – Location: D:\IdeaProjects\HelloWorld01
    – GroupId: net.hw.lesson01
    – ArtifactId: HelloWorld01
    在这里插入图片描述
  • 单击【Finish】按钮
    在这里插入图片描述

(二)修改Maven项目配置文件pom.xml

  • pom: Project Object Model - 项目对象模型
  • 添加parent和web的起步器依赖
    在这里插入图片描述
    在这里插入图片描述
  • 查看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>net.hw.lesson01</groupId>
    <artifactId>HelloWorld01</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.5</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
</project>

(三)创建启动类HelloWorld01Application

  • src/main/java目录里创建net.hw.lesson01
    在这里插入图片描述
  • net.hw.lesson01包里创建启动类HelloWorld01Application
    在这里插入图片描述
package net.hw.lesson01;

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

/**
 * 功能:HelloWorld01入口类
 * 作者:华卫
 * 日期:2021年04月21日
 */
@SpringBootApplication
public class HelloWorld01Application {
    public static void main(String[] args) {
        SpringApplication.run(HelloWorld01Application.class, args);
    }
}
  • 启动类必须添加注解符@SpringBootApplication
  • 在主方法里,利用SpringApplication类的run()静态方法启动HelloWorldApplication类的实例

(四)创建控制器HelloWorld01Controller

  • 控制器是用于Web访问的
  • net.hw.lesson01包里创建controller子包,然后在子包里创建控制器HelloWorld01Controller
    在这里插入图片描述
package net.hw.lesson01.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 功能:HelloWorld01控制器
 * 作者:华卫
 * 日期:2021年04月21日
 */
@RestController
public class HelloWorld01Controller {
    @GetMapping("/hello")
    public String hello() {
        return "<h3>Hello Spring Boot World!</h3>";
    }
}
  • 控制器添加注解符@RestController,该注解为组合注解,等同于Spring中@Controller+@ResponseBody注解
  • 方法添加注解符@GetMapping("/hello"),等同于Spring框架中@RequestMapping(RequestMethod.GET)注解

(五)运行启动类HelloWorld01Application

在这里插入图片描述
在这里插入图片描述

(六)在浏览器里访问http://localhost:8080/hello

在这里插入图片描述

(七)修改控制器,启动应用,查看效果

  • 修改控制器HelloWorldController
    在这里插入图片描述

  • 运行启动类HelloWorld01Application
    在这里插入图片描述

  • 在浏览器里访问http://localhost:8080/hello
    在这里插入图片描述

  • 在浏览器里访问http://localhost:8080/hw01/hello
    在这里插入图片描述

(八)定制Banner

1、在resources目录下创建banner.txt文件

在这里插入图片描述

2、通过http://patorjk.com/software/taag网站生成字符

在这里插入图片描述

3、将网站生成的字符复制到banner.txt文件里

在这里插入图片描述

4、启动应用程序,查看启动图案

在这里插入图片描述

5、关闭Banner

  • 修改入口程序代码
    在这里插入图片描述

  • 启动应用,查看效果
    在这里插入图片描述

  • 大家可以看到,项目启动图案消失无踪了。

三、使用Spring Initializr方式构建Spring Boot项目

(一)创建Spring Boot项目HelloWorld02

  • 创建项目,选择项目类型 - Spring Initializr
    在这里插入图片描述

  • 设置项目相关属性

  • 注意:Artifact的值不能包含大写字母,Name属性值可以包含大写字母
    在这里插入图片描述

  • 添加Spring Web依赖
    在这里插入图片描述

  • 设置项目名称与保存位置
    在这里插入图片描述

  • 单击【Finish】按钮,查看生成的Spring Boot项目HelloWorld02
    在这里插入图片描述

  • 查看自动生成的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 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.4.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>net.hw.lesson01</groupId>
    <artifactId>helloworld02</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>HelloWorld02</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
  • 查看启动类HelloWorld02Application
    在这里插入图片描述

(二)创建控制器HelloWorld02Controller

  • 在net.hw.lesson01包里创建controller子包,然后在子包里创建HelloWorld02Controller
    在这里插入图片描述
package net.hw.lesson01.controller;

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

/**
 * 功能:HelloWorld02控制器
 * 作者:华卫
 * 日期:2021年04月21日
 */
@Controller
public class HelloWorld02Controller {
    @ResponseBody
    @RequestMapping("/hello")
    public String hello() {
        return "<h3>你好,Spring Boot世界!</h3>";
    }
}
  • 大家可以跟HelloWorld01项目的控制器HelloWorld01Controller比较一下
    在这里插入图片描述

(三)运行启动类HelloWorld02Application

在这里插入图片描述

(四)在浏览器里访问http://localhost:8080/hello

在这里插入图片描述

(五)修改控制器,启动应用,查看效果

  • 修改控制器HelloWorld02Controller
    在这里插入图片描述

  • 运行启动类HelloWorld02Application
    在这里插入图片描述

  • 在浏览器里访问http://localhost:8080/hello
    在这里插入图片描述

  • 在浏览器里访问http://localhost:8080/hw02/hello
    在这里插入图片描述

  • 小结:使用Spring Boot框架实现Web功能,比在Spring框架里使用Spring MVC实现Web功能简洁很多,不需要Spring配置文件、Spring MVC配置文件,也不需要配置web.xml文件,只要添加了web依赖,直接就可以使用控制器来进行相应的处理,比如返回字符串数据。

(六)利用控制器返回页面

1、添加thymeleaf依赖

  • 在pom.xml文件里添加thymeleaf依赖
    在这里插入图片描述

2、准备图片作为静态资源

  • 在static目录里创建images目录,然后在images目录里放一张图片
    在这里插入图片描述

3、创建首页

  • 在templates目录里创建index.html页面
    在这里插入图片描述

4、修改控制器,添加映射方法,负责返回页面

在这里插入图片描述

5、启动应用,访问http://localhost:8080/hw02/index

在这里插入图片描述

(七)演示一个控制器方法配多个映射路径

1、给hello()方法设置三个映射路径

在这里插入图片描述

2、启动应用,测试效果

  • 访问http://localhost:8080/hw02/hello
    在这里插入图片描述
  • 访问http://localhost:8080/hw02/hi
    在这里插入图片描述
  • 访问http://localhost:8080/hw02/hey
    在这里插入图片描述

四、Spring Boot自动配置里的WebProperties类

在这里插入图片描述
在这里插入图片描述

五、课后作业

任务1、创建Spring Boot项目输出学生信息

  • 创建Spring Boot项目StudentInfo
    在这里插入图片描述
  • 创建控制器StudentInfoController
    在这里插入图片描述
  • 运行启动类,在浏览器访问http://localhost:8080/student
    在这里插入图片描述

任务2、让HelloWorld02实现页面跳转功能

  • 创建登录页面login.html
    在这里插入图片描述
  • 在首页index.html添加跳转到登录页面的超链接
  • 在控制器里编写负责页面跳转的映射方法
  • 启动应用,查看效果
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/484223.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二维字符数组的三种输入方式浅析(scanf()、gets()和fgets())

二维字符数组的输入 目录 二维字符数组的输入1.scanf函数知识点scanf()关于回车的问题&#xff1a; 2.gets函数3.fgets函数参考链接 1.scanf函数 知识点 按照常规输入数组的办法&#xff0c;通过 for 循环实现 将整个字符串输入时&#xff0c;在数组名前不加&&#xff0…

Java 基础进阶篇(二)—— static 静态关键字与单例模式

文章目录 一、static 静态关键字1.1 静态成员变量与实例成员变量1.2 静态成员方法与实例成员方法1.3 static 访问注意事项1.4 内存使用情况 二、工具类三、代码块四、单例模式4.1 饿汉单例4.2 懒汉单例 一、static 静态关键字 static&#xff1a;代表静态的意思&#xff0c;可…

Java 基础进阶篇(六)—— 接口详解

文章目录 一、接口概述二、接口的基本使用三、接口从 JDK 8 开始新增的方法四、接口的注意事项&#xff08;了解&#xff09;补充&#xff1a;接口与接口的关系 一、接口概述 规范的基本特征是约束和公开。 接口就是一种规范&#xff0c;其约束别人必须干什么事情。 所以&…

【五一创作】Matlab 绘制风速、风向统计玫瑰花图【优化】

在之前&#xff0c;有个博客专门讲matlab 绘制风速、风向统计玫瑰花图&#xff1b;这里面存在不少细节问题&#xff0c;目前对该部分代码做了优化。以前的博客链接见下&#xff1a; Matlab 绘制风速、风向统计玫瑰花图 最近接了一个任务&#xff0c;需要绘制风速、风向的统计玫…

Java 基础进阶篇(五)—— 抽象类与模板方法设计模式

文章目录 一、抽象类、抽象方法概述二、抽象类的特征三、模板方法设计模式3.1使用场景3.2 实现步骤3.3 写作文案例 补充&#xff1a;final 和 abstract 是什么关系? 一、抽象类、抽象方法概述 在 Java 中 abstract 是抽象的意思&#xff0c;可以修饰类、成员方法。 abstract …

Java 基础进阶篇(七)—— 面向对象三大特征之三:多态

文章目录 一、多态的概述二、多态中成员访问特点 ★三、多态的优势与劣势四、多态下的类型转换4.2 自动类型转换&#xff08;从子到父&#xff09;4.2 强制类型转换&#xff08;从父到子&#xff09;4.3 instanceof 关键字 一、多态的概述 多态&#xff1a;是指执行同一个行为…

Java 基础进阶篇(四)—— 权限修饰符、final 关键字与枚举

文章目录 一、权限修饰符二、final 关键字2.1 final 作用2.2 final 修饰变量举例2.3 常量 三、枚举3.1 枚举的格式3.2 枚举的特征3.3 枚举的应用 一、权限修饰符 权限修饰符 用于约束成员变量、构造器、方法等的访问范围。 权限修饰符&#xff1a; 有四种作用范围由小到大 (p…

Java 基础进阶篇(三)—— 面向对象的三大特征之二:继承

文章目录 一、继承概述二、内存运行原理 ★三、继承的特点四、继承后&#xff1a;成员变量和方法的访问特点五、继承后&#xff1a;方法重写六、继承后&#xff1a;子类构造器的特点七、继承后&#xff1a;子类构造器访问父类有参构造器八、this、super 总结 一、继承概述 Jav…

机器学习之利用SMO算法求解支持向量机—基于python

大家好&#xff0c;我是带我去滑雪&#xff01; 本期将讨论支持向量机的实现问题&#xff0c;我们知道支持向量机的学习问题可以化为求解凸二次规划问题。这样的凸二次规划问题具有全局最优解&#xff0c;并且有许多最优化算法可以用于这一问题的求解。但是当训练样本容量很大…

【C++】 探索程序 详细解读程序在运行过程中都发生了什么

目录 头文件-源代码 头文件重复包含 问题 解决方案 程序生成过程 预处理Preprocessi 编译Compilation 汇编Assembly 链接Linking 编译期-运行期 编译期确定 运行期确定 编译期错误 运行期错误 类和对象 宏 宏的其他用法 inline内联 头文件-源代码 头文件&…

Vue简介和常用指令

概述&#xff1a; MVVM思想&#xff1a;视图层数据和数据模型里面的数据发生变化都会影响到另一边的数据&#xff0c;通过ViewModel自动实现。 Vue入门案例 步骤&#xff1a; 上面提到了数据模型和试图层的数据是关联的&#xff0c;此处数据模型里面el的值就是选择了哪一个视…

jQuery引入----练习

jQuery引入----练习 html <!DOCTYPE html> <html><head><title>jQuery引入</title><!-- css样式引入 --><link rel"stylesheet" href"../css/a.css"><!-- jquery函数库引入 --><script type"tex…

Linux基础IO【深入理解文件系统】

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; Linux学习之旅 &#x1f383;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 文章目录 &#x1f307;前言&#x1f3d9;️正文1、磁盘文件2、磁盘概念2.1、基本结构2.2、数据存储 3、磁盘信息3.1、分区意义…

【C++初阶】类与对象:6大默认成员函数------拷贝构造和赋值运算符重载

一.拷贝构造函数 A.概念 拷贝构造函数&#xff1a;只有单个形参&#xff0c;该形参是对本类类型对象的引用(一般常用const修饰)&#xff0c;在用已存在的类类型对象创建新对象时由编译器自动调用。 B.特性 1. 拷贝构造函数是构造函数的一个重载形式&#xff1b; 2. 拷贝构造函…

shell的基础学习二

文章目录 一、Shell 数组二、Shell 基本运算符三、Shell echo命令四、Shell printf 命令五、Shell test 命令总结 一、Shell 数组 数组中可以存放多个值。Bash Shell 只支持一维数组&#xff08;不支持多维数组&#xff09;&#xff0c;初始化时不需要定义数组大小&#xff08…

【五一创作】【Simulink】基于FCS-MPC的三相并网逆变器控制(Stateflow)

上次写了一篇【Simulink】基于FCS-MPC的三相并网逆变器控制&#xff08;Matlab Function&#xff09;&#xff0c;控制部分用 Matlab Function 写的&#xff0c;因实验室一般用 Stateflow&#xff0c;所以这篇把 Matlab Function 改成 Stateflow. 原理 电路原理图&#xff1a;…

如何批量查询快递的签收状态?

如果一次性网购大量快递&#xff0c;我们就得经常进入快递或网购平台查询物流&#xff0c;随时查看快递单号的物流状态。如果快递公司少&#xff0c;查询起来比较容易&#xff0c;但是如果快递公司很多&#xff0c;每次都要人工查询就是一件很麻烦的事情了。今天&#xff0c;小…

数据库相关知识

一.1 数据库 与Sybase不同&#xff0c;一个用户就对应于一个数据库。 create user CBMAIN identified by "sunline" default tablespace CBMAIN_DATA  -- 表空间 temporary tablespace CBMAIN_TEMP; -- 临时表空间 一.2 表空间 表空间由一个或多个物理文件组成&…

js使用splice方法删除数组元素可能导致的问题

splice() 方法通过删除或替换现有元素或者原地添加新的元素来修改数组&#xff0c;并以数组形式返回被修改的内容。此方法会改变原数组。 JavaScript 遍历数组并通过 splice 方法删除该数组符合某些条件的元素将会导致哪些问题&#xff1f; 导致的问题 当使用 splice 方法从 …

QT 中的多线程之继承 Thread

文章目录 1. 概述2. UML 类的关系图3. 代码&#xff1a;4. 运行结果及说明5. 结语 1. 概述 任何继承于QThread的线程都是通过继承 QThread 的run函数来实现多线程的&#xff0c;因此&#xff0c;必须重写QThread的run函数&#xff0c;把复杂逻辑写在QThread的run函数中。然后在…