1.JavaEE进阶篇 - 为什么要学习SpringBoot呢?

文章目录

  • 1.为什么要学框架?
  • 2.框架的优点展示(SpringBoot VS Servlet)
    • 2.1 Servlet 项⽬开发
      • 2.1.1 创建项⽬
      • 2.1.2 添加引⽤
      • 2.1.3 添加业务代码
      • 2.1.4 运⾏项⽬(配置tomcat)
      • 2.1.5 Maven配置
        • 2.1.5.1修改本地Maven仓库地址
        • 2.1.5.2 配置settings.xml文件
        • 2.1.5.3项目 本地仓库 中央仓库 私服 区别与联系
        • 2.1.5.4Maven包下载不下来
        • 2.1.5.5快捷修改文件名
      • 2.1.6 Servlet 痛点分析
    • 2.2 SpringBoot 项⽬开发
      • 2.2.1 创建并添加引⽤
      • 2.2.2 添加代码并运⾏程序
      • 2.2.3 发布程序
      • 2.2.5 SpringBoot VS Servlet
  • 3.怎么学框架?
  • 4.框架学习中的难点

大家好,我是晓星航。今天为大家带来的是 JavaEE 进阶导读 相关的讲解!😀

1.为什么要学框架?

  1. 学习框架相当于从“小作坊”到“工厂”的升级,小作坊什么都要自己做,工厂是组件式装配,特点就是高效。
  2. 框架更加易用、简单且高效。

框架主要体现在思维方式和编程思想上,与代码语言无关。

易⽤、简单、⾼效的特性体现在哪些⽅⾯呢?继续往下看。

2.框架的优点展示(SpringBoot VS Servlet)

使⽤ Spring Boot 项⽬演示框架相⽐于 Servlet 所具备的以下优点:

  1. ⽆需配置 Tomcat,点击“运⾏”按钮就可以运⾏项⽬,Spring Boot 内置了 Web 容器(可直接运 ⾏)。
  2. 快速添加外部 jar 包。
  3. 快速发布项⽬(使⽤ java -jar ⽅式就可以发布)。
  4. 对象⾃动装配。

使⽤ SpringBoot 和 Servlet 对⽐,演示⼀个⽤户添加的案例,展示以上优点。

2.1 Servlet 项⽬开发

2.1.1 创建项⽬

image-20240301142439609

2.1.2 添加引⽤

打开 https://mvnrepository.com 搜索 servlet 添加框架应⽤到 pom.xml 中,如下图所示:

image-20240301142550725

PS:其中还需要注意使⽤的版本号。

image-20240301143229112

在项⽬中右键添加“源代码”⽂件夹,如下图所示:

image-20240301143321941

image-20240301143344128

2.1.3 添加业务代码

配置路由⽂件 web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"metadata-complete="false">
</web-app>

添加实体类:

public class User {private Integer id;private String name;private Integer age;private String password;// 其他属性...public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return String.format("{id:%d,name:%s,age:%d,password:%s}",id,name,age,password);}
}

添加控制器:

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/adduser")
public class AddUser extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {this.doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp
) throws ServletException, IOException {// 1.获取参数String name = req.getParameter("name");//...// 2.插⼊数据库System.out.println("插⼊数据库");// 3.返回结果resp.setContentType("text/html");resp.setCharacterEncoding("utf-8");resp.getWriter().println("添加成功:" + name);}
}

2.1.4 运⾏项⽬(配置tomcat)

image-20240301143708466

image-20240301143734124

image-20240301143832528

2.1.5 Maven配置

本地仓库地址查询:

image-20240301145522151

上图可以看到,博主的仓库地址包含中文,因此需要重新选择仓库位置,将仓库进行转移,转移仓库位置方法在后面为大家进行讲解!!!

我们把本地仓库地址拷贝到c盘中查询

image-20240301145707345

可以看到我们本地仓库有这么多的地址

image-20240301145737397

例如我们进入mysql可以看到我们mysql的Maven配置文件

2.1.5.1修改本地Maven仓库地址

最初的Maven默认地址位置:

image-20240301145522151

1.首先找到我们之前的Maven本地地址所在的位置

image-20240301150524646

2.创建好新的文件夹位置并将C盘中旧的Maven仓库中的资源全部拷贝过来!

image-20240301150744358

3.再返回idea的设置中,找到设置Maven仓库位置进行更改

image-20240301151224227

如此我们便大功告成了!!!(注意文件夹的命名千万不要包含中文,否则日后使用的时候可能会报错!)

2.1.5.2 配置settings.xml文件

从网上下载资源包并解压放在文件夹中

image-20240301155545023

右键使用vscode或者其他文本编辑器打开查看(因为文本编辑器可以把代码部分高亮表示出来,方便我们查看以及修改)

image-20240301155636096

从图中我们可以发现,这个settings.xml 文件使用的是阿里云的镜像仓库

image-20240301155727516

最后我们需要选择一下,让我们以后的新项目都会自动配置到我们Maven的新仓库去下载

image-20240301160408309

可以看到打开后还是我们的setting设置中

image-20240301160544680

找到Maven设置出发现我们新项目的Maven仓库位置还是默认的C盘

image-20240301160534905

重复之前的操作将此处的位置更改到我们更改的文件夹中,点击Apply然后OK即可

image-20240301160729852

此时便配置完成了,我们的代码会优先从阿里云中下载所需的依赖,如果阿里云没有的话才会转而找到中央仓库去下载。

2.1.5.3项目 本地仓库 中央仓库 私服 区别与联系

本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源。

远程仓库:非本机电脑上的仓库,为本地仓库提供资源。
远程仓库又分私服和中央仓库:

中央仓库:Maven 团队维护,存储所有资源的仓库。

私服:部门/公司范围内存储资源的仓库,从中央仓库获取资源;

项目 本地仓库 中央仓库 关系图:

image-20240301151641247

项目 本地仓库 中央仓库 私服 关系图:

image-20240301152817794

项目 本地仓库 中央仓库 私服 镜像仓库 关系图:

image-20240301152134866

2.1.5.4Maven包下载不下来

1.确认包是否存在

2.如果包存在,就多下几次

3.如果下载了很多次,都下载不下来

1)是否配置了国内源 setting.xml

2)目录是否是全英文 存在中文的话,修改路径

3)删除本地仓库的jar包,重新下载
可能存在的一个原因是,上次下载时,因为网络原因,造成jar包下载了一半
解决方法是删除指定没下载完的jar包就可以啦

2.1.5.5快捷修改文件名

shift + F6可以快捷改文件夹的名字

不要直接修改文件名,通过idea提供的方式修改文件名的好处:
1.idea 会帮我们查找相关的代码
2.idea 会进行提示
3.idea 会帮我们把关联的文件名相关的代码
全部修改

2.1.6 Servlet 痛点分析

  1. 添加外部 jar 不⽅便,容易出错,⽐如添加了⼀个不匹配的外部 jar 版本;
  2. 运⾏和调试的时候需要配置 tomcat 不⽅便;
  3. 发布不⽅便,servlet 项⽬必须依靠外置的 tomcat(外置的 web 容器)运⾏。
  4. 路由配置不⽅便,⼀个访问地址对应⼀个 Servlet 类。

⽽以上痛点问题,都可以通过 JavaEE 进阶框架解决,接下来我们⼀起来看。

2.2 SpringBoot 项⽬开发

各个目录文件夹解析:

image-20240304172456383

2.2.1 创建并添加引⽤

还可以通过
start.spring.io
网址来创建项目,通过网页编程,然后将文件保存知道本地

image-20240304172149373

由于博主是专业版idea因此不需要额外安装插件来导入SpringBoot

image-20240304152645022

这里Java版本无8,jdk使用1.8不适应Java17的版本要求不能创建项目,因此我们先默认创建进去之后再改jdk版本和Java版本,之后文章会教,注意阅读噢!!!(这里我们选用Java17版本,jdk17,SpringBoot版本3)

springboot3.0更新后,idea创建springboot2.x项目 - CSDN App

选择 SpringBoot 版本和添加外部引⽤:

image-20240304155816966

image-20240304155901600

2.2.2 添加代码并运⾏程序

⽤户实体:

import lombok.Data;
@Data
public class User {private Integer id;private String name;private Integer age;private String password;
}

添加控制器:

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/user")
@RestController
public class UserController {@RequestMapping("/add")public String add(User user){return user.toString();}
}

点击调试运行按钮即可运⾏项⽬:

image-20240304161006604

程序2:

image-20240304161555862
package org.example.demo.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
/*** Created with IntelliJ IDEA* Description* User: 晓星航* Date: 2024 -03 -04* Time: 16:13*/
public class HelloController {@RequestMapping("/sayhi")public String sayHi() {return "hello,SpringBoot";}}

写好代码后,我们找到下图中的运行程序类直接运行,即可将程序跑到网页上,不需要再去花大量时间配置Tomcat了。

image-20240304162014952

注: @RequestMapping("/sayhi") 这里代码意为将上述代码放入了sayhi这个文件夹中

我们输入 127.0.0.1:8080/sayhi 即可成功访问并展示我们刚才所写的代码

image-20240304161926142

关闭运行,再次访问

image-20240304162701077

可以发现我们程序运行了了

image-20240304162941135

如果我们再加一个网页进来,我们仍然只需要重新返回image-20240304163022495
中点击重新运行就可

image-20240304163108302

image-20240304163130040

2.2.3 发布程序

image-20240304161032394

image-20240304161054292

2.2.4 Tomcat启动失败

image-20240304174647471

2.2.5 SpringBoot VS Servlet

SpringBoot 相⽐于 Servlet 的优点总结:

  1. 添加外部 jar 更容易,不易出错(版本问题⽆需关注);
  2. 调试项⽬更加⽅便,⽆需配置 Tomcat;
  3. 发布项⽬更加⽅便,⽆需配置 Tomcat;
  4. 添加路由更加⽅便,⽆需每个访问地址都添加⼀个类。

现在我们已经知道了框架的优点了,哪怎么去学呢?

3.怎么学框架?

  • 先从基础框架 Spring 开始(⼯具箱)
  • Spring Boot 快速开发 Spring 脚⼿架
  • MyBatis 快速操作数据库
  • 其他:⽇志、事务、拦截器…

框架学习中需要注意什么呢?

4.框架学习中的难点

  1. 配置⽐较多。
  2. 需要⼤量的外部 jar 包,在下载时容易出错。
  3. 会涉及简单的软件⼯程的设计思想(分层思想:前、后端的分层思想;后端⼯程的分层思想)。
  4. 知识点相对来说⽐之前的知识更加的分散,要仔细听才能搞懂各个知识点的逻辑关系。
  5. 要记的东⻄很多,所以要⼤量地重复练习才能记住,⽐如各种注解。

感谢各位读者的阅读,本文章有任何错误都可以在评论区发表你们的意见,我会对文章进行改正的。如果本文章对你有帮助请动一动你们敏捷的小手点一点赞,你的每一次鼓励都是作者创作的动力哦!😘

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

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

相关文章

C++:函数重载和引用

hello&#xff0c;各位小伙伴&#xff0c;本篇文章跟大家一起学习C&#xff1a;函数重载和引用&#xff0c;感谢大家对我上一篇的支持&#xff0c;如有什么问题&#xff0c;还请多多指教 &#xff01; 文章目录 函数重载1.函数重载的概念为什么C支持函数重载 引用引用的概念引…

计算机网络-HTTP相关知识-基础

HTTP基础 基本概念&#xff1a;HTTP是一种计算机之间交流通信的规范&#xff0c;它允许数据在两点之间传输&#xff0c;这个过程可以包括中转或接力。HTTP不仅仅包括文本&#xff0c;还可以包括图片、音频等超文本。状态码&#xff1a;HTTP状态码分为五类&#xff1a; 2xx&…

C++的 stack和queue 的应用和实现【双端队列的理解和应用】

文章目录 stack的理解和应用栈的理解栈的模拟实现string实现stackvector实现stack queue的理解和应用队列的理解队列的模拟实现 双端队列原理的简单理解deque的缺陷为什么选择deque作为stack和queue的底层默认容器STL标准库中对于stack和queue的模拟实现stack的模拟实现queue的…

深度学习pytorch好用网站分享

深度学习在线实验室Featurizehttps://featurize.cn/而且这个网站里面还有一些学习教程 免费好用 如何使用 PyTorch 进行图像分类https://featurize.cn/notebooks/5a36fa40-490e-4664-bf98-aa5ad7b2fc2f

木棍【dfs搜索优化】

木棒 题目描述 输入样例&#xff1a; 9 5 2 1 5 2 1 5 2 1 4 1 2 3 4 0输出样例&#xff1a; 6 5【思路】 优化 【AC代码】 #include <iostream> #include <algorithm> #include <cstring>using namespace std;const int N 70;int w[N], sum, length,…

C语言中的结构体:高级特性与扩展应用

前言 结构体在C语言中的应用不仅限于基本的定义和使用&#xff0c;还包含一些高级特性和扩展应用&#xff0c;这些特性和应用使得结构体在编程中发挥着更加重要的作用。 一、位字段&#xff08;Bit-fields&#xff09; 在结构体中&#xff0c;我们可以使用位字段来定义成员…

CMOS传输门与三态输出门电路

传输门&#xff08;TG&#xff09;的应用比较广泛&#xff0c;在数字电路和模拟电路中均有作用。 在数电中&#xff1a;作为基本单元电路构成各种逻辑电路&#xff1b;在模电中&#xff1a;可在取样-保持电路、斩波电路、数模转换器中传输模拟信号&#xff0c;所以又叫模拟开关…

AssetBundle在移动设备上丢失

1&#xff09;AssetBundle在移动设备上丢失 2&#xff09;Unity云渲染插件RenderStreaming&#xff0c;如何实现多用户分别有独立的操作 3&#xff09;如何在圆柱体类型的地图中编程玩家的输入 4&#xff09;Mixamo动画的根运动问题 这是第380篇UWA技术知识分享的推送&#xff…

【保姆级讲解如何安装与配置Node.js】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

Java中的网络编程(一)

一、网络编程概述 什么是计算机网络把不同区域的计算机&#xff08;广义&#xff09;通过通信设备和线路连接&#xff0c;可以实现数据的传输和共享的系统。实现不同计算机之间的练习&#xff0c;必须有介质连接。网络编程是干什么的聊天-->聊天软件 QQjava语言是支持网络间…

汽车EDI:如何与奔驰建立EDI连接?

梅赛德斯-奔驰是世界闻名的豪华汽车品牌&#xff0c;无论是技术实力还是历史底蕴都在全球汽车主机厂中居于领先位置。奔驰拥有多种车型&#xff0c;多元化的产品布局不仅满足了不同用户画像的需求&#xff0c;也对其供应链体系有着极大的考验。 本文将为大家介绍梅赛德斯-奔驰乘…

MySQL故障排查与生产环境优化

目录 引言 一、故障排查 1.1 故障一 1.2 故障二 1.3 故障三 1.4 故障四 1.5 故障五 1.6 故障六 1.7 故障七 1.8 故障八 1.9 故障九 1.10 故障十 1.11 故障十一 二、 生产环境优化 2.1 硬件优化 2.2 查询优化 总结 引言 MySQL是目前企业最常见的数据库之一&…

【Redis】Redis群集的三种模式(主从、哨兵、群集)

redis群集有三种模式&#xff0c;分别是主从同步/复制、哨兵模式、Cluster&#xff0c;下面会讲解一下三种模式的工作方式&#xff0c;以及如何搭建cluster群集 ●主从复制&#xff1a;主从复制是高可用Redis的基础&#xff0c;哨兵和集群都是在主从复制基础上实现高可用的。主…

MySQL、Oracle查看字节和字符长度个数的函数

目录 0. 总结1. MySQL1.1. 造数据1.2. 查看字符/字节个数 2. Oracle2.1. 造数据2.2. 查看字符/字节个数 0. 总结 databasecharbyteMySQLchar_length()length()Oraclelength()lengthB() 1. MySQL 1.1. 造数据 sql drop table if exists demo; create table demo (id …

软件架构复用

1.软件架构复用的定义及分类 软件产品线是指一组软件密集型系统&#xff0c;它们共享一个公共的、可管理的特性集&#xff0c;满足某个特定市场或任务的具体需要&#xff0c;是以规定的方式用公共的核心资产集成开发出来的。即围绕核心资产库进行管理、复用、集成新的系统。核心…

【Spring】SpringBoot整合MybatisPlus的基本应用

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 一、MybatisPlus简介 先来看一下官方的简介吧。 MyBatis-Plus &#xff08;简称 MP&#xff09;是一个 MyBatis的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为 简化开发、提高效率而生。Myb…

【快速解决】python缺少了PyQt5模块的QtMultimedia子模块

目录 问题描述 问题原因 解决方法 成功示范 问题描述 Traceback (most recent call last): File "d:\桌面\python项目\DesktopWords-master\main.py", line 4, in <module> from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent ModuleNotFoundEr…

OpenCV入门例程:裁剪图片、模糊检测、黑屏检测

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 本例程运行环境为CentOS7&…

深入浅出 -- 系统架构之分布式常见理论概念

随着计算机科学和互联网的发展&#xff0c;分布式场景变得越来越常见&#xff0c;能否处理好分布式场景下的问题&#xff0c;成为衡量一个工程师是否合格的标准。本文我们介绍下分布式系统相关的理论知识&#xff0c;这些理论是我们理解和处理分布式问题的基础。 CAP理论 CAP…

NoSQL之 Redis配置

目录 关系数据库与非关系型数据库 关系型数据库&#xff1a; ●非关系型数据库 关系型数据库和非关系型数据库区别&#xff1a; &#xff08;1&#xff09;数据存储方式不同 &#xff08;2&#xff09;扩展方式不同 对事务性的支持不同 非关系型数据库产生背景 Redis简介…