Tomcat的安装与使用,Maven与Servlet的使用

news2024/11/25 0:26:27

文章目录

  • 一.Tomcat的下载与使用
    • 1. Tomcat简介
    • 2. 安装和使用
  • 二.Maven的使用
  • 三.Servlet
    • 1. 第一个Servlet程序
    • 2. 在idea中集成Tomcat
    • 3. 常见错误

一.Tomcat的下载与使用

1. Tomcat简介

Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目, 由Apache, Sun和其他一些公司及个人共同开发而成, 由于有了Sun的参与和支持, 最新的Servlet和JSP规范总是能在Tomcat中得到体现, Tomcat5支持最新的Servlet 2.4和JSP 2.0规范.

因为Tomcat技术先进, 性能稳定, 而且免费, 因而深受Java爱好者的喜爱并得到了部分软件开发商的认可, 成为比较流行的Web应用服务器.

Tomcat是一个HTTP服务器, HTTP服务器有很多种, 在Java领域中, Tomcat是最知名, 最广泛使用的一个, 本质上是基于TCP服务器, 按照HTTP协议的约定来解析请求, 构造响应.

2. 安装和使用

下载与安装:
1️⃣第一步, 浏览器中搜索Tomcat, 找到Tomcat官网 https://tomcat.apache.org/

2️⃣第二步, 根据你的环境, 选择相应版本下载即可, 需要知道的是Tomcat的版本和你使用的Servlet版本是有强相关的, 这里就下载Tomcat8了, 对应的Servlet的版本就是3.1的.
img
3️⃣第三步, 点进去, 选择zip文件点击下载即可, 如果你有下载多个版本的需求, 也是可以的, Tomcat是纯绿色的软件, 直接解压就能使用, 下载多个版本之间是互不影响的.

img
4️⃣第四步, 找个你常用的目录, 解压即可, 点进目录, 你会得到下面一堆文件:
img

还要注意, Tomcat是基于Java实现的, 这就要求你的环境中必须要有jdk, 如果没有Tomcat是跑不起来的.
使用:
5️⃣第五步, 了解各目录文件的作用

img

🍂bin目录中放的是Tomcat相关的批处理文件, .bat文件表示Windows批处理文件, .sh文件表示Linux的shell脚本文件, 其中包含启动和关闭Tomcat的可执行文件, 也就是说Tomcat也是可以在Linux上运行的, 以startup命名的文件就是Tomcat启动程序, 以shutdown命名的文件就是Tomcat关闭程序.
img
🍂conf目录中含有Tomcat的配置文件, 配置文件是xml类型的文件, 比如可以在server.xml文件可以配置Tomcat的端口号, 不修改的话默认就是8080了.
img

🍂logs目录主要用来储存日志, Tomcat运行的日志都在这里, 如果程序出问题了, 就需要看这里的日志来排产问题.
🍂webapps目录储存我们部署的Serlvet程序, Servlet部署的程序是war结尾的压缩包, Tomcat将一个war包解压后就是一个webapp, 即一个网站, 一个Tomcat可以部署多个Servlet程序, 即多个网站, 所以就是webapps, 里面的每个目录都代表一个独立的网站.

temp, lib, work目录用的不多, 就不作赘述了.
img
6️⃣第六步, 启动Tomcat, 我们可以在bin目录下找到startup.bat文件点击在本地启动Tomcat, 然后直接访问http://127.0.0.1:8080可访问到Tomcat欢迎页面(Tomcat自带的一个webapp).

img

启动Tomcat的页面图如下, 出现类似org.apache.catalina.startup.Catalina.start Server startup in 936 ms的信息就表示启动成功了
img

可以看到这里控制台有些是乱码的, 这是因为我们的Tomcat是在下Windows下启动的, Windows的默认编码是GBK, 我们可以可以修改以下配置conf/logging.properties, 然后关闭Tomcat后重新启动.

当然, 如果要将Tomcat配置到Linux环境下, 这里的配置还是需要改回UTF8的.

img

img

要注意, 当启动一个Tomcat程序后再启动一个Tomcat程序会启动失败, 因为端口号8080已经被上一个Tomcat程序占用了.

img

7️⃣第七步, 将项目部署到Tomcat, 所谓部署就是将我们的代码拷贝到webapps目录下即可, 然后在bin目录找到startup.bat文件重新启动Tomcat, 最后访问http://127.0.0.1:8080/部署文件的相对wepapps目录的相对路径进行验证.

比如我的webapps目录中有一个BlogSystem文件夹, 里面有一个login.html页面文件, 我们现在要使用Tomcat访问这个文件, 访问的url就为http://127.0.0.1:8080/BlogSystem/login.html.

这里访问的路径组成为, ip:端口号, 后面的BlogSystem是我们的webapps下的目录, 我们也称为context path/application path, 再后面的路径是我们的context path下要访问的文件, 这种形式的访问是通过网络可以跨主机访问的, 初学要注意与本地点文件打开访问进行区分.
img

访问http://127.0.0.1:8080/BlogSystem/login.html结果如下,

img
不过我们这里在Tomcat部署的网页, 是在局域网环境下, 只有在同一局域网下的设备才可以访问, 如果是部署在外网IP下, 那么全世界的设备就都可以访问了.

最后就是关闭Tomcat了, 一共有三种关闭方式:

  1. Ctrl + C关闭
  2. 直接点窗口右上角X号关闭
  3. 使用bin目录下的shutdown.bat关闭

这三种方式中, 第1, 2种是比较粗暴的关闭方式, 这种方式会直接杀死进程; 第3种方式比较优雅, Tomcat还会绑定一个8005管理端口, 是通过管理端口来关闭的, 会多做一些收尾工作; 但实际上, 第1, 2种关闭方式是更方便, 更常用的.

二.Maven的使用

Maven是专门用于管理和构建Java项目的 “工程管理” 工具, 有规范目录结构, 管理依赖, 构建/编译, 打包, 测试等功能, Maven是一个独立的程序, 但不需要我们单独下载安装, IDEA中已经直接集成了.

那么首先来介绍如何使用IDEA来使用Maven来引入的依赖, 以引入Servlet的为例.

1️⃣第一步, 新建项目, 选择Maven.

选中这里的Maven点击Create就可以创建Maven管理的项目了,
img

项目创建好后会就会自动创建如下目录结构,
img

main目录中放业务代码, java目录中放java代码, resources目录中放程序的依赖文件, test目录下放测试代码, pom.xml文件是Maven项目总的配置文件.

如果是首次使用Maven, 项目创建好了之后, 会在下面读条, 从中央仓库加载一些Maven的依赖, 由于Maven仓库的服务器是在国外的, 下载的速度就可能比较慢; 如果实在太慢尝试就更换下网络, 或者配置一下国内镜像的阿里云服务器再下载.
2️⃣第二步, 引入依赖.

首先要知道坐标的概念, Maven中的坐标是资源的唯一标识, 要使用坐标来引入项目中所需要的依赖, Maven标准由以下几个部分组成:

  • groupId: 定义当前Maven项目隶属组织名称(通常是域名的反写)
  • artifactId: 定义当前Maven项目名称(通常是模块名称, maven_project)
  • version: 定义当前项目版本号
  • scope: 设置对应jar包的作用范围

这里以引入Servlet的依赖为例进行介绍, 我们要去Maven中央仓库(https://mvnrepository.com/), 搜索Servlet, 找到Servlet的jar包点进去
img
img
点击选择3.1版本, 和tomcat8对应, 复制图中位置的坐标内容.
img
把坐标拷贝到项目的pom.xml文件中, 我们需要, 先创建一个dependencies标签, 是project标签的子标签, 可以放多个依赖, 把依赖依次拷贝到这个标签即可.
img

首次使用, 这里可能会爆红, 说明依赖还没有下载下来.
当这段代码复制到pom.xml文件中, Maven就会自动下载相应的依赖文件, 没有触发自动下载的话, 可以手动刷新一下触发下载, 当依赖下载完成后, 也就不爆红了.
img
这样就引入依赖成功了.

img

三.Servlet

Servlet是一种实现动态页面的技术, 要注意区分静态页面和动态页面:

  1. 静态页面: 网页内容始终固定不变的(单纯的html)
  2. 动态页面: 用户不同/时间不同/输入参数不同时页面的内容会发生变化(html+后端交互数据)

Servlet是Tomcat提供的一组API, 封装了HTTP相关操作, 可以让我们不必关注Socket, HTTP协议格式等细节, 降低了Web开发的门槛, 提高开发效率.

Servlet主要进行的工作:

  1. 允许我们创建一个类, Tomcat收到某个特定路径的HTTP请求时, 执行该类中的某个方法
  2. 对HTTP请求进行解析, 并将HTTP请求从一个字符串解析成一个HttpRequest对象
  3. 我们只需要给指定的HttpResponse对象的一些属性字段填写, Servlet就会自动的按照HTTP协议的方式构造出一个HTTP响应的字符串, 然后通过Socket写回客户端.

1. 第一个Servlet程序

那么下面就来写一个Servlet程序, 我们使用Servlet来在写一个hello world程序, 然后部署到Tomcat上, 此时通过浏览器去访问, 就会在网页上得到一个有hello world字符串的页面.

1️⃣``第一步, 创建Maven项目, 创建步骤在上面介绍过了.

2️⃣第二步, 引入Servlet依赖, 还是去参考上面写的.

3️⃣第三步, 创建目录结构, 虽然Maven已经帮我们自动创建了一些目录, 但是还不够, 因为此处我们使用Maven开发的是一个Web程序, 还需要一些额外的目录.

  1. main目录里创建webapp目录, 该目录和java,resources并列img

  2. webapp目录里面创建WEB-INF目录.
    img

  3. WEB-INF目录下创建web.xml文件.
    img

  4. web.xml写入指定配置, 需要注意的是, 这里的代码可能是爆红的, 但在这里并不代表就是错的, IDEA中只是针对Java代码能够进行比较准确的分析和判定, 针对其他代码, 如果标红, 是否是错的, 都不一定.

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>
</web-app>

这里相关的还要理解的是, Servlet程序中是没有main方法的, 那么它是怎么跑起来的呢?
这就和我们创建的这个web.xml有关了, 依靠这个文件, Tomcat就可以识别webapps目录下哪些项目目录是需要加载到服务器中的.

所以说, 这样的目录结构是必须的, 使用Tomcat就得遵照人家的要求, 当然也不是不可以改其他名称, 是需要额外配置的.

4️⃣第四步, 在Java目录下编写Servlet代码.

  • 创建类HelloServlet, 继承HttpServlet类(由Servlet API提供, 写Servlet代码一般都要继承这个类).
  • 重写doGet方法, 用来处理HTTP GET请求, 根据请求生成响应, 有HttpServletRequest req(TCP socket中读出来的字符串,按照HTTP协议解析得到的对象), HttpServletResponse resp(空对象, 输出型参数, 要由我们去构造)两个参数, Tomcat服务器接收到GET或者POST请求时就会调用这里相应的方法(不需要我们手动调用).
  • 在方法里面写业务逻辑代码, 构造出resp.
  • 加上WebServlet注解标识路径, 这个注解的作用是把当前的类和一个HTTP请求的路径关联起来, 不同的路径关联的是不同类, 可以触发不同的代码 (注解是Java 中的特殊的类, Java专门定义了一种 “语法糖” 来实现注解, 作用是针对一个类/方法, 进行额外的解释说明, 赋予额外的含义).
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;

// 把当前的类和HTTP请求的路径关联起来
// 根据url中的路径, 通过这个注解, 就可以确定调用服务器中的哪个类的方法
// 路径和servlet是一一对应关系
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 不要调用父类的构造方法
        //super.doGet(req, resp);

        // 控制台输出hello world
        System.out.println("hello world");
        // 构造resp对象
        // 写入resp中的body中, 最终由tomcat写入网卡, 发送至客户端
        resp.getWriter().write("hello world");
    }
}

要理解, 一个Servlet程序中, 可以有很多的Servlet类, 每个Servlet类都可以关联到不同的路径(对应到不同的资源), 多个Servlet就可以实现了不同的逻辑和功能, 路径和Servlet类之间是一对一的关系.

上面的代码中要注意, 直接快捷键重写的doGet方法, 默认调用的是父类的doGet, 而父类是直接写回一个错误的, 所以一定要注意将默认调用的super.doGet()删除, 然后再去实现自己的逻辑;

img

img

img

代码中resp.getWriter()会得到一个Writer对象, 这里的writer对象是从属于resp对象的, 此处的write操作其实是往resp的body部分进行写入, 等resp对象整个构造好了, tomcat会统一转成HTTP相应的格式, 写入socket.

5️⃣第五步, 打包程序.

Maven默认打的是jar包, jar包中只含有普通的java程序(.class), 而Tomcat中的webapp需要的war包, war包是Tomcat部署webapp使用的压缩文件, 可以包含一些前端代码.

首先需要在pom.xml文件写入以下内容, 与dependencies同一级, 目的是为了使打包的压缩格式为war和指定包名.

<!-- 描述要包类型  -->
<packaging>war</packaging>
<!--  声明包名  -->
<build>
    <finalName>hello_servlet</finalName>
</build>

然后点击IDEA右侧的Maven, 双击Lifecycle下的package, 此时Maven就会帮助我们打包项目, 项目中会出现一个target目录, 打包后的war包就在其中.img
img
6️⃣第六步, 将程序部署到Tomcat
将打包好的war包拷贝到Tomcat中的webapps目录中即可.

img

7️⃣第七步, 验证程序运行结果.

启动Tomcat服务器, 在浏览器地址栏中访问http://127.0.0.1:8080/hello_servlet/hello可以得到一个显示hello world的页面, 同时命令行运行的Tomcat也会输出hello world.

img

img

要注意这里的两级路径, 第一级路径是webapps目录下的war包文件名, 也叫做Context Path; 第二级路径是我们代码中在注解标注的路径, 也叫做Servlet Path; 即/war包名(一级路径)/注解标注的路径(二级路径).

这里的war包名称为hello_servlet, 注解标注的路径是/hello; 所以综合起来, 加上前面的协议域名和端口号, URL就是http://127.0.0.1:8080/hello_servlet/hello.

总结一下, 这里有7步, 依次是, 创建Maven项目, 引入依赖, 创建webapp目录结构, 编写Servlet代码, 打包, 部署, 验证.

2. 在idea中集成Tomcat

Smart Tomcat是IDEA上的一个插件, 上面所介绍的Servlet程序运行步骤其实是可以简化的, 主要是第五步和第六步, 每次修改都需要重新打包和部署, 其实是有点麻烦的, Smart Tomcat就帮助我们解决了这个问题.

Smart Tomcat插件安装和使用步骤如下:

1️⃣第一步, 打开IDEA设置, 找到插件选项, 即Plugins.
img
2️⃣第二步, 在Marketplace搜索Smart Tomcat, 下载安装即可.
img
3️⃣第三步, 重启IDEA, 配置Smart Tomcat.

img

点击+新增配置, 选中Smart Tomcat
img

配置Tomcat

img
配置好后点击绿色的倒三角形就可以运行Servlet程序了.

img

看到下图中的提示, Tomcat就启动成功了, 不过这个不能访问Tomcat的欢迎页面.

img

要注意, 使用Smart Tomcat启动Tomcat和之前介绍的是有本质区别的, Smart Tomcat的工作原理, 不是说把war包拷贝(webapps里是不变的), 使用Smart Tomcat支持启动的时候显示指定一个特定的webapp目录, 相当于是让Tomcat加载单个webapp运行, IDEA直接调用Tomcat, 让Tomcat加载当前项目中的目录, 这里没有打包, 拷贝和解压缩的过程.

这两种部署, 其实是两种Tomcat运行方式, 对于Context Path的定位不同; 如果是直接拷贝war包的方式部署, Context Path就是war包名; 如果是Smart Tomcat方式部署, 这里的Context Path是可以自己配置的.

IDEA专业版还直接集成了Tomcat Server插件, 不过还是没有这个简单好用.

3. 常见错误

🎯常见错误1: 404
404 表示用户访问的资源不存在, 大概率是 URL 的路径写的不正确.
img

或者是你的webapp没有正确被部署: web.xml 写错了, 文件名错了, 文件路径错了, 文件位置错了…

🎯常见错误2: 405

405 表示对应的 HTTP 请求方法没有实现, 比如我们在浏览器发了个GET请求, 但是代码里没写doGet, 此时就会出现405.
img

img

还有可能就是重写的方法中没有去掉默认调用的父类方法, 如super.doGet

img

img

🎯常见错误3:500

往往是Servlet代码中抛出异常导致的, 这个问题最好解决, 因为500的时候页面日志中会明确告诉你异常调用栈, 告诉你是哪一行代码出的异常
比如我们给代码来一个空指针异常.

img
img

🎯常见错误4: 出现空白页面

方法中逻辑没有写类似resp.getWriter().write()这样的代码

🎯常见错误5: 页面无法访问
最常见的原因就是Tomcat没有启动或者崩溃, 我们把Tomcat关了, 就会出现页面无法访问的情况, Tomcat无法启动, 很可能是端口冲突了.

img

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

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

相关文章

学习Kafka生产者的缓冲池设计

大家一定都了解Java的线程池&#xff0c;线程池有什么好处呢&#xff1f;如果没有线程池&#xff0c;我们每次创建线程都要新建一个线程&#xff0c;这样对CPU的消耗比较大。那么利用线程池我们可以对已经创建好的线程复用&#xff0c;线程就不用频繁创建和销毁了。 同样&…

回顾 | Semantic Kernel:面向 AI 编程(三) - 云原生

点击蓝字 关注我们 编辑&#xff1a;Alan Wang 排版&#xff1a;Rani Sun 微软 Reactor 为帮助广开发者&#xff0c;技术爱好者&#xff0c;更好的学习 .NET Core, C#, Python&#xff0c;数据科学&#xff0c;机器学习&#xff0c;AI&#xff0c;区块链, IoT 等技术&#xff0…

chatgpt赋能python:Python如何创建角色

Python如何创建角色 在游戏开发中&#xff0c;创建角色是非常重要的一个环节&#xff0c;也是游戏设计的重要一环。Python作为一种广泛使用的编程语言&#xff0c;可以用于快速且高效地创建角色。 1. 创建角色的基本思路 创建角色的主要思路是定义角色的属性&#xff0c;包括…

ReactJS入门(一)—— 初步认识React

React刚开始红的时候&#xff0c;由于对其不甚了解&#xff0c;觉得JSX的写法略非主流&#xff0c;故一直没打算将其应用在项目上&#xff0c;随着身边大神们的科普&#xff0c;才后知后觉是个好东西。 好在哪里呢&#xff1f;个人拙见&#xff0c;有俩点&#xff1a; 1. 虚拟…

14.数据结构之多路查找树与堆

前言 之前介绍的都是二叉查找树&#xff0c;二叉树一个节点最多有两个子节点&#xff0c;那么多于两个节点是什么情况呢&#xff0c;这就是我们本节要介绍的多路查找树。 多路查找树&#xff0c;也是我们数据库mysql底层索引维护方式。下面&#xff0c;我们来详细介绍。 1. …

小红书母婴博主类型怎么选,类型区分

母婴类型的分享不管在哪个平台都是涨粉最快的&#xff0c;也可能是因为当前的大环境因素导致的。不过如果你想成为一名母婴博主或者想要借助它的影响&#xff0c;得先了解一些东西。那么小红书母婴博主类型怎么选&#xff0c;类型怎么区分。 小红书母婴博主是指聚集在小红书平台…

【数据结构】带你玩转排序:堆排序、希尔排序、插入排序、选择排序、冒泡排序、快排(多版本)、归并排序

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 常见算法的实现 插入排序 希尔排序 堆排序 选择排序 冒泡排序 快速排序 Hoare版本 随机选Keyi 三数取中 挖坑法 前后指针版本 归并排序 常见算法的实现 插入排序 动画演示&…

信创提速,人才为先!麒麟信安与领路信创签订《人才合作协议》

5月23日&#xff0c;麒麟信安杨涛董事长一行考察了设立在长沙领路信创科技有限公司&#xff08;简称&#xff1a;领路信创&#xff09;的“国家新一代自主安全计算系统产业集群人才基地”&#xff08;简称人才基地&#xff09;&#xff0c;并与领路信创刘耿董事长签署《人才合作…

苹果WWDC2023:首款MR头显震撼发布,开发者泪洒现场,一文读懂全新产品及创新功能

&#x1f337; 博主 libin9iOak带您 Go to New World.✨ &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &#x1f30a; 《IDEA开发…

macOS Sonoma 发布,全面提升生产力和创意工作流(ISO、IPSW、PKG 下载)

macOS Sonoma 14.0 Beta 1 (23A5257q) ISO、IPSW、PKG 下载 本站下载的 macOS 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。另外也支持在 Windows 和 Li…

chatgpt赋能python:Python如何删除行:从入门到精通

Python如何删除行&#xff1a;从入门到精通 在Python编程中&#xff0c;删除行是必不可少的操作之一。无论是清除不必要的数据&#xff0c;还是在数据集中删除重复行&#xff0c;或者在文本文件中删除某些行&#xff0c;删除行都是一项极其重要的任务。 什么是Python语言&…

shell文件读取

文件读取 一、whilefor shell中读取文件有两种方式 while 和 for while #!/bin/bash cat filename | while read line doetho $line donefor #!/bin/bash for line in cat filename(待读取的文件) doecho $line done第三中写法&#xff0c;上述两种方式的升级写法 #!/bin/bas…

SQL-约束

SQL-约束 1.1 概念 约束是作用于表中列上的规则&#xff0c;用于限制加入表的数据约束的存在保证了数据库中数据的正确性、有效性和完整性 1.2 分类 类型描述关键字非空约束保证列中所有的数据不能有null值NOT NULL唯一约束保证列中所有数据各不相同UNIQUE主键约束主键是一行…

HTTP首部(上)

HTTP 协议的请求和响应报文中必定包含 HTTP 首部&#xff0c;只是我们平时在使用 Web 的过程中感受不到它。本章我们一起来学习 HTTP 首部的结构&#xff0c;以及首部中各字段的用法。 1.HTTP报文首部 先来看看http报文的首部结构图&#xff1a; HTTP 协议的请求和响应报文中…

不知道如何搭建帮助中心?这里有解决办法!

在今天的数字化时代&#xff0c;帮助中心已经成为许多公司所必需的一个重要部分。它是一个客户与公司沟通和交互的重要渠道&#xff0c;可以帮助客户解决问题和获得支持。本文将介绍如何搭建一个有效的帮助中心&#xff0c;以提高客户满意度和公司的效率。 一、明确帮助中心的…

哪些因素对会影响到企业制定自己的融合CDN战略

我们知道一个企业/组织有多种方法可以实现和利用多CDN战略&#xff0c;由于带宽承诺、成本、超期费用等因素&#xff0c;因此对不同的指标进行评估至关重要。 以下是可能影响您的融合CDN战略的一些因素&#xff1a; 地理因素 在选择CDN时需要考虑的一个重要因素是用户所在的…

静态内存管理

内存管理的基本概念 在一般的实时嵌入式系统中&#xff0c;由于实时性的要求&#xff0c;很少使用虚拟内存机制。所有的内存都需要用户参与分配&#xff0c;直接操作物理内存&#xff0c;所分配的内存不能超过系统的物理内存&#xff0c;所有的系统堆栈的管理&#xff0c;都由…

快速上手kettle(三)壶中可以放些啥?

快速上手kettle&#xff08;三&#xff09;壶中可以放些啥&#xff1f; 序言一 、kettle这壶能装些啥二、Access输入2.1 准备Acess数据库和表2.2 新建一个转换并设置2.3 启动转换预览数据 三、CSV文件输入3.1 准备csv文件&#xff0c;并将csv输入控件拖入工作区3.2 csv输入控件…

JDBC 拾枝杂谈—入门篇(通俗易懂)

目录 一、前言 二、JDBC介绍 1.基本概述 : 2.基本原理 : 三、JDBC模拟 1.模拟接口 &#xff1a; 2.模拟实现类 : 3.模拟测试类 : 4.模拟扩展 : 四、JDBC入门 1.编写JDBC程序的核心四部曲 : &#xff08;全文背诵&#xff09; 2.准备工作 : ①导入jar包 ②创建测试表 …

Sys Tick【转】

STM32学习及应用笔记一&#xff1a;SysTick定时器学习及应用 - STM32/STM8技术论坛 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com) 1、SysTick究竟是什么&#xff1f; 关于SysTick在STM32的资料中并没有详细的介绍&#xff0c;这可能由于SysTick是ARM内核的东西。在…