8月10日上课内容 Tomacat部署及优化

news2024/11/24 10:01:47

tomcat 开放源代码的web应用服务器。基于java代码开发的。

Tomcat介绍

tomcat就是处理动态请求和基于java代码的页面开发
可以在html当中写入java代码,tomcat可以解析html页面当中的java,执行动态请求,动态页面。
缺点是机制有问题:不对tomcat进行优化,会出现在:假死、停机。小集群,小服务,小应用适用于tomcat,大并发的场景不适合。

优点

1、免费

2、开源,可以二次封装。

3、可配置型强,可以根据需要进行自定义配置,包括端口号,虚拟主机,等等。

4、安全性: tommcat自带安全机制,可以配置用户认证、授权、加密传输

5、部署应用非常快捷: tocat会自动部署,自动运行.
webapps。

python node.js  javase
 

核心组件三个:

1、web容器:完成web服务器的功能,web应用

web----->http(s)-------访问页面--------->文件index.jsp

web容器中,封装了一组文件,在这一组文件之中,进行集中化管理。

web动态页面。

 

2、servlet容器:名字:catalina,处理servlet代码

就是处理web请求(http),以及生成动态内容的java类。

处理http请求。

3、jsp:jsp动态界面翻译成servlet代码,用标准格式,展示jsp的静态页面。

写好一个包,就把它上传到webapps下,重启服务即可。部署方便

 

servlet补充:

1、处理http请求

2、生成动态内容,为了和数据库交互------>用户发起的:jsp当中的

3、会话管理,跟踪用户在不同请求之间的状态,通过管理,可以在用户访问不同页面时保持用户的状态。

session

4、与数据库交互,servlet可以连接到数据库,执行查询和更新操作。这就是servlet能够生成动态内容的原因。

jsp:java server pages。动态页面的开发技术。使用jsp标签 index.jsp 在html页面中插入java代码。

jsp容器------->html页面当中的java代码翻译------>执行-------------->展示结果。

通常以<%,开头

           %>,结尾

 

java基本知识普及:

面向对象:编程范式。思想。客观存在的实体和他们之间的关系,映射到计算机程序当中。
计算机程序被组织成这一组相互作用的对象,每个对象都有数据(属性)和行为(方法)。

类:定义一组属性和方法
创建对象。实例。


封装:对象的属性和方法捆绑在一块,提供一个接口,可以让其他对象使用。
继承:一个类,可以继承另一个类 类 子类 子类可以重用父类的代码,而且还在不修改代码的情况下,进行扩展。
多态: 不同类的对象对相同的消息,做出不同的响应。

详解:

面向对象(Object-Oriented)是一种编程范式或思想,它在软件设计和开发中广泛应用。
面向对象编程(OOP)是一种将现实世界的实体(对象)和它们之间的关系映射到计算机程序中的方法。
在面向对象编程中,计算机程序被组织为一组相互作用的对象,每个对象都有数据(属性)和行为(方法)。

关键概念和特性包括:

类和对象(Objects and Classes):类是一个抽象的模板或蓝图,定义了一组属性和方法,
而对象是基于类创建的实例。类描述了对象应该有的属性和行为。

封装(Encapsulation):封装指的是将数据和方法(行为)捆绑在一起,隐藏了对象的内部细节,
只公开必要的接口供其他对象使用。这有助于实现信息隐藏和数据保护。

继承(Inheritance):继承是一种机制,允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)
的属性和方法。子类可以重用父类的代码,并可以在不修改原始代码的情况下进行扩展或修改。

多态(Polymorphism):多态性允许不同类的对象对相同的消息作出不同的响应。
这使得在面向对象编程中可以创建通用的代码,能够处理多种类型的对象。

功能组件(结构):

connector:负载对外接受和响应请求,是tomcat与外界的交通枢纽,监听端口,也可以接受外界请求,交给container处理。

container:负责对内处理业务逻辑。

container里面有:
Engine:擎,管理虚拟机 (service,一个service里面可以包含多个虚拟主机。),可以管理多个虚拟主机,一个service里面只能有一个Engine;
Host: 代表一个虚拟机,也可以叫站点
Context: web应用。包含多个servlet。
wrapper:封装器,最底层,每一个wrapper封装一个servlet,负责对象实例的创建,执行,销毁。

父子关系,工作方式也是从上到下。

Tomcat处理请求的过程

Tomcat处理请求的具体过程:

1、输入网址,请求发送,请求发送到8080端口,被监听的获得;
2、connector会把请求转发到container处理-...->engine (虚拟主机,你要访问哪一个虚拟主机)

----->host(丰机站点包含要请求页面的位置。webapps)------>从contex,就是indexjsp里面的内容。------->wrapper(servlet,响应解析处理请求)-------jsp翻译官

--------------->页面展示。

Tomcat服务部署

在部署 Tomcat 之前必须安装好 jdk,因为 jdk 是 Tomcat 运行的必要环境。

1.关闭防火墙,将安装 Tomcat 所需软件包传到/opt目录下

jdk-8u201-linux-x64.rpm
apache-tomcat-9.0.16.tar.gz

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

 

2.安装JDK

cd /opt
rpm -ivh jdk-8u201-linux-x64.rpm 
java -version

 

3.设置JDK环境变量

vim /etc/profile.d/java.sh

export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64

指定jdk的安装路径。jdk解释器,类似于shell,各种工具。
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar

classpath:定义类的环境变量,环境类的库。
export PATH=$JAVA_HOME/bin:$PATH

可执行文件。

source /etc/profile.d/java.sh
java -version 查看安装版本

 

 

使用文本工具编写java源代码,比如 Hello.java ;
在命令行中,输入命令:javac Hello.java,对源代码进行编译,生成 class 字节码文件;
编译完成后,如果没有报错信息,输入命令:java Hello,运行 class 字节码文件,由 JVM 对字节码进行解释和运行,
打印 “Hello World”。


vim Hello.java

public class Hello {            
  public static void main(String[] args){
    System.out.println("Hello world!");
  }
}

 

javac Hello.java
java Hello

 

4.安装启动Tomcat

cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat
##启动tomcat ##
#后台启动
/usr/local/tomcat/bin/startup.sh 

/usr/local/tomcat/bin/catalina.sh start
    
#前台启动
/usr/local/tomcat/bin/catalina.sh run        

netstat -natp | grep 8080

浏览器访问Tomcat的默认主页 http://192.168.233.21:8080
 

主要目录详解:

bin: 存放的启动和关闭tomcat脚本文件
conf:主配置文件 serverxml 主配置文件 ontex htmhost的默认配置信息 tomat-userxml : 认证用户密码的置文件 web.xm:配置servlet servlet的规范标准。

lib: tomcat运行库的jar包,一般不动,除非连接第三方-----redis,数据库

logs:日志文件
webapps: web应用部署的默认目录。

work:tomcat的工作目录。存放jsp编译之后的class文件,清楚tomcat缓存,就是删work目录。

 查看端口有没有起来,再到浏览器中访问

表示启动成功

5.优化tomcat启动速度
第一次启动tomcat可能会发现 Tomcat 启动很慢,默认情况下可能会需要几十秒,可以修改jdk参数进行改。
vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security
--117行--修改
securerandom.source=file:/dev/urandom
----------------------------------------------------------------------------------------------------------
/dev/urandom是/dev/random的非阻塞版本,/dev/random的 random pool 依赖于系统中断,因此在系统的中断数不足时,
/dev/random 设备会一直封锁,尝试读取的进程就会进入等待状态,直到系统的中断数充分够用,
/dev/random设备可以保证数据的随机性。 /dev/urandom不依赖系统的中断,也就不会造成进程忙等待,
但是数据的随机性也不高,所以该随机数的安全性理论上不高。如果应用对安全性要求很高,那么应该使用/dev/random。

 

 

 

重启一下

 

 

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

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

相关文章

【笔记】树状数组

【笔记】树状数组 目录 简介引入1. 直接暴力2. 维护前缀和数组总结 定义前置知识&#xff1a; lowbit ⁡ \operatorname{lowbit} lowbit 操作区间的表示方法操作单点修改前缀和查询任意区间查询 例题1: 单点修改&#xff0c;区间查询例题2: 区间修改&#xff0c;单点查询例题3:…

UDP简介

UDP 1. UDP格式2. UDP特点3. 差错检验 1. UDP格式 16位UDP长度&#xff0c;表示整个数据报&#xff08;UDP首部UDP数据&#xff09;的最大长度&#xff1b; 如果校验和出错&#xff0c;就会直接丢弃; 2. UDP特点 无连接: 知道对端的IP和端口号就直接进行传输&#xff0c;不需…

用Python编写的小游戏:探索游戏世界的乐趣

探索开始 引言&#xff1a;第一部分&#xff1a;猜数字游戏代码案例1&#xff1a; 第二部分&#xff1a;石头剪刀布游戏代码案例2&#xff1a; 第三部分&#xff1a;迷宫游戏代码案例3&#xff1a; 总结&#xff1a; 引言&#xff1a; Python是一种简单易学的编程语言&#xf…

Centos7单机部署ElasticSearch

Centos7单机部署ElasticSearch 引言 Elasticsearch是一种广泛使用的开源搜索引擎&#xff0c;专门为分布式环境设计&#xff0c;但也可以在单机上运行。它使存储、搜索和分析大量数据变得更加容易和高效。此教程将引导你通过在Centos7上单机部署Elasticsearch&#xff0c;涵盖…

【JasperReports笔记01】Jasper Studio报表开发工具的安装以及使用Java填充模板文件内容

这篇文章&#xff0c;主要介绍如何安装Jasper Studio报表开发工具以及使用Java填充模板文件内容。 目录 一、安装Jasper Studio工具 1.1、下载报表开发工具 1.2、工具界面介绍 &#xff08;1&#xff09;启动工具 &#xff08;2&#xff09;创建项目 二、制作Jasper模板文…

CC++内存管理

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析2 目录 &#x1f449;&#x1f3fb;c内存管理方式new/delete 操作内置类型new和delete操…

不看太后悔了!呕心沥血总结JVM!

一、JVM 简介 JVM 是 Java Virtual Machine 的简称&#xff0c;意为 Java虚拟机。虚拟机是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统。 常见的虚拟机&#xff1a;JVM、VMwave、Virtual Box。 JVM 和其他两个虚拟机的区别&#xff1a; …

[HDLBits] Mt2015 q4b

Circuit B can be described by the following simulation waveform: Implement this circuit. module top_module ( input x, input y, output z );//001 100 010 111assign z(xy); endmodule

wordpress数据表中标签和分类如何区分?

wordpress中标签和分类是什么关系怎么区分&#xff1f;最后有一个群的网友告诉了我文章ID和标签ID的关系是放在了wp_term_relationships表中&#xff0c;然后我百度了下这个表的结构和相关介绍&#xff0c;发现果然如此&#xff0c;先把文章保存起来&#xff1a; wp_term_rela…

数据结构——空间复杂度

3.空间复杂度 空间复杂度也是一个数学表达式&#xff0c;是对一个算法在运行过程中临时占用存储空间大小的量度 。 空间复杂度不是程序占用了多少bytes的空间&#xff0c;因为这个也没太大意义&#xff0c;所以空间复杂度算的是变量的个数。 空间复杂度计算规则基本跟实践复杂…

基于SLAM的规划算法仿真复现|SLAM|智能规划

图片来自百度百科 前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 首先是博主的高质量博客的汇总&#xff0c;这个专栏里面的博客&#xff0c;都是博主最最用心写的一部分&#xff0c;干货满满&#xff0c;希望对大家有帮助。 高质量博客汇总https://blog.csdn.n…

getchar()清空缓冲区剩余的空格回车等转义字符

getchar()清空缓冲区剩余的空格回车等转义字符 多次使用scanf输入字符会出现以下错误&#xff1a; #include <stdio.h> int main() {char a,b,c,d,e,f;printf("input character a,b\n");scanf("%c,%c",&a,&b);printf("a %c,b %c\n&…

【字节跳动青训营】后端笔记整理-1 | Go语言入门指南:基础语法和常用特性解析

**本人是第六届字节跳动青训营&#xff08;后端组&#xff09;的成员。本文由博主本人整理自该营的日常学习实践&#xff0c;首发于稀土掘金&#xff1a;&#x1f517;Go语言入门指南&#xff1a;基础语法和常用特性解析 | 青训营 本文主要梳理自第六届字节跳动青训营&#xff…

C++-排序

文章目录 常数操作时间复杂度空间复杂度O(N^2) O(1) 数据情况发生变化不影响流程 选择排序冒泡排序使用抑或运算提取出不为零的数最右边的1 1. 实现两个变量交换值2. 数组中一种数字出现奇数次,other是偶数次,找到那一种数字3. 数组中有两种数字出现奇数次,other是偶数次,找到那…

修改SqlSugar的WebFirst 代码生成器适配瀚高数据库

WebFirst代码生成器是果糖大数据团队开发的新一代 高性能 代码生成器&数据库设计工具&#xff0c;由.net core 3.1 sqlsugar 开发 &#xff08;此处摘抄自官网 &#x1f601;&#xff09; 官网地址 WebFirst 目前官网发布的版本并没有集成瀚高数据库的支持&#xff0c;本文…

hive on tez资源控制

sql insert overwrite table dwintdata.dw_f_da_enterprise2 select * from dwintdata.dw_f_da_enterprise; hdfs文件大小数量展示 注意这里文件数有17个 共计321M 最后是划分为了21个task 为什么会有21个task&#xff1f;不是128M 64M 或者说我这里小于128 每个文件一个map…

这34道接口测试 Jmeter面试题,你会吗?

接口测试 & Jmeter面试题 一、接口测试 1、接口测试流程 1、首先是从开发那里拿到API接口文档&#xff0c;了解接口业务、包括接口地址、请求方式&#xff0c;入参、出参&#xff0c;token鉴权&#xff0c;返回格式等信息。 2、然后使用Postman或Jmeter工具执行接口测试…

【图像恢复】基于交替乘子方法(ADMM)图像恢复算法研究[固定点收敛和应用](Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

form 表单恢复初始数据

写表单的时候&#xff0c;想做到&#xff0c;某个操作时&#xff0c;表单恢复初始数据 this.$options.data().form form 是表单的对象 <template><div><el-dialog title"提示" :visible.sync"dialogVisible"><el-form :model"…

前端学习记录~2023.7.30~JavaScript重难点实例精讲~第4章 对象

第 4 章 对象 前言4.1 对象的属性和访问方式4.1.1 对象的属性&#xff08;1&#xff09;数据属性&#xff08;2&#xff09;访问器属性 4.1.2 属性的访问方式&#xff08;1&#xff09;使用.访问属性&#xff08;2&#xff09;使用[]访问属性&#xff08;3&#xff09;两者的不…