SpringBoot Web 入门指南:从零搭建第一个SpringBoot程序

  • SpringBoot Web 入门指南:从零搭建第一个SpringBoot程序
    • 一、Web开发基础:静态/动态资源与B/S、C/S架构解析​
      • 资源类型
      • 系统架构
    • 二、Spring 与 Spring Boot 核心介绍
      • 1. Spring 框架
      • 2. Spring Boot
      • 3. 对比总结
    • 三、Spring Boot入门
      • 1.在IDEA里面创建一个Spring Boot项目
      • 2. 运行第一个SpringBoot程序
        • (1)启动类
        • (2)请求处理类
        • (3)运行项目

SpringBoot Web 入门指南:从零搭建第一个SpringBoot程序

一、Web开发基础:静态/动态资源与B/S、C/S架构解析​

资源类型

类型描述示例主要职责
静态资源服务器上存储的固定不变的数据HTML, CSS, JS, 图片, 视频页面展示
动态资源服务器根据请求动态生成的内容Spring框架, Servlet, JSP逻辑处理

系统架构

架构模式全称特点优缺点
B/S架构Browser/Server (浏览器/服务器)客户端只需浏览器维护方便,但体验一般
C/S架构Client/Server (客户端/服务器)需专用客户端软件体验不错,但开发维护麻烦

二、Spring 与 Spring Boot 核心介绍

1. Spring 框架

一个强大的、开源的 Java 应用程序开发框架容器,提供一站式企业级应用开发解决方案。

Spring官方网站

核心思想

  • 控制反转 (IoC):将对象的创建和管理权交给容器
  • 依赖注入 (DI):容器自动注入对象所需的依赖

主要优势

  • 松耦合设计:组件间依赖关系减弱,提高灵活性
  • 易于测试:依赖注入使单元测试更简单
  • 模块化结构:可按需选择使用不同功能模块

2. Spring Boot

Spring 框架的扩展,旨在简化 Spring 应用的初始搭建和开发过程

核心特性

  1. 自动配置:根据依赖智能配置应用
  2. 起步依赖:预置依赖组合,解决版本冲突
  3. 内嵌服务器:打包成可执行 JAR,包含内嵌服务器
  4. 开箱即用:几乎零配置快速创建生产级应用

设计理念
“约定大于配置” - 减少决策点,提高开发效率


3. 对比总结

特性Spring FrameworkSpring Boot
定位基础框架,提供全面解决方案开发加速器,简化Spring使用
配置方式需要大量显式配置约定大于配置,自动配置
依赖管理手动管理依赖和版本Starter 一站式依赖管理
部署方式打包成WAR,需外部服务器可执行JAR,内嵌服务器
主要优势灵活性高、可定制性强开发快速、易于上手
适用场景需要高度定制的复杂应用快速开发、微服务、原型验证

Spring 是引擎和底盘(提供核心能力)
Spring Boot 是预装好的整车(基于Spring,提供开箱即用的体验)

三、Spring Boot入门

1.在IDEA里面创建一个Spring Boot项目

在这里插入图片描述

注意选项:
语言Java、类型Maven,打包Jar

下一步之后选择web里面的Spring Web(此处我选的Spring Boot是3.5.5版本)
在这里插入图片描述
点击创建,下面界面(第一次创建的时候会下载依赖,需要等待一会)
在这里插入图片描述

2. 运行第一个SpringBoot程序

以下是pom.xml的信息

起步依赖:

  • spring-boot-starter-web:包含了web应用开发所需要的常见依赖。

  • spring-boot-starter-test:包含了单元测试所需要的常见依赖。

  • 官方提供的starter:https://docs.spring.io/spring-boot/docs/3.1.3/reference/htmlsingle/#using.build-systems.starters

<?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>3.5.5</version><relativePath/> <!-- lookup parent from repository --></parent><!--  项目坐标    --><groupId>com.example</groupId><artifactId>springboot-web-1</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot-web-1</name><description>springboot-web-1</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><!--  JDK版本  --><properties><java.version>21</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>
(1)启动类

在src的main方法里面有个Application的文件,这是一个启动类,当我们运行main方法的时候就可以启动这个项目
在这里插入图片描述

(2)请求处理类

@RestController表示当前类是一个请求处理类;

@RequestMapping后面跟请求路径,比如 @RequestMapping("/hello")

package com.example.springbootweb1;import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;@RestController//表示当前类是一个请求处理类
public class HelloController {@RequestMapping("/hello")public String hello(String name){System.out.println("name : " + name);return "Hello" + name + "~";}
}
(3)运行项目

运行Application里面的main方法
在这里插入图片描述
出现以下界面就说明运行成功
在这里插入图片描述

红线划的部分是端口号(默认是8080),此处我用的8081不影响

在浏览器中发送请求localhost:8081/hello?name=Spring%20Boot即可成功运行项目

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从图灵完备性到现实差距:为什么你的设备和你本人都潜力无限,却表现各异?

理论上的无限潜力&#xff0c;为何被困在现实的牢笼中&#xff1f;一、引言&#xff1a;一个反直觉的概念 在计算机科学中&#xff0c;图灵完备性&#xff08;Turing Completeness&#xff09; 是衡量一个系统计算能力的黄金标准。它得名于计算机科学之父艾伦图灵&#xff08;A…

Android系统打通HAL层到应用层 --- Framework框架搭建

本文是接续上文&#xff0c;针对于HAL层的接口封装Framework层的接口 HAL层框架搭建&#xff1a;https://blog.csdn.net/m0_50408097/article/details/151148637?spm1001.2014.3001.5502 在 Android 系统架构中&#xff0c;Framework 层&#xff08;框架层&#xff09; 位于 H…

LwIP入门实战 — 2 LwIP概述

目录 2.1 LwIP简介 2.2 LwIP文件架构分析 2.2.1 LwIP软件架构 2.2.2 主要模块划分 2.3 IPC通讯机制 2.4 LwIP的3种编程接口 2.4.1 RAW/Callback API 2.4.2 Netconn API 2.1 LwIP简介 LWIP&#xff08;Light Weight Internet Protocol&#xff0c;轻型网络协议栈&#…

微信小程序-day3

页面导航跳转声明式导航注意&#xff1a;url开头要有/1. 导航到 tabBar 页面2. 导航到非 tabBar 页面3. 后退导航编程式导航跳转传参参数可以在onLoad里用option获取下拉刷新事件可在onPullDownRefresh中定义下拉事件对应操作在其中加入这个函数wx.stopPullDownRefresh()&#…

关于ES中文分词器analysis-ik快速安装

ES中文分词器插件 安装快速安装手动安装 应用ik_max_word 与 ik_smart 的区别验证是否生效 官方地址&#xff1a;https://github.com/infinilabs/analysis-ik 安装 快速安装 插件安装&#xff08;将链接最后的版本号换成当前ES版本号&#xff09;&#xff1a; bin/elastics…

STM32G4 电流环闭环

目录一、STM32G4 电流环闭环1 电流环闭环PID控制2 电流环闭环建模附学习参考网址欢迎大家有问题评论交流 (* ^ ω ^)一、STM32G4 电流环闭环 1 电流环闭环 电流环框图 PID控制 时域和拉普拉斯域的传递函数 PID&#xff1a; P比例部分&#xff0c;I积分部分&#xff0c;D微分…

利用 Java 爬虫获取淘宝商品详情 API 接口

本文将详细介绍如何使用 Java 编写爬虫程序&#xff0c;通过淘宝开放平台的高级版 API 接口获取商品的详细信息。一、淘宝商品详情 API 接口概述淘宝开放平台提供了多个 API 接口用于获取商品的详细信息&#xff0c;其中 taobao.item.get 和 taobao.item.get_pro 是常用的接口。…

idea上传本地项目代码到Gitee仓库教程

前言&#xff1a;本地一个项目代码上传到Gitee仓库1.登录Gitee官网新建仓库&#xff08;命名跟项目同名&#xff09;2.idea添加Gitee插件&#xff08;需要Restart&#xff09;3.idea配置已安装git的路径4.idea添加Gitee账户5.给项目创建Git本地仓库Git仓库创建成功&#xff0c;…

往届生还有机会进入计算机这个行业吗?还能找见好工作吗

前言 最近有很多的往届生来咨询我&#xff0c;问我还能找见工作吗&#xff0c;还能进入这一行吗&#xff08;大多数都是一些24届&#xff0c;考研失败的同学&#xff09; 针对目前这种情况&#xff0c;还能不能进&#xff0c;只能说很难&#xff0c;非常难。 在这里&#xff0c…

Python爬虫实战:研究 Lines, bars and markers 模块,构建电商平台数据采集和分析系统

1. 引言 1.1 研究背景 随着互联网技术的飞速发展,网络上积累了海量的数据资源,这些数据蕴含着丰富的信息和价值。如何高效地获取、处理和分析这些数据,成为信息时代面临的重要课题。Python 作为一种功能强大的编程语言,凭借其丰富的库支持和简洁的语法,在网络数据爬取和…

大文件稳定上传:Spring Boot + MinIO 断点续传实践

文章目录一、引言&#xff1a;问题背景二、技术选型与项目架构三、核心设计与实现1. 初始化上传 (/init)2. 上传分块 (/chunk)3. 完成上传与合并 (/complete)4. 查询上传进度 (/progress)四、断点续传工作流程五、方案优势总结六、拓展优化七、方案优势对比一、引言&#xff1a…

表达式语言EL

表达式语言EL 1.EL表达式的作用 可以说&#xff0c;EL&#xff08;Expression Language&#xff09;表达式语言&#xff0c;就是用来替代<% %>的&#xff0c;EL比<%%>更简洁&#xff0c;更方便。 2.与请求参数有关的内置对象 1.使用表达式&#xff1a;<%request…

pycharm无法添加本地conda解释器/命令行激活conda时出现很多无关内容

本文主要解决以下两种问题&#xff1a;1.pycharm在添加本地非base环境时出现无法添加的情况&#xff0c;特征为&#xff1a;正在创建conda解释器--->弹出一个黑窗口又迅速关闭&#xff0c;最终无法添加成功2.在conda prompt中进行activate 指定env&#xff08;非base&#x…

LeetCode 844.比较含退格的字符串

给定 s 和 t 两个字符串&#xff0c;当它们分别被输入到空白的文本编辑器后&#xff0c;如果两者相等&#xff0c;返回 true 。# 代表退格字符。 注意&#xff1a;如果对空文本输入退格字符&#xff0c;文本继续为空。 示例 1&#xff1a; 输入&#xff1a;s “ab#c”, t “a…

什么是涌浪电压

涌浪电压&#xff08;浪涌电压&#xff09;是电路或设备在运行时突然出现的、超出额定电压的瞬时过电压。它通常由雷击、电感性负载的断开、电力系统的故障切换或大型电容性负载的接通等原因引起。涌浪电压是一种高能量的瞬变干扰&#xff0c;可能损坏电子设备&#xff0c;如击…

uniapp 优博讯k329蓝牙打印机,设置打印机,一键打印

设置页面&#xff1a;<template><view class"pageBg"><u-navbar leftIconColor"#fff" :leftIconSize"28" title"打印设置" bgColor"#3c9cff" :placeholder"true"leftClick"$navigateBack&quo…

pikachu之sql注入

目录 XX型注入 insert/update注入 delete注入 "http header"注入 基于boolian的盲注 基于时间的盲注 宽字节注入&#xff08;wide byte注入&#xff09; pikachu靶场的字符型注入中xx or 11#可以得到所有用户的信息。 XX型注入 首先输入1探测一下。 然后返回…

TLS(传输层安全协议)

文章目录一、核心概念二、为什么需要 TLS/SSL&#xff1f;三、工作原理与详细流程握手步骤详解&#xff1a;1.ClientHello & ServerHello&#xff1a;2.服务器认证 (Certificate, ServerKeyExchange)&#xff1a;3.客户端响应 (ClientKeyExchange, Finished)&#xff1a;4.…

【SpringMVC】SSM框架【二】——SpringMVC超详细

SpringMVC 学习目标&#xff1a; 1.SpringMVC简介 1&#xff09;web访问流程1.web服务器通过浏览器访问页面2.前端页面使用异步提交的方式发送请求到后端服务器3.后端服务器采用&#xff1a;表现层—业务层—数据层的架构进行开发4.页面请求由表现层进行接收&#xff0c;获取用…

PostgreSQL表膨胀的危害与解决方案

PostgreSQL 的 表膨胀&#xff08;Table Bloat&#xff09; 是数据库中由于 MVCC&#xff08;多版本并发控制&#xff09;机制导致的一种常见性能问题&#xff0c;表现为物理存储空间远大于实际有效数据量。以下是详细解释及其危害&#xff1a;一、表膨胀的产生原因 1. MVCC 机…