Spring Boot 入门教程
发布时间 - 2026-01-11 00:11:34 点击率:次简介

相信很多人都接触spring框架很长时间了,每次搭建spring框架的时候都需要配置好多的jar、xml,做很多繁琐重复的配置,稍微不留神就会出现各种各样的问题,每次调试真的是香菇、蓝瘦啊。
spring boot的出现帮助我们彻底解决了这些jar的依赖,只需要很少的配置就可以完成我们的开发工作,我们可以把自己的应用打包成jar,使用java -jar来运行spring web应用,spring boot集成了很多的web容器。今天给大家介绍一下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);开始分析:
- SpringApplication是Spring Boot框架中描述Spring应用的类,它的run()方法会创建一个Spring应用上下文(Application Context)。另一方面它会扫描当前应用类路径上的依赖,例如本例中发现spring-webmvc(由 spring-boot-starter-web传递引入)在类路径中,那么Spring Boot会判断这是一个Web应用,并启动一个内嵌的Servlet容器(默认是Tomcat)用于处理HTTP请求。
- Spring WebMvc框架会将Servlet容器里收到的HTTP请求根据路径分发给对应的@Controller类进行处理,@RestController是一类特殊的@Controller,它的返回值直接作为HTTP Response的Body部分返回给浏览器。
- @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 快速入门教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# spring
# boot
# 入门教程
# 入门
# 超详细的Spring Boot入门笔记(总结)
# Spring boot学习教程之快速入门篇
# 初识Spring Boot框架和快速入门
# Spring Boot 快速入门指南
# Spring Boot 入门之消息中间件的使用
# Spring Boot学习入门之表单验证
# Spring Boot 简介(入门篇)
# spring boot(一)之入门篇
# Spring Boot快速入门教程
# SpringBoot新手入门的快速教程
# 多个
# 返回值
# 给大家
# 方法来
# 小编
# 就可以
# 自己的
# 的是
# 器中
# 加载
# 就会
# 是在
# 不可能
# 目录下
# 是有
# 让我们
# 也就
# 在此
# 出现在
# 很多人
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何利用DOS批处理实现定时关机操作详解
如何用景安虚拟主机手机版绑定域名建站?
西安专业网站制作公司有哪些,陕西省建行官方网站?
Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】
Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
如何撰写建站申请书?关键要点有哪些?
Laravel如何自定义错误页面(404, 500)?(代码示例)
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
JavaScript模板引擎Template.js使用详解
如何实现javascript表单验证_正则表达式有哪些实用技巧
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
香港服务器部署网站为何提示未备案?
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
佛山网站制作系统,佛山企业变更地址网上办理步骤?
Laravel如何自定义分页视图?(Pagination示例)
Android使用GridView实现日历的简单功能
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
Swift中switch语句区间和元组模式匹配
Python文本处理实践_日志清洗解析【指导】
Laravel如何使用Eloquent进行子查询
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
iOS发送验证码倒计时应用
如何在香港免费服务器上快速搭建网站?
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
百度输入法ai组件怎么删除 百度输入法ai组件移除工具
如何在企业微信快速生成手机电脑官网?
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
如何快速建站并高效导出源代码?
laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法
专业商城网站制作公司有哪些,pi商城官网是哪个?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
进行网站优化必须要坚持的四大原则
linux写shell需要注意的问题(必看)
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
微信小程序制作网站有哪些,微信小程序需要做网站吗?
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
如何在建站主机中优化服务器配置?
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
大连网站制作公司哪家好一点,大连买房网站哪个好?
魔方云NAT建站如何实现端口转发?
JavaScript如何实现类型判断_typeof和instanceof有什么区别
如何在宝塔面板中修改默认建站目录?
如何在建站之星绑定自定义域名?

