Spring Boot 快速入门

Spring Boot快速入门指南(新手向) SpringBoot入门 0.学习目标 了解SpringBoot的作用 了解Java配置的方式 了解Spring Boot自动配置原理 掌握Spring Boot的基本使用 了解Thmeleaf的基本使用 1.了解Spring Boot 在这一部分,我们主要了解以下3个问题: 什么是SpringBoot 为什么要学习SpringBoot SpringBoot的特点 1.1.什么是SpringBoot Spring Boot是Spring项目中的一个子工程,与我们之前所学习的Spring-framew 阅读详情

今天给大家介绍一下spring Boot MVC,让我们学习一下如何利用Spring Boot快速的搭建一个简单的web应用。

环境准备

  • 一个称手的文本编辑器(例如Vim、Emacs、Sublime Text)或者IDE(Eclipse、Idea Intellij)
  • Java环境(JDK 1.7或以上版本)
  • Maven 3.0+(Eclipse和Idea IntelliJ内置,如果使用IDE并且不使用命令行工具可以不安装)

一个最简单的Web应用

使用Spring Boot框架可以大大加速Web应用的开发过程,首先在Maven项目依赖中引入spring-boot-starter-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>com.tianmaying</groupId>
  <artifactId>spring-web-demo</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>spring-web-demo</name>
  <description>Demo project for Spring WebMvc</description>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.2.5.RELEASE</version>
    <relativePath/>
  </parent>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
  </properties>

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

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


</project>

接下来创建src/main/Java/Application.java:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class Application {

    @RequestMapping("/")
    public String greeting() {
        return "Hello World!";
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

运行应用:mvn spring-boot:run或在IDE中运行main()方法,在浏览器中访问http://localhost:8080,Hello World!就出现在了页面中。只用了区区十几行Java代码,一个Hello World应用就可以正确运行了,那么这段代码究竟做了什么呢?我们从程序的入口SpringApplication.run(Application.class, args);开始分析:

  1. SpringApplication是Spring Boot框架中描述Spring应用的类,它的run()方法会创建一个Spring应用上下文(Application Context)。另一方面它会扫描当前应用类路径上的依赖,例如本例中发现spring-webmvc(由 spring-boot-starter-web传递引入)在类路径中,那么Spring Boot会判断这是一个Web应用,并启动一个内嵌的Servlet容器(默认是Tomcat)用于处理HTTP请求。

  2. Spring WebMvc框架会将Servlet容器里收到的HTTP请求根据路径分发给对应的@Controller类进行处理,@RestController是一类特殊的@Controller,它的返回值直接作为HTTP Response的Body部分返回给浏览器。

  3. @RequestMapping注解表明该方法处理那些URL对应的HTTP请求,也就是我们常说的URL路由(routing),请求的分发工作是有Spring完成的。例如上面的代码中http://localhost:8080/根路径就被路由至greeting()方法进行处理。如果访问http://localhost:8080/hello,则会出现404 Not Found错误,因为我们并没有编写任何方法来处理/hello请求。

使用@Controller实现URL路由

现代Web应用往往包括很多页面,不同的页面也对应着不同的URL。对于不同的URL,通常需要不同的方法进行处理并返回不同的内容。

匹配多个URL

@RestController
public class Application {

    @RequestMapping("/")
    public String index() {
        return "Index Page";
    }

    @RequestMapping("/hello")
    public String hello() {
        return "Hello World!";
    }
}

@RequestMapping可以注解@Controller类:

@RestController
@RequestMapping("/classPath")
public class Application {
    @RequestMapping("/methodPath")
    public String method() {
        return "mapping url is /classPath/methodPath";
    }
}

method方法匹配的URL是/classPath/methodPath"。

 提示

可以定义多个@Controller将不同URL的处理方法分散在不同的类中

URL中的变量——PathVariable

在Web应用中URL通常不是一成不变的,例如微博两个不同用户的个人主页对应两个不同的URL:http://weibo.com/user1,http://weibo.com/user2。我们不可能对于每一个用户都编写一个被@RequestMapping注解的方法来处理其请求,Spring MVC提供了一套机制来处理这种情况:

@RequestMapping("/users/{username}")
public String userProfile(@PathVariable("username") String username) {
    return String.format("user %s", username);
}

@RequestMapping("/posts/{id}")
public String post(@PathVariable("id") int id) {
    return String.format("post %d", id);
}

在上述例子中,URL中的变量可以用{variableName}来表示,同时在方法的参数中加上@PathVariable("variableName"),那么当请求被转发给该方法处理时,对应的URL中的变量会被自动赋值给被@PathVariable注解的参数(能够自动根据参数类型赋值,例如上例中的int)。

支持HTTP方法

对于HTTP请求除了其URL,还需要注意它的方法(Method)。例如我们在浏览器中访问一个页面通常是GET方法,而表单的提交一般是POST方法。@Controller中的方法同样需要对其进行区分:

@RequestMapping(value = "/login", method = RequestMethod.GET)
public String loginGet() {
    return "Login Page";
}

@RequestMapping(value = "/login", method = RequestMethod.POST)
public String loginPost() {
    return "Login Post Request";
}

模板渲染

在之前所有的@RequestMapping注解的方法中,返回值字符串都被直接传送到浏览器端并显示给用户。但是为了能够呈现更加丰富、美观的页面,我们需要将HTML代码返回给浏览器,浏览器再进行页面的渲染、显示。

一种很直观的方法是在处理请求的方法中,直接返回HTML代码,但是这样做的问题在于——一个复杂的页面HTML代码往往也非常复杂,并且嵌入在Java代码中十分不利于维护。更好的做法是将页面的HTML代码写在模板文件中,渲染后再返回给用户。为了能够进行模板渲染,需要将@RestController改成@Controller:

import org.springframework.ui.Model;

@Controller
public class HelloController {

    @RequestMapping("/hello/{name}")
    public String hello(@PathVariable("name") String name, Model model) {
        model.addAttribute("name", name);
        return "hello"
    }
}

在上述例子中,返回值"hello"并非直接将字符串返回给浏览器,而是寻找名字为hello的模板进行渲染,我们使用Thymeleaf模板引擎进行模板渲染,需要引入依赖:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

接下来需要在默认的模板文件夹src/main/resources/templates/目录下添加一个模板文件hello.html:

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Getting Started: Serving Web Content</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
    <p th:text="'Hello, ' + ${name} + '!'" />
</body>
</html>

th:text="'Hello, ' + ${name} + '!'"也就是将我们之前在@Controller方法里添加至Model的属性name进行渲染,并放入<p>标签中(因为th:text是<p>标签的属性)。模板渲染还有更多的用法,请参考Thymeleaf官方文档。

处理静态文件

浏览器页面使用HTML作为描述语言,那么必然也脱离不了CSS以及JavaScript。为了能够浏览器能够正确加载类似/css/style.css, /js/main.js等资源,默认情况下我们只需要在src/main/resources/static目录下添加css/style.css和js/main.js文件后,Spring MVC能够自动将他们发布,通过访问/css/style.css, /js/main.js也就可以正确加载这些资源。

Spring Boot 2 快速教程:WebFlux 快速入门(一) 本文主要讲了 Spring Boot 2.0 WebFlux 背景和快速入门使用。用的是基于功能性端点去创建一个服务,但这个有点代码偏多。下一章一个 CRUD 我们使用注解控制层,让开发更方便。 阅读详情

相关推荐

Spring Boot(一):springboot简介 及 快速入门

SpringBoot简介 一、什么是 Spring Boot Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,就是 Spring Boot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 Maven 整合了所有的 Jar 包,Spring Boot 整合了所有的框架。 二、SpringBoot可以做什么 最明显的特点是,让文

weixin_52841956的博客 1171

SpringBoot开发Web应用

如果不做任何配置,webapps文件夹的所有文件都不会被编译到target/classes目录下的,更不会被打包到jar包中.这个时候则需要再pom.xml文件的build标签(如果没有就新增)中新增两个resource标签,分别用于打包src/main/webapps资源文件夹与src/main/resource资源文件夹。场景:如若我们使用的servlet等组件是第三方的,jar包中是只读,无法添加注解的,也就无法进行注解扫描,这个时候就得使用配置类的方式。4.5 采用配置类的方式注入组件。

java_qianmo的博客 715

Spring Boot在Java领域的快速入门指南

本指南的主要目的是帮助Java开发者快速掌握Spring Boot的基本概念、开发流程和应用技巧。我们将涵盖Spring Boot的核心功能,包括依赖管理、自动配置、嵌入式服务器等。通过本指南,读者将能够使用Spring Boot开发简单的Web应用程序,并了解如何在实际项目中应用Spring Boot。核心概念与联系:介绍Spring Boot的核心概念和架构。核心算法原理 & 具体操作步骤:讲解Spring Boot的核心算法原理,并给出具体的操作步骤。

Java大师兄的博客 1186

springBoot创建MVC项目入门(一)

官网:https://spring.io/projects/spring-boot https://spring.io/guides 中文翻译文档参考: https://legacy.gitbook.com/@docshome https://www.w3cschool.cn/springboot/springboot-w7c2245h.html springBoot大大简化了sprin...

weixin_41419401的博客 1091

1、Spring Boot快速入门指南

本文是一篇关于使用Spring Boot快速构建Users App项目的入门指南。项目要求实现一个通过Web暴露CRUD操作的简单应用程序,使用Kotlin语言、Gradle构建工具,并通过Spring Boot的自动配置和约定优于配置的原则快速搭建。文章详细介绍了从环境准备、项目生成、代码实现到测试和运行的完整流程,并总结了Spring Boot的优点和特性,帮助开发者快速上手Spring Boot开发。

rgv234567的博客 96

MICS-6814多气体传感器与ESP32-C3 Mini接口构建空气监测系统

cararenuity C3 Mini的多个ADC引脚,Wi-Fi和蓝牙LE以及紧凑的设计使其成为嵌入式物联网应用的绝佳选择。在这个项目中,我们将把MICS-6814多气体传感器与基于esp32 -C3的开发板cararenuity C3 Mini连接起来。更多模拟引脚:与ESP8266只有一个ADC引脚不同,基于esp32 -C3的cararenuity C3 Mini提供多个ADC引脚,使其成为多传感器应用的理想选择。紧凑可靠:该板的小尺寸使其成为嵌入式应用的理想选择,而不会牺牲性能。

hie98894的博客 770

springboot打包成jar包后访问不到template模板---已经解决

解决springboot打成jar包找不到模板的问题 首先确认,我们的情况是否一样? idea里运行一切正常,打成jar包,无法找到模板 首先看你的controller里是不是路径不正确 比如return “/page/home” 这样改成"page/home" 再次看模板文件是不是抽取了公共部分,比如抽取了头部,th标签 如果写的是此时大多可以解决问题了,如果还不行,请看报错提示,对应更改. ...

u012557221的博客 3503

别再只抄代码了!深入理解MQ2传感器数据手册,搞定ppm换算公式

本文深入解析MQ2烟雾传感器的工作原理与ppm换算公式,从数据手册解读到数学建模,提供详细的校准与优化方法。通过实际案例和代码示例,帮助开发者准确测量气体浓度,解决常见问题,提升传感器应用的可靠性。

weixin_42713608的博客 504

springboot打包成jar包后访问不到template模板

最近在看springboot,写了个简单的项目,在myeclipse上完成的。因为springboot自带tomcat,我就打成了jar包,用 java -jar 命令运行,结果发现templates下的html访问不到了,显示错误 上网查了一下,告诉我不加 @ResponseBody 就会这样,然后我加了@ResponseBody ,的确没报错了,然而结果是这样的 我加的...

weixin_38107930的博客 7932

修改注册表导致开机时电脑显示“无法登陆到你的账户”的问题解决方案

1.问题描述:开机电脑显示“无法登陆到你的账户:通常可以通过从你的账户注销,然后重新登陆来解决问题,如果不立即注销,你创建的任何文件或进行的任何更改都将会丢失。” 2.问题原因:想要修改cmd中的用户名(红色部分),修改了注册表,重启时出现问题。 3.问题解决: win+R输入cmd,确定进入注册表界面,将下面的地址复制进地址栏(你也可以自己按目录查找),双击ProfileImage...

qq_33835957的博客 7万+

bartender 10.1破解版|bartender条码打印10.1

点击下载出处:BarTender10.1破解版 bartender10.1破解版是一款专业的条码打印软件,在行业内广受好评,通过使用bartender我们可以将标签设计这个复杂的过程变得更简便,在设计中快速调整,即刻打印,非常迅速,BarTender10.1破解版不仅支持的标签类型包括EPC Class 1 、Gen2 、ISO 18000-6b 、ISO 15693 、Tag-It 、I-CO...

weixin_44924147的博客 6万+

Spring Boot3快速入门

本文手把手教你使用Spring Boot3构建第一个Web应用,详解项目创建、依赖配置到自动部署全流程。对比传统Spring MVC项目,展示Spring Boot开箱即用特性,并通过三种脚手架工具(官方/阿里/IDEA)演示项目快速生成,最后深入解析可执行JAR包原理与灵活配置技巧。

m0_73941339的博客 2205

Cadence数模混合仿真实战:从Verilog到ADE L的完整流程解析

本文详细解析了Cadence数模混合仿真的完整流程,从Verilog代码编写到ADE L仿真环境配置。通过实战案例讲解如何创建Config文件、搭建混合信号原理图,并分享提高仿真效率的技巧和常见问题排查方法,帮助工程师掌握这一关键芯片设计验证技术。

weixin_29246195的博客 986

Spring Boot快速搭建入门程序

第一步 新增Spring-Boot-starter-parent依赖【父级项目的web依赖】 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <ve...

紫芝的博客 344

5分钟搞定!用MCU GPIO实现零功耗一键开关机电路(附完整原理图)

本文详细介绍了如何利用MCU GPIO设计零功耗一键开关机电路,适用于便携式设备和电池供电项目。通过软硬件结合的方式,实现关机状态下的真正零功耗,同时提供智能开关机控制。文章包含完整原理图、元件选型指南和实际搭建技巧,帮助开发者在5分钟内完成高效电源管理方案。

weixin_28339967的博客 343

FastAPI 高级特性:同异步路由函数、依赖注入与后台任务

在现代 Web 开发中,高效的性能和简洁的代码结构是至关重要的。FastAPI 作为一个现代、快速(高性能)的 Web 框架,凭借其对异步编程的原生支持和直观的依赖注入系统,迅速成为开发者的热门选择。在本文中,将深入探讨 `FastAPI` 中的几个核心概念:同异步函数的区别、`Depends` 依赖以及后台任务。

qq_43629857的博客 203

spring boot 入门_SpringBoot快速入门

一、Spring介绍1.1、SpringBoot简介在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot来让你更易上手,更简单快捷地构建Spring应用!Spring Boot让我们的Spring应用变的更轻量化。比如:你可以仅仅依靠一个Java类来运行一个...

weixin_39890431的博客 81

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Spring Boot 快速入门指南

本文介绍了如何使用 Spring Boot 创建一个简单的 Web 应用程序。通过学习,你可以快速掌握 Spring Boot 的基本概念和使用方法。接下来,你可以学习如何使用 Spring Data JPA 进行数据库操作,或者如何使用 Spring Security 实现安全控制。

att1472的博客 1115

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Spring Boot 快速入门教程

Spring Boot 是一个基于 Spring 框架的项目,它简化了基于 Spring 的 Java 应用程序的创建和部署。Spring Boot 通过提供一系列的“Starters”来简化 Maven 配置,同时使用约定大于配置的原则,让开发者能够以最少的配置启动和运行 Spring 应用程序。那么最快的入门保姆级教程来了,按我下边的操作,快速入门。

程序员陆通 1330

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

spring boot 3 快速入门

3/为了让Spring Boot帮我们完成各种自动配置,我们必须引入Spring Boot提供的自动配置依赖,我们称为启动器。因为是web项目,所以要导入web启动器。2/将 spring-boot-starter-parent 添加为项目父工程。注:只要在main类所在包下,或者所在包下的子包中,注解都可以被扫描。1/正常创建maven项目。

m0_46565230的博客 255

二、spring boot 快速入门

2.1 代码实现 2.1.1 创建Maven工程 使用idea工具创建一个maven工程,该工程为普通的java工程即可。 2.1.2 添加SpringBoot的起步依赖 SpringBoot要求,项目要继承SpringBoot的起步依赖spring-boot-starter-parent 后期我们开发springboot工程需要是springboot起步类的一个子工程才行。 <!--所有的SpringBoot工程都必须继承spring-boot-starter-parent--> <

Dove_1234的博客 165

基于Spring security + Spring Boot + JWT的封装框架快速入门指南

吐槽 近期做一个小玩意,打算实现前后端分离,那么就要用到符合REST协议的API接口了。如果使用纯API的话,就肯定不希望所有人都可以调用我的接口,所以对于API的安全就要重视了,对于我刚刚学习Spring Boot的人来说。第一就想到用Spring全家桶,百度一搜还真有:spring security就是这个安全组件,在配合JWT实现身份鉴定,这样做服务器就不用存session,也完美解决了分布...

Wyndem的博客 2310

Spring Boot 3.x快速入门

Spring Boot 3 简介 Spring Boot帮助你创建独立的、生产级的基于Spring的应用程序。大多数Spring Boot应用程序只需要很少的Spring配置。 主要目标有: 为所有Spring开发者提供一种快速的入门体验 做到开箱即用 提供大量非功能性特性相关项目(例如:内嵌服务器、安全、指标、健康检查、外部配置) 无代码生成、无需编写XML 系统环境要求 Spring Boot 3.0.0 需要 Java 17. 还需要Spring Framework 6.0.0-M2 及以上版本。

laopeng301的专栏 1万+
上一篇: Spring(AbstractRoutingDataSource)实现动态数据源切换-- 转载
下一篇: redis 多个项目之间消息队列传递
异常的昵称
博客等级 码龄10年 18粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值