好程序员Java教程入门基础之Tomcat学习

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

  Jrebel公布了一份2020 Java生态系统报告,调查结果显示,有61%的开发者们使用的主要应用服务器还是Tomcat。很多初学Java的人不知道怎么入门Tomcat,接下来的好程序员Java学习教程中,给大家做一个简单的知识梳理。
  Tomcat是什么
  Tomcat是由Apache开发的一个Servlet容器,实现了对Servlet和JSP的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。Tomcat包含了一个配置管理工具,也可以通过编辑XML格式的配置文件来进行配置。
  Tomcat重要目录
  /bin - Tomcat 脚本存放目录(如启动、关闭脚本)。 .sh 文件用于 Unix 系统; .bat 文件用于 Windows 系统。
  /conf - Tomcat 配置文件目录。
  /logs - Tomcat 默认日志目录。
  /webapps - webapp 运行的目录。
  Tomcat常见组件
  1.服务器(server)
  实例,通常一个JVM只能包含一个实例,一般情况下,一个物理服务器可以启动多个JVM,从而启动多个实例,但一般不这么做。
  2.服务(service)
  一个服务组件通常包含一个引擎和此引擎相关联的一个或多个链接服务器。
  3.连接器(connectors)
  一个引擎能配置多个连接器,但是每个连接器的端口不能冲突。同时,Tomcat也支持AJP JSERV和JK2连接器,实现让Apache反向代理到后端服务器的非常高效的传输协议。
  4.引擎
  可以自己接收用户的http请求,并构建响应报文,而且可以在内部处理java程序的整个套间 。
  5.主机
  6.上下文
  7.阀门,能够过滤也可以做访问控制。
  8.日志记录器
  9.领域(Realm),用来实现用户的认证和授权。
  任何Tomcat实例就是一个server,而一个server内部要想能够解析JSP页面转义编译serlet程序,要靠其引擎来实现。而引擎才是真正意义上执行JSP代码的容器,都是Tomcat用类来描述这些组件的。同时,为了接受用户的请求,需要基于connector组件,所谓监听的套接字的程序,能够接手用户的请求,被称为连接器。一个server内部可以完全运行N个引擎,无非就是运行多个虚拟机而已。
  Tomcat的安装
  查看文件:
  # cat /usr/local/tomcat/conf/server.xml
  Listener为侦听器,通常实现tomcat内部进行通信的,可在各组件之间完成通信
  全局命名资源,方便全局引用,所以为其起完名称后可以随便调用的
  type="org.apache.catalina.UserDatabase"
  description="User databasethat can be updated and saved"
  factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
  pathname="conf/tomcat-users.xml" /> #其调用tomcat-user.xml配置文件进行用户认证
  服务类组件配置信息,将连接器关联至引擎上
  connectionTimeout="20000" #连接超时时间,单位毫秒
  redirectPort="8443" /> #必要的时候可以做重定向,定义在8443
  maxThreads="150" scheme="https" secure="true" #最大线程,协议版本,安全的
  clientAuth="false" sslProtocol="TLS" /> #不验证客户端 ssl协议用的是tls
  #引擎,名为catalina
  resourceName="UserDatabase"/>
  unpackWARs="true" autoDeploy="true"> #如果是war文件格式,是否解压,是否自动部署
  #定义阀门,java中类的记录方式,当前所处域名反过来写的记录方式
  prefix="localhost_access_log." suffix=".txt" #日志的命名 suffix表示时间戳
  pattern="%h %l %u %t "%r" %s %b" /> #访问日志的格式

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
12天前
|
自然语言处理 Java
Java中的字符集编码入门-增补字符(转载)
本文探讨Java对Unicode的支持及其发展历程。文章详细解析了Unicode字符集的结构,包括基本多语言面(BMP)和增补字符的表示方法,以及UTF-16编码中surrogate pair的使用。同时介绍了代码点和代码单元的概念,并解释了UTF-8的编码规则及其兼容性。
82 60
|
1月前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
138 26
|
1月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
67 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
1月前
|
监控 架构师 Java
Java虚拟机调优的艺术:从入门到精通####
本文作为一篇深入浅出的技术指南,旨在为Java开发者揭示JVM调优的神秘面纱,通过剖析其背后的原理、分享实战经验与最佳实践,引领读者踏上从调优新手到高手的进阶之路。不同于传统的摘要概述,本文将以一场虚拟的对话形式,模拟一位经验丰富的架构师向初学者传授JVM调优的心法,激发学习兴趣,同时概括性地介绍文章将探讨的核心议题——性能监控、垃圾回收优化、内存管理及常见问题解决策略。 ####
|
2月前
|
SQL 存储 Java
面向 Java 程序员的 SQLite 替代品
SQLite 是轻量级数据库,适用于小微型应用,但其对外部数据源支持较弱、无存储过程等问题影响了开发效率。esProc SPL 是一个纯 Java 开发的免费开源工具,支持标准 JDBC 接口,提供丰富的数据源访问、强大的流程控制和高效的数据处理能力,尤其适合 Java 和安卓开发。SPL 代码简洁易懂,支持热切换,可大幅提高开发效率。
|
2月前
|
监控 安全 Java
Java中的多线程编程:从入门到实践####
本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin
|
2月前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
2月前
|
存储 安全 Java
🌟Java零基础-反序列化:从入门到精通
【10月更文挑战第21天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
95 5
|
2月前
|
安全 Java 调度
Java中的多线程编程入门
【10月更文挑战第29天】在Java的世界中,多线程就像是一场精心编排的交响乐。每个线程都是乐团中的一个乐手,他们各自演奏着自己的部分,却又和谐地共同完成整场演出。本文将带你走进Java多线程的世界,让你从零基础到能够编写基本的多线程程序。
39 1
|
2月前
|
SQL Java 程序员
倍增 Java 程序员的开发效率
应用计算困境:Java 作为主流开发语言,在数据处理方面存在复杂度高的问题,而 SQL 虽然简洁但受限于数据库架构。SPL(Structured Process Language)是一种纯 Java 开发的数据处理语言,结合了 Java 的架构灵活性和 SQL 的简洁性。SPL 提供简洁的语法、完善的计算能力、高效的 IDE、大数据支持、与 Java 应用无缝集成以及开放性和热切换特性,能够大幅提升开发效率和性能。