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

  1. 项目结构

    • 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() {
      }

      }
  2. 编写控制器(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值,将会被解析为视图的逻辑名
    }

    }
  3. 编写欢迎页(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>
  4. 启动应用

    如果是使用IDEA开发,直接在启动类上Run或在工具类点击Run

    下面是启动日志

  5. 测试请求

网页正常显示hello欢迎界面。

二.spring boot第一个web服务的更多相关文章

  1. Spring Boot(一):如何使用Spring Boot搭建一个Web应用

    Spring Boot Spring Boot 是Spring团队旗下的一款Web 应用框架 其优势可以更快速的搭建一个Web应用 从根本上上来讲 Spring Boot并不是什么新的框架技术 而是在 ...

  2. Springboot监控之二:Spring Boot Admin对Springboot服务进行监控

    概述 Spring Boot 监控核心是 spring-boot-starter-actuator 依赖,增加依赖后, Spring Boot 会默认配置一些通用的监控,比如 jvm 监控.类加载.健 ...

  3. Spring Boot 入门之 Web 篇(二)

    原文地址:Spring Boot 入门之 Web 篇(二) 博客地址:http://www.extlight.com 一.前言 上一篇<Spring Boot 入门之基础篇(一)>介绍了 ...

  4. Spring Boot构建的Web项目如何在服务端校验表单输入

    本文首发于个人网站:Spring Boot构建的Web项目如何在服务端校验表单输入 这个例子用于演示在Spring Boot应用中如何验证Web 应用的输入,我们将会建立一个简单的Spring MVC ...

  5. 从 Spring Cloud 看一个微服务框架的「五脏六腑」

    原文:https://webfe.kujiale.com/spring-could-heart/ Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构 ...

  6. Spring Boot快速搭建Web工程

    先想一下,正常我们想要创建一个web服务,首先需要下载tomcat,创建web工程,配置各种web.xml,引入spring的配置,各种配置文件一顿倒腾.....下载有了spring boot,你创建 ...

  7. 如何基于Spring Boot搭建一个完整的项目

    前言 使用Spring Boot做后台项目开发也快半年了,由于之前有过基于Spring开发的项目经验,相比之下觉得Spring Boot就是天堂,开箱即用来形容是绝不为过的.在没有接触Spring B ...

  8. 从 Spring Cloud 看一个微服务框架的「五脏六腑」(转)

    Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构所需的各种组件. 本文将从 Spring Cloud 出发,分两小节讲述微服务框架的「五脏六腑」: ...

  9. 安装使用Spring boot 写一个hello1

    一.创建springboot 项目 二.进行代编写 1.连接数据库:application.properties里配置 spring.datasource.driverClassName=com.my ...

随机推荐

  1. 2020-06-20:一句话总结ZK?

    福哥答案2020-06-20: 这道题价值不大,但是面试题里有这道题. 分布式协调服务,注册服务和发现,树形结构,监听机制,过半机制. ZooKeeper是源代码开放的分布式协调服务,由雅虎公司创建, ...

  2. 2020-05-24:ZK分布式锁有几种实现方式?各自的优缺点是什么?

    福哥答案2020-05-24: Zk分布式锁有两种实现方式一种比较简单,应对并发量不是很大的情况.获得锁:创建一个临时节点,比如/lock,如果成功获得锁,如果失败没获得锁,返回false释放锁:删除 ...

  3. C#LeetCode刷题-设计

    设计篇 # 题名 刷题 通过率 难度 146 LRU缓存机制   33.1% 困难 155 最小栈 C#LeetCode刷题之#155-最小栈(Min Stack) 44.9% 简单 173 二叉搜索 ...

  4. BiLSTM:序列标注任务的标杆

    Bidirectional LSTM-CRF Models for Sequence Tagging. Zhiheng Huang. 2015 在2015年,本文第一个提出使用BiLSTM-CRF来做 ...

  5. 关于C#调用非托管DLL,报“内存已损坏的”坑,坑,坑

    因客户需求,与第三方对接,调用非托管DLL,之前正常对接的程序,却总是报“内存已损坏的异常”,程序进程直接死掉,折腾到这个点(2018-05-11 00:26),终于尘埃落定,直接上程序. 之前的程序 ...

  6. C++开发时字符编码的选择

    最近看了很多有关字符编码的讨论帖子, 自己也做了很多尝试, 针对linux和windows上字符编码的选择做了个简单整理, 在此做个记录 首先是基础编码知识, 下面我列出的4个编码方式或字符集是我们应 ...

  7. Spring源码阅读 ------------------- SpringFrameWork 5.2 +IDEA 部署

    Spring作为JAVA学习者的必须学习和熟悉的框架,需要理解Spring的设计原理,核心设计模式,对于理解设计模式,面向对象的深入理解有着深远持久的影响,特此首先要做到本地部署源码开始,下面将介绍如 ...

  8. 一个@Transaction哪里来这么多坑?

    前言 在之前的文章中已经对Spring中的事务做了详细的分析了,这篇文章我们来聊一聊平常工作时使用事务可能出现的一些问题(本文主要针对使用@Transactional进行事务管理的方式进行讨论)以及对 ...

  9. 更换IntelliJ Idea的Terminal为git_home/bin/sh.exe命令端程序

    idea中默认的terminal形式: 1.在IDEA中,打开settings,设置相应的bash路径 settings–>Tools–>Terminal–>Shell path:C ...

  10. 构造vlan报文

    #!/usr/bin/python from scapy.all import * packet = Ether(src='dc:99:14:01:a3:5e', dst='ff:ff:ff:ff:f ...