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.mzph.cn/news/794389.shtml

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

相关文章

通用开发技能系列:Git

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 通用开发技能系列 文章&#xff0c;主要对编程通用技能Git进行学习 1.为什么使用版本控制系统 版本控制系统可以解决的问题 代码备份很重要版本控制很重要协同工作很重要责任追溯很重要 常见的版本控制系统 Gi…

网站建设 之 发布ios

首先将forceDev改为false 然后执行npm run build:ios 然后用xocode安装到手机上进行测试 ##Version&#xff08;应用程序发布版本号&#xff09; 对应的就是CFBundleShortVersionString。该版本的版本号是三个时期分隔的整数组成的字符串&#xff1a; 第一个整数代表重大修…

升级一下电脑,CPU换I5-14600K,主板换华硕B760M

刚给自己电脑升级了一下&#xff0c;CPU从 AMD R5 5600X 换成 Intel I5-14600K&#xff0c;主板换成了华硕的 TUF GAMING B760M-PLUS WIFI D4。 因为我现有的两根内存是DDR4的&#xff0c;所有我选了个支持DDR4内存的主板。 我发现用AMD处理器时将系统从Win10升级到Win11后变…

十四款大型语言模型在《街头霸王III》中一决雌雄

上周在旧金山举办的Mistral AI黑客马拉松上&#xff0c;开发出了一款基于经典街机游戏《街头霸王III》的人工智能&#xff08;AI&#xff09;基准测试。这款名为“AI Street Fighter III”的开源基准测试由Stan Girard和Quivr Brain开发&#xff0c;游戏在模拟器中运行&#xf…

PostgreSQL 文章下架 与 热更新和填充可以提升数据库性能

开头还是介绍一下群&#xff0c;如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;&#xff08;…

【51单片机入门记录】A/D、D/A转换器PCF859应用

目录 一、IIC初始化代码 二、开发板电路图 三、PCF8591读/写字节操作流程及相关函数 &#xff08;1&#xff09;PCF8591&#xff08;AD&#xff09;读操作流程及代码 &#xff08;2&#xff09;PCF8591&#xff08;AD&#xff09;写操作流程及代码 四、应用示例-显示电压…

论文笔记:UNDERSTANDING PROMPT ENGINEERINGMAY NOT REQUIRE RETHINKING GENERALIZATION

ICLR 2024 reviewer评分 6888 1 intro zero-shot prompt 在视觉-语言模型中&#xff0c;已经取得了令人印象深刻的表现 这一成功呈现出一个看似令人惊讶的观察&#xff1a;这些方法相对不太受过拟合的影响 即当一个提示被手动工程化以在给定训练集上达到低错误率时&#xff0…

学习心得1

这时我第一次更学习心得&#xff01;不足的在评论区指教。 首先先来分享一下&#xff0c;刷一维数组题目的方法。 仔细读题&#xff0c;不会做的题目先完成输入输出。不要干等着着急&#xff0c;就跳到下一题。如果使用的时oj&#xff0c;那就没有题解但是使用洛谷、LeetCood…

Prometheus+grafana监控nacos和spring-boot服务(增加自定义指标)(七)

前面记录了项目中常用的各种中间件的指标采集器的用法及搭建方式 &#xff0c; 由于所有组件写一篇幅过长&#xff0c;所以每个组件分一篇方便查看&#xff0c;前六篇链接如下 Prometheusgrafana环境搭建方法及流程两种方式(docker和源码包)(一)-CSDN博客 Prometheusgrafana…

LeetCode - 边积分最高的节点

2374. 边积分最高的节点 这是一个有向图&#xff0c;且每个节点都只有一条出边&#xff0c;指向0的边有1&#xff0c;2&#xff0c;3&#xff0c;4 10&#xff0c; 指向7的有5&#xff0c;6 11. 我们只需要一次遍历就可以解决&#xff0c;先搞一张哈希表&#xff0c;k存节点…

解决VScode中matplotlib图像中文显示问题

一、更改配置文件 参考这个文件路径找到自己Python环境下的matplotlibrc文件并用记事本打开。 用ctrl F寻找下面的这两行并将前面的#删除&#xff0c;保存并退出。 font.family: sans-serif font.serif: DejaVu Serif, Bitstream Vera Serif, Computer Modern Roman, N…

Day31|贪心算法part01:理论基础、455.分发饼干、376. 摆动序列、53. 最大子序和

理论基础 记得贪心没有规律即可&#xff01;解不出来就看题解。 455. 分发饼干 先把学生和饼干都排序&#xff08;Arrays.sort只能升序&#xff09;&#xff0c;然后都从后往前遍历&#xff0c;把最大的饼干给需求最大的孩子&#xff08;贪心&#xff09; class Solution {…

计算机提示msvcp120.dll怎么解决,7种详细有效修复方法分享

在Windows操作系统的庞大舞台上&#xff0c;每一个组件都扮演着其独特的角色。在这些不为人知的角色中&#xff0c;有一个名为msvcp120.dll的文件&#xff0c;它是Visual C运行时库的一部分&#xff0c;对于确保许多应用程序的正常运行至关重要。本文将深入探讨msvcp120.dll文件…

【项目实战】——商品管理的制作完整代码

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

逐步学习Go-WaitGroup【连字都懒得写了,直接Show my Code】

package waitgroup_testimport ("fmt""runtime""sync""testing""time""github.com/stretchr/testify/assert" )// 这是对Go语标准库中sync包下的WaitGroup的描述。// WaitGroup用于等待一组并发的goroutine结结束…

非关系型数据库-----------探索 Redis高可用 、持久化、性能管理

目录 一、Redis 高可用 1.1什么是高可用 1.2Redis的高可用技术 二、 Redis 持久化 2.1持久化的功能 2.2Redis 提供两种方式进行持久化 三、Redis 持久化之----------RDB 3.1触发条件 3.1.1手动触发 3.1.2自动触发 3.1.3其他自动触发机制 3.2执行流程 3.3启动时加载…

在深度学习模型中引入先验

当面对复杂问题的时候&#xff0c;在深度学习模型提取特征的过程中完全抛弃知识是非常不明智的策略。虽然有很多研究者在深度网络处理数据之前&#xff0c;利用具有某种知识的模型驱动方法对数据进行预处理&#xff0c;但是这种方法没有进行实质性地改造深度网络&#xff0c;且…

ms-前端八股文

1、暂时性死区 是指在 JavaScript 中使用 let 或 const 声明变量时&#xff0c;变量在其声明之前不能被访问或使用的特性。 var可以变量提升&#xff08;在 JavaScript 中&#xff0c;变量声明提升是指在执行代码之前&#xff0c;变量声明会被提升到作用域的顶部。&#xff0…

scRAN-seq|加权最近邻分析(1)

概述 本文[1]介绍了Seurat 5.0.0中的加权最近邻&#xff08;WNN&#xff09;分析方法&#xff0c;这是一种用于整合和分析多模态单细胞数据的无监督框架。 简介 多模态分析作为单细胞基因组学的一个新兴领域&#xff0c;它通过同时测量多种数据类型来精确描绘细胞状态&#xff…

idea的后端环境配置

首先&#xff0c;在你刚打开idea时红色箭头所指的是你进行配置的地方&#xff0c;接下来我把具体步骤说一下 1&#xff0c;直接点击箭头所指的地方就会出现如图界面&#xff0c;然后点击Tomcat server,使其展开点击第一个 第二步取消勾选&#xff0c;第三步选择bin的上一级然后…