SpringBoot工程四种创建方式

news2024/12/23 9:57:37

创建SpringBoot项目时选择依赖:Spring Web、MySQL Driver、Thymeleaf、lombok

开发控制器类:标记了@Controller的类就是一个handler类

handler类在SpringBoot中的作用就是:其内部的方法可以接受请求,处理请求,返回响应

@Controller
public class TestController {
/**
* 标记了 @RequestMapping 的方法就是一个 handler 方法
* handler 方法在SpringBoot中的作用就是接收请求,处理请求,返回响应
*
* @RequestMapping("/hello") 表示接收 /hello 请求
*/
    @RequestMapping("/hello")
    public void hello(HttpServletRequest request, HttpServletResponse
response) throws IOException {
    System.out.println("hello world");
    // 接收请求参数
    String name = request.getParameter("name");
    System.out.println("name = " + name);
    // 响应内容
    response.getWriter().write("hello springboot");
   }
/**
* 返回页面
* @return 逻辑视图名称
*/
    @RequestMapping("/index")
    public String index(){
        // 逻辑视图名称
        return "index";
    }
}

然后运行自动生产Application类

pom.xml 和 Application类是SpringBoot的核心,强大之处就是几乎不用写什么,功能就有了

一句话总结:能少写就少写,能不写就不写

开发 SpringBoot 程序可以根据向导进行联网快速制作
SpringBoot 程序需要基于 JDK8 以上版本进行制作
运行 SpringBoot 程序通过运行 Application 程序入口进行

访问html页面

Springboot 中访问页面需要借助视图解析器,我们可以利用现有的第三方 jar 实现。 常见的有:
freemaker 、volecity 、thymeleaf
thymeleaf依赖:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

thymeleaf的依赖导入后,视图解析器会自动配置,thymeleaf要求默认将页面放在resources下的templates目录下。

@RequestMapping("/index")
public String index(){
    // 逻辑视图名称
    return "index";
}
@RequestMapping 表示当请求 /index 是会调用当前方法
方法返回值 String 表示逻辑视图名称
        逻辑视图要经过视图解析器(thymeleaf 的视图解析器 ) 去解析之后得到物理视图
        thymeleaf 的视图解析器默认会将逻辑视图名解析为 templates/ 逻辑视图名称 .html

如果Idea不能正常联网,还可以直接在SpringBoot官网创建SpringBoot程序:

在SpringBoot技术的介绍页中间部位找到如下内容:

步骤一:点击Spring Initializr后进入到程序界面上(和前面一样,只是界面发生变化)

 在右侧的ADD DEPENDENCIES用于选择使用何种技术,和之前勾选的Spring WEB是在做同一件

事,仅仅是界面不同而已,点击后打开网页版的技术选择界面

 设置完信息后,点击下面左侧按钮生成一个文件包,保存后得到一个压缩文件,这个文件打开后就是创建的SpringBoot工程文件夹了解压缩此文件后,得到工程目录,在Idea中导入即可使用,和之前创建的东西完全一样。就可以自己创建一个Controller测试一下是否能用了。

Idea 工具中创建 SpringBoot 工程其实连接的就是 SpringBoot 的官网,走的就是这个过程,只不过Idea 把界面给整合了一下,读取到了 Spring 官网给的信息,展示到了Idea 的界面中而已

如果网站被限制访问了,国内还有一个网站可以提供功能:

阿里云提供地址:http://start.aliyun.comhttps://start.aliyun.com

阿里为了便于自己开发使用,因此在依赖坐标中添加了一些阿里相关的技术,也是为了推广自己的
技术吧,所以在依赖选择列表中,有了更多的选择

若不能上网还想创建SpringBoot工程,先要了解联网和不联网的差别:

SpringBoot工程也是基于Maven构建的,而Maven工程使用自己没有的东西时就要去下载,SpringBoot工程创建的时候就是去下载一些必要组件,如果把这些必要组件提前准备好,就可以实现不上网创建SpringBoot工程了。

步骤1:创建工程时,选择手工创建Maven工程

步骤2:参照标准SpringBoot工程的pom文件,书写自己的pom文件即可

步骤3:运行SpringBoot工程需要一个类,手写一个就可以了,例如:

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

类上面的注解@SpringBootApplication是核心,不能丢

类名可以自定义。

步骤4:自己创建一个Controller测试一下是否能用

如果你的计算机上从来没有创建成功过 SpringBoot 工程,自然也就没有下载过 SpringBoot 对应的坐标,那用手写创建的方式在不联网的情况下肯定该是不能用的。所谓手写,其实就是自己写别人帮你生成的东西,但是引用的坐标对应的资源必须保障maven 仓库里面有才行,如果没有,还是要去下载的

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Intel oneAPI笔记(4)--jupyter官方文档(Unified Shared Memory)学习笔记

前言 本文是对jupyterlab中oneAPI_Essentials/03_Unified_Shared_Memory文档的学习记录&#xff0c;主要包含对统一共享内存的讲解 USM概述 USM (Unified Shared Memory)是SYCL中基于指针的内存管理。对于使用malloc或new来分配数据的C和C程序员来说应该很熟悉。当将现有的C…

如何定义类

类是将数据和方法封装在一起的一种数据结构&#xff0c;其中数据表示类的属性&#xff0c;方法表示类的行为&#xff0c;所以定义类实际上就是定义类的属性与方法。用户定义一个类实际上就是定义一个新的数据类型。在使用类之前&#xff0c;必须先定义它&#xff0c;然后才可利…

【JavaEE初阶】 UDP协议的详细解析

文章目录 &#x1f332;UDP协议概念&#x1f334;UDP协议端格式&#x1f384;UDP的特点&#x1f6a9;无连接&#x1f6a9;不可靠传输&#x1f6a9;面向数据报&#x1f6a9;缓冲区&#x1f6a9;全双工&#x1f6a9;大小受限 &#x1f340;基于UDP的应用层协议&#x1f38d;扩展问…

Linux安装nodejs问题

安装nodejs后&#xff0c;使用node -v报下图 参考下面两个可解决&#xff1a;【Linux-编译器gcc/glibc升级】CentOS7.9使用NodeJS18时报错/lib64/libm.so.6: version GLIBC_2.27‘ not found-CSDN博客 报错信息ImportError: /lib64/libstdc.so.6: version CXXABI_1.3.9‘ not f…

JavaScript使用对象

对象(object)是最基本、最通用的类型&#xff0c;具有复合性结构&#xff0c;属于引用型数据&#xff0c;对象的结构具有弹性&#xff0c;内部的数据是无序的&#xff0c;每个成员被称为属性。在JavaScript中&#xff0c;对象是一个泛化的概念&#xff0c;任何值都可以转换为对…

FreeRTOS源码阅读笔记2--list.c

list.c中主要完成列表数据结构的操作&#xff0c;有列表和列表项的初始化、列表的插入和移除。 2.1列表初始化vListInitialise() 2.1.1函数原型 void vListInitialise( List_t * const pxList ) pxList&#xff1a;列表指针&#xff0c;指向要初始化的列表。 2.1.2函数框架…

viple进阶2:打印九九乘法表

&#xff08;1&#xff09;题目 题目&#xff1a;使用viple打印九九乘法表 &#xff08;2&#xff09;设计与实现 观察效果图&#xff0c;发现&#xff1a; 1、第1行&#xff0c;有1个公式&#xff1b;第2行有2个公式&#xff1b;第3行有3个公式&#xff0c;以此类推&#x…

Texlive安装

下载4.8G的iso文件 解压 或 装载后&#xff0c;以管理员身份运行(.bat)文件。 运行以下两句代码进行Texlive相关升级 tlmgr option repository otan tlmgr update --self --all 运行以下三行代码&#xff0c;检查是否安装成功 latex -v xelatex -v pdflatex -v 如果有异常…

基于协作搜索算法的无人机航迹规划-附代码

基于协作搜索算法的无人机航迹规划 文章目录 基于协作搜索算法的无人机航迹规划1.协作搜索搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用协作搜索算法来优化无人机航迹规划。 …

思谋科技进博首秀:工业多模态大模型IndustryGPT V1.0正式发布

大模型技术正在引领新一轮工业革命&#xff0c;但将其应用于工业制造&#xff0c;仍面临许多挑战&#xff0c;专业知识的缺乏是关键难点。11月5日&#xff0c;香港中文大学终身教授、思谋科技创始人兼董事长贾佳亚受邀参加第六届中国国际进口博览会暨虹桥国际经济论坛开幕式。虹…

技术分享 | app自动化测试(Android)--显式等待机制

WebDriverWait类解析 WebDriverWait 用法代码 Python 版本 WebDriverWait( driver,timeout,poll_frequency0.5,ignored_exceptionsNone) 参数解析&#xff1a; driver&#xff1a;WebDriver 实例对象 timeout: 最长等待时间&#xff0c;单位秒 poll_frequency: 检测的间…

技术分享 | Appium 用例录制

下载及安装 下载地址&#xff1a; github.com/appium/appi… 下载对应系统的 Appium 版本&#xff0c;安装完成之后&#xff0c;点击 “Start Server”&#xff0c;就启动了 Appium Server。 在启动成功页面点击右上角的放大镜&#xff0c;进入到创建 Session 页面。配置好…

nginx-配置拆分(各个模块详细说明)

主配置文件 配置结构 ... #nginx全局块events { #events块... #events块 }http { #http块... #http全局块server { #server块... #server全局块location [PATTERN] { #location块... #location块}location [PATTERN] {...}}serv…

2023年起重机司机(限桥式起重机)证考试题库及起重机司机(限桥式起重机)试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年起重机司机(限桥式起重机)证考试题库及起重机司机(限桥式起重机)试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作…

算法打卡01——求两数之和

题目&#xff1a; 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你…

TCP/IP的基础知识

文章目录 TCP/IP的基础知识硬件&#xff08;物理层&#xff09;网络接口层&#xff08;数据链路层&#xff09;互联网层&#xff08;网络层&#xff09;TCP/IP的具体含义传输层应用层&#xff08;会话层以上的分层&#xff09;TCP/IP分层模型与通信示例发送数据包的一个例子接收…

Notepad++中删除连续的任意n行

使用Notepad里的行标记功能&#xff0c;可以删除指定的任意n行。 案例1&#xff0c;删除sample2.dat里的第201行到第10000行。方法如下&#xff1a; (1) 用户NotePad打开sample2.dat&#xff0c;右击201行 —》“开始/结束”/开始 图(1) 选择行的起点&#xff1a;201 (2) 接…

计算机网络第4章-通用转发和SDN

引子&#xff1a; 在前面&#xff0c;我们将基于目的地转发的特征总结为两个步骤&#xff1a; 查找目的IP地址&#xff08;匹配&#xff09;&#xff0c;然后将分组发送到有特定输出端口的交换结构&#xff08;“动作”&#xff09;。 但是这种转发特征会带来许多问题&#…

Codeforces Round 907 (Div. 2——ABC)

A.Sorting with Twos 题目 给定一个数组a&#xff0c;可执行操作如下&#xff1a; 1、选择一个非负整数m&#xff0c;要求 2、将数组中元素从1到m减去1 问&#xff0c;是否可以通过以上操作得到一个单调不增的数组序列。 输入 首行样例个数t&#xff0c; 每个样例首行数…

MySQL第七讲·怎么利用聚合函数实现高效地分组统计?

你好&#xff0c;我是安然无虞。 文章目录 聚合函数&#xff1a;怎么高效地进行分组统计&#xff1f;sum( )avg( ) & max( ) & min( )count( ) 聚合函数&#xff1a;怎么高效地进行分组统计&#xff1f; MySQL中有5种聚合函数较为常用&#xff0c;分别是求和函数sum(…