二.spring boot第一个web服务
通过《一.spring boot初始化项目》我们已经会初始化spring boot项目,那本篇文章就说明下初始化项目的具体内容,并编写第一个Hello页面。
项目结构

mvnw、mvnw.cmd:Maven包装器脚本,实现本机不安装Maven,也可以构建项目
pom.xml文件:相信使用maven的同学们应该都知道这个文件的重要性,主要用于引入依赖。本文用例是web项目,所以初始化项目时,添加的依赖是web和thymeleaf,具体如下
<?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">
<!--POM使用的对象模型版本,强制性的,一般很少改变-->
<modelVersion>4.0.0</modelVersion>
<!--spring boot项目信息-->
<groupId>com.kinglead</groupId>
<artifactId>spring-init-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-init-demo</name>
<description>Demo project for Spring Boot</description>
<packaging>jar</packaging> <!--打包方式,默认是jar-->
<!--spring boot信息-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version> <!--spring boot版本号-->
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!--版本号维护-->
<properties>
<java.version>1.8</java.version>
</properties>
<!--依赖信息-->
<!--spring-boot-starter-xxx是对某一功能的依赖包的集合
用于解决3大问题:1.简化依赖配置,让依赖更易管理
2.针对某一功能统一管理,方便依赖引入
3.解决依赖版本冲突问题
-->
<dependencies>
<!--web项目依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--thymeleaf依赖包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!--test-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<!--插件-->
<build>
<plugins>
<!--spring boot maven插件
作用:1.允许使用maven允许应用
2.将所有依赖打入到jar包中
3.在jar包中生成manifest文件,指明引导类
-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>SpringInitDemoApplication:spring boot项目启动类
package com.kinglead.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//@SpringBootApplication注解代表这是一个spring boot应用
//它是一个组合注解
//@SpringBootConfiguration注解将该类声明为配置类,相当于@Configuration的特殊形式
//@EnableAutoConfiguration启动spring boot的自动配置
//@ComponentScan启动组件扫描:将通过@Component、@Controller、@Service这样注解的类,注册为spring应用上下文的组件
@SpringBootApplication
public class SpringInitDemoApplication {
/**
* @param args 命令行参数
*/
public static void main(String[] args) {
SpringApplication.run(SpringInitDemoApplication.class, args);
}
}resources:资源文件
static:静态文件目录,如image、css
templates:模板文件,如html
application.properties:配置文件(开始是空的)
SpringInitDemoApplicationTests:测试类
package com.kinglead.demo;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class SpringInitDemoApplicationTests {
@Test
void contextLoads() {
}
}
编写控制器(Controller)

package com.kinglead.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author kinglead
* @date 2020-09-08 下午 15:16
* @describe 欢迎页控制器
*/
//@Controller标记类为控制器,能让spring自动扫描到它,添加到容器中
//另外@RestController = @Controller + @ResponseBody,@ResponseBody标记返回报文是json格式
//@RequestMapping是请求url路径映射
@Controller
@RequestMapping("/")
public class HelloController {
//@GetMapping get请求方法路径映射
@GetMapping("/")
public String hello(){
return "hello"; //返回的string值,将会被解析为视图的逻辑名
}
}编写欢迎页(Hello.html)

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymelead.org">
<head>
<meta charset="UTF-8">
<title>Spring Demo</title>
</head>
<body>
<h1>Welcome to Spring</h1>
<img th:src="@{/images/1.png}">
</body>
</html>启动应用
如果是使用IDEA开发,直接在启动类上Run或在工具类点击Run


下面是启动日志

测试请求

网页正常显示hello欢迎界面。
二.spring boot第一个web服务的更多相关文章
- Spring Boot(一):如何使用Spring Boot搭建一个Web应用
Spring Boot Spring Boot 是Spring团队旗下的一款Web 应用框架 其优势可以更快速的搭建一个Web应用 从根本上上来讲 Spring Boot并不是什么新的框架技术 而是在 ...
- Springboot监控之二:Spring Boot Admin对Springboot服务进行监控
概述 Spring Boot 监控核心是 spring-boot-starter-actuator 依赖,增加依赖后, Spring Boot 会默认配置一些通用的监控,比如 jvm 监控.类加载.健 ...
- Spring Boot 入门之 Web 篇(二)
原文地址:Spring Boot 入门之 Web 篇(二) 博客地址:http://www.extlight.com 一.前言 上一篇<Spring Boot 入门之基础篇(一)>介绍了 ...
- Spring Boot构建的Web项目如何在服务端校验表单输入
本文首发于个人网站:Spring Boot构建的Web项目如何在服务端校验表单输入 这个例子用于演示在Spring Boot应用中如何验证Web 应用的输入,我们将会建立一个简单的Spring MVC ...
- 从 Spring Cloud 看一个微服务框架的「五脏六腑」
原文:https://webfe.kujiale.com/spring-could-heart/ Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构 ...
- Spring Boot快速搭建Web工程
先想一下,正常我们想要创建一个web服务,首先需要下载tomcat,创建web工程,配置各种web.xml,引入spring的配置,各种配置文件一顿倒腾.....下载有了spring boot,你创建 ...
- 如何基于Spring Boot搭建一个完整的项目
前言 使用Spring Boot做后台项目开发也快半年了,由于之前有过基于Spring开发的项目经验,相比之下觉得Spring Boot就是天堂,开箱即用来形容是绝不为过的.在没有接触Spring B ...
- 从 Spring Cloud 看一个微服务框架的「五脏六腑」(转)
Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构所需的各种组件. 本文将从 Spring Cloud 出发,分两小节讲述微服务框架的「五脏六腑」: ...
- 安装使用Spring boot 写一个hello1
一.创建springboot 项目 二.进行代编写 1.连接数据库:application.properties里配置 spring.datasource.driverClassName=com.my ...
随机推荐
- Python 3.9 beta2 版本发布了,看看新特性?
随着 Python 3.9.0b1 的发布,即开发周期中计划的四个 beta 版本的首个,Python 3.9 的功能已经是完善了.在 10 月发布最终版本之前,还会有许多测试和稳定性方面的工作要做. ...
- 「查缺补漏」巩固你的Redis知识体系
Windows Redis 安装 链接: https://pan.baidu.com/s/1MJnzX_qRuNXJI09euzkPGA 提取码: 2c6w 复制这段内容后打开百度网盘手机App,操作 ...
- PyTorch 学习
PyTorch torch.autograd模块 深度学习的算法本质上是通过反向传播求导数, PyTorch的autograd模块实现了此功能, 在Tensor上的所有操作, autograd都会为它 ...
- DevOps让金融业数字化转型更敏捷 | 分享实录
以下为博云近期在活动中分享的关于<如何通过 DevOps 让数字化转型变得更加敏捷>的主题演讲实录. 01 金融科技进入VUCA时代 大家好,今天分享的题目是<如何通过 DevOps ...
- 08 vi全屏文本编辑器
打开文件vim /path/to/somefilevim +# :打开文件,并定位于第#行(如下的 vi +33 profile) vim +:打开文件,定位至最后一行vim +/PATTERN : ...
- C# ASP JS引用路径不正确导致的错误
假设JS包放在根目录下的Scripts文件夹下 当前页的路径在另一个文件夹下,那么他引用JS应该:<script src="../Scripts/jquery-1.4.1.min.js ...
- C++中简单程序出现Segmentation fault (core dumped)段错误
段错误就是指访问的内存超出了系统所给这个程序的内存空间.一般是随意使用野指针或者数组.数组越界. ------两种简单解决方法:1.利用GDB调试,定位出错位置.(具体可查找博客详细学习)2.在可能出 ...
- C#LeetCode刷题之#67-二进制求和(Add Binary)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3929 访问. 给定两个二进制字符串,返回他们的和(用二进制表示) ...
- RoBERTa:一个调到最优参的BERT
RoBERTa: A Robustly Optimized BERT Pretraining Approach. Yinhan Liu, Myle Ott, Naman Goyal, et al. 2 ...
- 面试中的老大难-mysql事务和锁,一次性讲清楚!
众所周知,事务和锁是mysql中非常重要功能,同时也是面试的重点和难点.本文会详细介绍事务和锁的相关概念及其实现原理,相信大家看完之后,一定会对事务和锁有更加深入的理解. 本文主要内容是根据掘金小册& ...