tomcat 川长思鸟来 2023-01-05 01:25 12阅读 0赞 ## web服务 ## **nginx:** 轻量级、web 反向代理、简单的负载均衡,处理静态数据的能力比较好;并发量2.5万 **apache:** 重量级,处理动态数据的能力比较好 **tomcat:** java的web服务,手机app大部分都使用的tomcat **lamp和lnmp** 架构 index.html index.php,php作为中间件,php是能够加载index.php页面 ## **tomcat** ## 是基于java开发的,它只支持index.html和index.jsp页面,java能够解析index.jsp的文件; Tomcat服务器是一个免费的开放源代码的Web应用服务器。Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet(java编写的一个web程序) 和JSP规范总是能在Tomcat中得到体现,Tomcat 5支持最新的Servlet 2.4和JSP 2.0规范。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,是目前比较流行的Web应用服务器。 对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center] Servlet是Java提供的用于开发Web服务器应用程序的一个组件,运行在服务器端,由Servlet容器所管理,用于生成动态的内容。Servlet是平台独立的Java类,编写一个Servlet,实际上就是按照Servlet规范编写一个Java类。 JSP是servlet的扩展,可以认为JSP = HTML + Java代码 + JSP标签 Servlet获取请求数据和处理数据非常方便,但是向页面输出并显示数据(html标签)非常麻烦,毫无格式 jsp显示数据非常方便,像html格式一样,但是封装数据和处理数据比较麻烦 **tomcat的作用:** 用来对服务器上的web提供访问权限控制,并且具有处理HTML页面的功能 **tomcat的优点:** 兼有可扩展性和安全性,性能稳定 1、兼有可扩展性和安全性。假如单位时间内访问请求数急剧增加,可以用相对较低的费用增加前端的能力。 2、比较容易扩展。由于是通过在这台功能强大的服务器上运行的单个servlet容器,实际上也就不需要考虑session状态在分布式环境下的维护这类复杂的问题。 3、台后端服务器在外界不可以访问,网上的黑客只能访问前端的web服务器,不能直接访问后端的应用服务器,这就提高了安全性。但这并不意味着黑客们不能通过网络浏览器进行其它形式的攻击。 这种类型的站点的主要特点是每一个页面都可能是动态生成的,但这些数据中主要部分还是静态的(比如,各类图像GIF、JPG、PNG,流式媒体等)。想象以下某个站点采用了多个用于负载均衡的硬件设备,这些设备后端连结一组服务器,这些服务器可能是一组相对廉价的运行apache的linux服务器簇。这组位于前端的服务器簇将仅占总访问请求的10%的真正需要调用servlet的访问请求发送给后段的系统,后锻系统可以是一台Sun的E3500,或是IBM的AS/400,在这个后端的系统上运行着Tomcat,可能还包括企业级数据库。 **tomcat的应用:** web应用服务器,可以作为中间件处理index.jsp的文件 ## jdk介绍 ## **jdk(java development kit)** 是java语言的软件开发工具包 其中**基本组件包括:** javac – 编译器,将源程序转成字节码 jar – 打包工具,将相关的类文件打包成一个文件 javadoc – 文档生成器,从源码注释中提取文档 jdb – debugger,查错工具 java – 运行编译后的java程序(.class后缀的) appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。 Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。 Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。 Jconsole: Java进行系统调试和监控的工具 xtcheck:一个检测jar包冲突的工具 apt:注释处理工具 jhat:java堆分析工具 jstack:栈跟踪程序 jstat:JVM检测统计工具 jstatd:jstat守护进程 jinfo:获取正在运行或崩溃的java程序配置信息 jmap:获取java进程内存映射信息 idlj:idl-to-java编译器,将IDL语言转化为java文件 policytool:一个GUI的策略稳健和管理工具 jrunscript:命令行脚本运行 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16 * 17 * 18 * 19 * 20 **安装tomcat前要先安装jdk环境** 因为版本的原因 需要重新安装一个新的jdk工具包 也就是java环境 准备一台虚拟机,拖入相关的软件包 [root@localhost ~]# java -version openjdk version "1.8.0_102" OpenJDK Runtime Environment (build 1.8.0_102-b14) OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode) [root@localhost ~]# rm -rf /usr/bin/java #删除原本主机上的Java程序 [root@localhost ~]# java -version -bash: /usr/bin/java: 没有那个文件或目录 [root@localhost ~]# tar -zxf jdk-8u201-linux-x64.tar.gz [root@localhost ~]# mv jdk1.8.0_201/ /usr/local/java * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 能够让命令全局使用的方法: 1、制作软链接 ln -s /usr/local/java/bin/* /usr/bin/ * 1 2、添加环境变量(通常情况我们使用第二种方法) [root@localhost bin]# vim /etc/profile #末尾添加 export JAVA_HOME=/usr/local/java export JRE_HOME=/usr/local/java/jre export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin #释义: #export:声明一个变量 #jre java runtime environment : java的运行环境 #class java 依赖库文件 #path 环境变量 [root@localhost bin]# source /etc/profile [root@localhost bin]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/java/bin:/usr/local/java/jre/bin [root@localhost bin]# java -version java version "1.8.0_201" Java(TM) SE Runtime Environment (build 1.8.0_201-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode) * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16 * 17 * 18 **注:** 自己添加的环境变量,只能针对当前的shell和其子shell,如果另打开一个shell环境则需要重新生效 **安装tomcat** [root@localhost ~]# tar -zxf apache-tomcat-8.5.35.tar.gz [root@localhost ~]# mv apache-tomcat-8.5.35 /usr/local/tomcat [root@localhost ~]# cd /usr/local/tomcat/ [root@localhost tomcat]# cd bin/ [root@localhost bin]# ./startup.sh #启动 Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/java/jre Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Tomcat started. [root@localhost bin]# netstat -anput | grep java tcp6 0 0 :::8080 :::* LISTEN 58093/java tcp6 0 0 127.0.0.1:8005 :::* LISTEN 58093/java tcp6 0 0 :::8009 :::* LISTEN 58093/java * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 访问192.168.10.30:8080(本机ip) ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 1] tomcat**软件目录**的**结构**和**功能**: bin: 服务相关的脚本文件,可执行的文件,例如:关闭、开启脚本 conf:里面存放的是配置文件,xml结尾 lib:tomcat运行需要的依赖库文件 logs:运行的日志文件 webapps:web应用程序部署的目录,也就是站点根目录,页面是jsp或html结尾 work:存放着jsp编译后的class文件;class类文件也就是java程序编译后生成的文件 **tomcat的多主机实例** 虚拟主机,让一台主机可以运行多个tomcat [root@localhost ~]# cp -r /usr/local/tomcat/ /usr/local/tomcat1 [root@localhost ~]# ls /usr/local/ bin etc games include java lib lib64 libexec sbin share src tomcat tomcat1 [root@localhost ~]# cd /usr/local/tomcat1/conf/ [root@localhost conf]# vim server.xml 22 <Server port="8006" shutdown="SHUTDOWN"> 69 <Connector port="8081" protocol="HTTP/1.1" 71 redirectPort="8444" /> 116 <Connector port="8010" protocol="AJP/1.3" redirectPort="8444" /> [root@localhost conf]# cd .. [root@localhost tomcat1]# ./bin/startup.sh Using CATALINA_BASE: /usr/local/tomcat1 Using CATALINA_HOME: /usr/local/tomcat1 Using CATALINA_TMPDIR: /usr/local/tomcat1/temp Using JRE_HOME: /usr/local/java/jre Using CLASSPATH: /usr/local/tomcat1/bin/bootstrap.jar:/usr/local/tomcat1/bin/tomcat-juli.jar Tomcat started. [root@localhost tomcat1]# netstat -anput | grep 8081 tcp6 0 0 :::8081 :::* LISTEN 58441/java * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16 * 17 * 18 * 19 访问8081端口进行验证 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 2] ## Tomcat架构 ## **1 server** 提供一个接口让其他程序能够访问到service集合、同时要维护它所包含的所有service的生命周期,包括如何初始化、如何结束服务、如何找到别人要访问的service **2 service** Service是server下一个集合,service包含多个接收请求的connector并有一个处理所有连接的容器container **3 connector** Connector作用是监听客户端请求,并将请求封装提交container处理,然后将处理结果返回客户端。 Tomcat有两个典型的connector,一个用来监听浏览器的http请求,另一个是用来监听来自其他服务器的请求coyote http/1.1 connector 在端口8080处侦听来自客户browser的http请求。 Coyote AJP/1.3 connector 在端口8009处侦听来自其他webserver(apache)的servlet/jsp代理请求 **4 container** 1 engine Engine下可以配置多个虚拟主机virtual host,每个虚拟主机都有一个域名,当engine获得一个请求时,它把该请求匹配到某个host上,然后把该请求交给host来处理。 Engine 有一个默认虚拟主机,当请求无法匹配到任何一个host上的时候,将交给该默认host来处理localhost 2 host 代表一个virtual host ,虚拟主机,每个虚拟主机和某个网络域名domain name相匹配。 每个虚拟主机下都可以部署(deploy)一个或者多个web app,每个web app对应一个context,有一个context path。 当host获得一个请求时,将把该请求匹配到某个context上,然后把该请求交给该context来处理。 所有无法和其他context的路径名匹配的请求都将最终和该默认context匹配。 3 context 一个context对应于一个web application 一个web application 由一个或者多个servlet组成。 **tomcat的工作原理:** ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 3] server:最顶层元素,也就是tomcat服务,一个server可以包含至少一个service,用于具体提供服务 8005:负责关闭tomcat的端口 service分为两个部分: 1、connector:负责接收请求,并提供Socket与Request和Response相关的转化 2、container:用于封装和管理servlet,以及具体处理Request请求 connector分为两个部分: 1、监听端口8080 http1.1:监听来自客户端的请求 2、监听端口8009 ajp:接收其他服务的请求 3、监听端口8443:监听https 例: http://localhost:8080/kgc/index.jsp connector的8080端口接收–container----engine处理引擎----虚拟主机----context context可以有多个,相当于多个目录,多个页面 一个Tomcat中只有一个Server,一个Server可以包含多个Service,一个Service只有一个Container,但是可以有多个Connectors,这是因为一个服务可以有多个连接,如同时提供Http和Https链接,也可以提供向相同协议不同端口的连接,示意图如下(Engine、Host、Context下边会说到): ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 4] 多个 Connector 和一个 Container 就形成了一个 Service,有了 Service 就可以对外提供服务了,但是 Service 还要一个生存的环境,必须要有人能够给她生命、掌握其生死大权,那就非 Server 莫属了!所以整个 Tomcat 的生命周期由 Server 控制。 另外,上述的包含关系或者说是父子关系,都可以在tomcat的conf目录下的server.xml配置文件中看出 **编写一个自定义的页面** [root@localhost tomcat1]# ./bin/shutdown.sh Using CATALINA_BASE: /usr/local/tomcat1 Using CATALINA_HOME: /usr/local/tomcat1 Using CATALINA_TMPDIR: /usr/local/tomcat1/temp Using JRE_HOME: /usr/local/java/jre Using CLASSPATH: /usr/local/tomcat1/bin/bootstrap.jar:/usr/local/tomcat1/bin/tomcat-juli.jar [root@localhost tomcat1]# cd [root@localhost ~]# rm -rf /usr/local/tomcat1 [root@localhost ~]# cd /usr/local/tomcat/ [root@localhost tomcat]# vim conf/server.xml 148 <Host name="localhost" appBase="webapps" 149 unpackWARs="true" autoDeploy="true"> #添加 150 <Context path="/kgc" docBase="/usr/local/tomcat/webapps/hello" 151 reloadable="false" crossContext="true"/> #释义: host name:域名 appbase:站点根目录, java开发的一个web项目 war unpackwars:是否解压war包,这里开发写好的页面会打成war包 autodeploy:是否自动部署 <Context path="/kgc": #访问的具体路径 docBase="/usr/local/tomcat/webapps/hello" : #具体的目录 reloadeable="false": #是否自动重启 crossContext="true"/> : #是否共享会话 [root@localhost tomcat]# mkdir webapps/hello [root@localhost tomcat]# echo "1111" > webapps/hello/index.jsp [root@localhost tomcat]# ./bin/shutdown.sh #先关闭 Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/java/jre Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar [root@localhost tomcat]# ./bin/startup.sh #再启用 Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/java/jre Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Tomcat started. [root@localhost tomcat]# netstat -anput | grep 8080 tcp6 0 0 :::8080 :::* LISTEN 59324/java tcp6 0 0 ::1:44070 ::1:8080 TIME_WAIT - [root@localhost tomcat]# curl 192.168.10.30:8080/kgc/index.jsp #访问验证 1111 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16 * 17 * 18 * 19 * 20 * 21 * 22 * 23 * 24 * 25 * 26 * 27 * 28 * 29 * 30 * 31 * 32 * 33 * 34 * 35 * 36 * 37 * 38 * 39 * 40 * 41 * 42 * 43 * 44 * 45 **tomcat的默认索引页** index.jsp [root@localhost tomcat]# cd /usr/local/tomcat/webapps/hello/ [root@localhost hello]# mv index.jsp index1.jsp [root@localhost hello]# curl 192.168.10.30:8080/kgc/ #这儿会访问不到,会出现404 <!doctype html><html lang="en"><head><title>HTTP Status 404 – Not Found</title><style type="text/css">h1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} h2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} h3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} body {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} b {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} p {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;} a {color:black;} a.name {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 404 – Not Found</h1><hr class="line" /><p><b>Type</b> Status Report</p><p><b>Message</b> /kgc/</p><p><b>Description</b> The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.</p><hr class="line" /><h3>Apache Tomcat/8.5.35</h3></body></html> [root@localhost hello]# curl 192.168.10.30:8080/kgc/index1.jsp 1111 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 **目录浏览功能** 当访问一个目录,没有默认索引页,会展示出这个目录中所有的页面,前提需要开启目录浏览的功能 必须当前目录下没有默认索引页 [root@localhost ~]# cd /usr/local/tomcat/webapps/hello/ [root@localhost hello]# touch index{2..10}.jsp [root@localhost hello]# ls index10.jsp index2.jsp index4.jsp index6.jsp index8.jsp index1.jsp index3.jsp index5.jsp index7.jsp index9.jsp [root@localhost hello]# vim /usr/local/tomcat/conf/web.xml 111 <param-name>listings</param-name> 112 <param-value>true</param-value> #开启目录浏览功能 [root@localhost hello]# /usr/local/tomcat/bin/shutdown.sh #先关闭 Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/java/jre Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar [root@localhost hello]# /usr/local/tomcat/bin/startup.sh #再启用 Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/java/jre Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Tomcat started. [root@localhost hello]# netstat -anput | grep 8080 tcp6 0 0 :::8080 :::* LISTEN 59567/java tcp6 0 0 192.168.10.30:8080 192.168.10.1:60129 ESTABLISHED 59567/java tcp6 0 0 192.168.10.30:8080 192.168.10.1:60128 FIN_WAIT2 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16 * 17 * 18 * 19 * 20 * 21 * 22 * 23 * 24 * 25 * 26 * 27 访问http://192.168.10.30:8080/kgc/进行验证查看 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 5] **修改默认索引页** [root@localhost hello]# vim /usr/local/tomcat/conf/web.xml 4696 <welcome-file>aa.jsp</welcome-file> [root@localhost hello]# /usr/local/tomcat/bin/shutdown.sh Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/java/jre Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar [root@localhost hello]# /usr/local/tomcat/bin/startup.sh Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/java/jre Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Tomcat started. [root@localhost hello]# netstat -anput | grep 8080 tcp6 0 0 :::8080 :::* LISTEN 59873/java tcp6 0 0 ::1:44088 ::1:8080 TIME_WAIT - [root@localhost hello]# echo aa > aa.jsp [root@localhost hello]# ls aa.jsp index1.jsp index3.jsp index5.jsp index7.jsp index9.jsp index10.jsp index2.jsp index4.jsp index6.jsp index8.jsp [root@localhost hello]# curl 192.168.10.30:8080/kgc/ aa * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16 * 17 * 18 * 19 * 20 * 21 * 22 * 23 * 24 这个实验做完之后再把刚刚改的配置更改回来,以便于后面接着使用 **jvm内存监控页面** jvm(java vritual machine)java的虚拟主机 [root@localhost hello]# vim meminfo.jsp #添加 <% Runtime rtm = Runtime.getRuntime(); long mm = rtm.maxMemory()/1024/1024; long fm = rtm.freeMemory()/1024/1024; long tm = rtm.totalMemory()/1024/1024; out.println("JVM memory info:<br>"); out.println("Max memory:"+mm+"MB"+"<br>"); out.println("Free memory:"+fm+"MB"+"<br>"); out.println("Total memory:"+tm+"MB"+"<br>"); out.println("Available memory can be used:"+(mm+fm-tm)+"MB"+"<br>"); %> * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 访问http://192.168.10.30:8080/kgc/meminfo.jsp进行验证 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 6] **jvm的内存分配方式:** 堆内存和栈内存 **堆内存的方式:** jvm最大占用235M,但是tomcat不会使用全部,会先申请一块空间25M,然后使用了21M,剩余4M,所以tomcat还可以使用 mm-(tm-fm)也就是mm+fm-tm所得到的214M jvm的堆内存分配是先分配一小块,然后在使用 堆内存是现在的jvm的分配方式 **栈内存:** 使用多少占用多少,现在不常用 **JVM远程调用**(jvm远程监控) **实验:** <table> <thead> <tr> <th>主机</th> <th>ip</th> </tr> </thead> <tbody> <tr> <td>tomcat</td> <td>192.168.10.30</td> </tr> <tr> <td>远程监控</td> <td>192.168.10.40</td> </tr> </tbody> </table> tomcat主机: [root@localhost ~]# cd /usr/local/tomcat/ [root@localhost tomcat]# vim bin/catalina.sh 307 CATALINA_OPTS="-Djava.rmi.server.hostname=192.168.10.30 #jmx监控的主机(本机) 308 -Dcom.sun.management.jmxremote #开启远程监控 309 -Dcom.sun.management.jmxremote.port=8080 #监控的端口 310 -Dcom.sun.management.jmxremote.ssl=false #不使用https 311 -Dcom.sun.management.jmxremote.authenticate" #认证登录 [root@localhost tomcat]# cd /usr/local/java/jre/lib/management/ [root@localhost management]# cp jmxremote.password.template jmxremote.password [root@localhost management]# vim jmxremote.password 62 monitorRole 123456 63 controlRole 123456 [root@localhost management]# chmod 600 jmxremote.* [root@localhost management]# /usr/local/tomcat/bin/shutdown.sh Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/java/jre Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar [root@localhost management]# /usr/local/tomcat/bin/startup.sh Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/java/jre Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Tomcat started. [root@localhost management]# netstat -anput | grep 8080 tcp6 0 0 :::8080 :::* LISTEN 61598/java tcp6 0 0 ::1:44102 ::1:8080 TIME_WAIT - [root@localhost bin]# systemctl stop firewalld [root@localhost bin]# setenforce 0 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16 * 17 * 18 * 19 * 20 * 21 * 22 * 23 * 24 * 25 * 26 * 27 * 28 * 29 * 30 * 31 * 32 * 33 * 34 远程主机:验证 [root@localhost ~]# jconsole #执行完后会弹出以下窗口 * 1 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 7] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 8] 看到这儿就证明监控部署成功 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 9] ## tomcat的管理平台 ## **tomcat的应用管理平台:** 用于部署页面,tomcat本身自带的一个管理平台 [root@localhost management]# cd /usr/local/tomcat/ [root@localhost tomcat]# cd webapps/ [root@localhost webapps]# ls docs examples hello host-manager manager ROOT [root@localhost webapps]# cd manager/ [root@localhost manager]# vim /usr/local/tomcat/bin/catalina.sh #将307-311注释 307 #CATALINA_OPTS="-Djava.rmi.server.hostname=192.168.10.30 308 #-Dcom.sun.management.jmxremote 309 #-Dcom.sun.management.jmxremote.port=8080 310 #-Dcom.sun.management.jmxremote.ssl=false 311 #-Dcom.sun.management.jmxremote.authenticate" [root@localhost manager]# cd /usr/local/tomcat/ [root@localhost tomcat]# vim webapps/manager/META-INF/context.xml #修改 20 allow="192.168.10.*" /> #允许这个网段 [root@localhost tomcat]# vim conf/tomcat-users.xml #在倒数第二行添加以下内容 44 <role rolename="manager-gui"/> 45 <role rolename="manager-script"/> 46 <user username="manager" password="123456" roles="manager-gui"/> 47 <user username="managerscript" password="123456" roles="manager-script"/> [root@localhost tomcat]# /usr/local/tomcat/bin/shutdown.sh Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/java/jre Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar [root@localhost tomcat]# /usr/local/tomcat/bin/startup.sh Using CATALINA_BASE: /usr/local/tomcat Using CATALINA_HOME: /usr/local/tomcat Using CATALINA_TMPDIR: /usr/local/tomcat/temp Using JRE_HOME: /usr/local/java/jre Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Tomcat started. [root@localhost tomcat]# netstat -anput | grep 8080 tcp6 0 0 :::8080 :::* LISTEN 62671/java tcp6 0 0 ::1:44118 ::1:8080 TIME_WAIT - * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16 * 17 * 18 * 19 * 20 * 21 * 22 * 23 * 24 * 25 * 26 * 27 * 28 * 29 * 30 * 31 * 32 * 33 * 34 * 35 * 36 * 37 * 38 * 39 * 40 访问192.168.10.30:8080/manager/html验证 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 10] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 11] **第一种:部署使用图形界面 部署页面** ![在这里插入图片描述][20210111103852170.png_pic_center] 访问验证 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 12] 把这个使用图形界面部署的web项目删除掉 ![在这里插入图片描述][20210111104607181.png_pic_center] **第二种:使用命令** [root@localhost ~]# cp bdqnweb.war /usr/local/tomcat/webapps/ [root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh [root@localhost ~]# /usr/local/tomcat/bin/startup.sh [root@localhost ~]# netstat -anput | grep 8080 tcp6 0 0 :::8080 :::* LISTEN 63351/java [root@localhost ~]# curl 192.168.10.30:8080/bdqnweb/ <html> <body> <h2>Hello World!</h2> </body> </html> * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 **第三种:命令来部署war项目** [root@localhost ~]# rm -rf /usr/local/tomcat/webapps/bdqnweb* [root@localhost ~]# unzip bdqnweb.war -d /usr/local/tomcat/webapps/bdqnweb Archive: bdqnweb.war creating: /usr/local/tomcat/webapps/bdqnweb/META-INF/ inflating: /usr/local/tomcat/webapps/bdqnweb/META-INF/MANIFEST.MF creating: /usr/local/tomcat/webapps/bdqnweb/WEB-INF/ creating: /usr/local/tomcat/webapps/bdqnweb/WEB-INF/classes/ inflating: /usr/local/tomcat/webapps/bdqnweb/WEB-INF/web.xml inflating: /usr/local/tomcat/webapps/bdqnweb/index.jsp creating: /usr/local/tomcat/webapps/bdqnweb/META-INF/maven/ creating: /usr/local/tomcat/webapps/bdqnweb/META-INF/maven/cn.bdqn.bdqnweb/ creating: /usr/local/tomcat/webapps/bdqnweb/META-INF/maven/cn.bdqn.bdqnweb/bdqnweb/ inflating: /usr/local/tomcat/webapps/bdqnweb/META-INF/maven/cn.bdqn.bdqnweb/bdqnweb/pom.xml inflating: /usr/local/tomcat/webapps/bdqnweb/META-INF/maven/cn.bdqn.bdqnweb/bdqnweb/pom.properties [root@localhost ~]# cd /usr/local/tomcat/webapps/ [root@localhost webapps]# ls bdqnweb docs examples hello host-manager manager ROOT [root@localhost webapps]# curl 192.168.10.30:8080/bdqnweb/ <html> <body> <h2>Hello World!</h2> </body> </html> * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16 * 17 * 18 * 19 * 20 * 21 * 22 * 23 * 24 * 25 **tomcat的主机管理平台:** 可以制作虚拟主机 [root@localhost ~]# vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml 20 allow="192.168.10.*" /> [root@localhost ~]# vim /usr/local/tomcat/conf/tomcat-users.xml 49 <role rolename="admin-gui"/> 50 <role rolename="admin-script"/> 51 <user username="admin" password="123456" roles="admin-gui"/> 52 <user username="adminscript" password="123456" roles="admin-script"/> [root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh [root@localhost ~]# /usr/local/tomcat/bin/startup.sh * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 访问http://192.168.10.30:8080/host-manager/html验证 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 13] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 14] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 15] ![在这里插入图片描述][20210111115945520.png_pic_center] [root@localhost ~]# cd /usr/local/tomcat/webapps/ [root@localhost webapps]# ls aaa bdqnweb docs examples hello host-manager manager ROOT [root@localhost webapps]# cd aaa/ [root@localhost aaa]# echo AAAAAA > index.jsp [root@localhost aaa]# vim /etc/hosts #添加 192.168.10.30 www.kgc.com [root@localhost aaa]# /usr/local/tomcat/bin/shutdown.sh [root@localhost aaa]# /usr/local/tomcat/bin/startup.sh [root@localhost aaa]# curl www.kgc.com:8080/aaa/index.jsp AAAAAA * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 ## tomcat的优化 ## tomcat的一个加固,用于安全方面 **1、服务器的端口改为非8080端口** **2、禁用目录浏览功能** **3、在生产环境中,要禁用应用管理平台和主机管理平台** **4、隐藏服务版本的信息** ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 16] 没有找到对应的页面时,会显示版本的信息,可以隐藏版本信息 [root@localhost ~]# vim /usr/local/tomcat/conf/web.xml 23 <error-page> 24 <error-code>404</error-code> 25 <location>/notfound.jsp</location> 26 </error-page> [root@localhost ~]# cd /usr/local/tomcat/webapps/hello/ [root@localhost hello]# echo "page no found" > notfound.jsp [root@localhost hello]# /usr/local/tomcat/bin/shutdown.sh [root@localhost hello]# /usr/local/tomcat/bin/startup.sh * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 当再次访问不存在的页面时,将不会出现版本信息 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 17] **5、脚本权限收回,防止爆破** chmod -R 700 /usr/local/tomcat/bin/* [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center]: /images/20221119/022d1b5dc3a74dc0854ae1a05cb284eb.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 1]: /images/20221119/5b30aed7121242ff87dc1c9b4cc0c200.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 2]: /images/20221119/4ea5006aedb54ebba180dc5d0cdd7cf9.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 3]: https://img-blog.csdnimg.cn/20210110163858372.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ==,size_16,color_FFFFFF,t_70#pic_center [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 4]: https://img-blog.csdnimg.cn/20210111090743780.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ==,size_16,color_FFFFFF,t_70#pic_center [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 5]: https://img-blog.csdnimg.cn/20210110113925263.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ==,size_16,color_FFFFFF,t_70#pic_center [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 6]: https://img-blog.csdnimg.cn/20210110122406332.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ==,size_16,color_FFFFFF,t_70#pic_center [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 7]: https://img-blog.csdnimg.cn/20210111094433391.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ==,size_16,color_FFFFFF,t_70#pic_center [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 8]: https://img-blog.csdnimg.cn/20210111094444664.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ==,size_16,color_FFFFFF,t_70#pic_center [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 9]: https://img-blog.csdnimg.cn/2021011109445550.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ==,size_16,color_FFFFFF,t_70#pic_center [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 10]: https://img-blog.csdnimg.cn/20210111103016257.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ==,size_16,color_FFFFFF,t_70#pic_center [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 11]: https://img-blog.csdnimg.cn/20210111103026899.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ==,size_16,color_FFFFFF,t_70#pic_center [20210111103852170.png_pic_center]: https://img-blog.csdnimg.cn/20210111103852170.png#pic_center [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 12]: https://img-blog.csdnimg.cn/202101111042039.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ==,size_16,color_FFFFFF,t_70#pic_center [20210111104607181.png_pic_center]: https://img-blog.csdnimg.cn/20210111104607181.png#pic_center [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 13]: https://img-blog.csdnimg.cn/20210111115548145.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ==,size_16,color_FFFFFF,t_70#pic_center [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 14]: https://img-blog.csdnimg.cn/20210111115558585.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ==,size_16,color_FFFFFF,t_70#pic_center [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 15]: https://img-blog.csdnimg.cn/20210111115712298.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ==,size_16,color_FFFFFF,t_70#pic_center [20210111115945520.png_pic_center]: https://img-blog.csdnimg.cn/20210111115945520.png#pic_center [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 16]: https://img-blog.csdnimg.cn/2021011112290251.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ==,size_16,color_FFFFFF,t_70#pic_center [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ_size_16_color_FFFFFF_t_70_pic_center 17]: https://img-blog.csdnimg.cn/202101111234345.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTkzNjY0MQ==,size_16,color_FFFFFF,t_70#pic_center
相关 tomcat 1. c/s: 客户端和服务端 : 例如QQ; 安全, 升级比较麻烦 b/s: 浏览器和服务端: 只需要编写服务端; 不安全 2. web资源介绍: 灰太狼/ 2022年06月14日 08:49/ 0 赞/ 73 阅读
相关 tomcat Tomcat 1.概述 通过上面的讲解大家对JSP与Servlet已经有所理解,最起码知道它们是做什么的,说到底它们都是程序设计语言,是帮助我们更好的编写程序。大家都知 缺乏、安全感/ 2022年06月11日 07:55/ 0 赞/ 434 阅读
相关 Tomcat Tomcat简介 WEB服务器与应用服务器的概念 WEB服务器:专门处理HTTP请求,提供WEB信息浏览服务。 应用服务器:可解析运行后台代码,为应用 客官°小女子只卖身不卖艺/ 2022年06月07日 03:07/ 0 赞/ 261 阅读
相关 Tomcat 1.基本调优 bin/catalina.sh 加一行 JAVA\_OPTS='-Xms128m -Xmx512m -XX:PermSize=128m' 2.设置脚本开机启 r囧r小猫/ 2022年05月31日 22:48/ 0 赞/ 237 阅读
相关 tomcat 一、安装Tomcat5.5.20 1、下载安装包 <table> <tbody> <tr> <td><span><strong>代码:</stro 一时失言乱红尘/ 2022年05月11日 12:16/ 0 赞/ 119 阅读
相关 tomcat 前文: 对tomcat的构的初步解析 一、web服务器 ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_te 偏执的太偏执、/ 2022年03月19日 16:58/ 0 赞/ 87 阅读
相关 tomcat tomcat结构 模块组成结构 Tomcat的核心组件就Connector和Container,一个Connector+一个Container(Engine)构成一个 ﹏ヽ暗。殇╰゛Y/ 2022年03月16日 07:51/ 0 赞/ 130 阅读
相关 Tomcat [Tomcat][] Tomcat运行在JVM之上,它和HTTP服务器一样,绑定IP地址并监听TCP端口,同时还包含以下指责: 1. 管理Servlet程序的生命周期 左手的ㄟ右手/ 2022年01月28日 13:21/ 0 赞/ 172 阅读
相关 Tomcat tomcat目录层次结构 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6L 我会带着你远行/ 2021年11月17日 09:02/ 0 赞/ 231 阅读
相关 Tomcat Tomcat文件目录 |-bin: 存放tomcat的命令。 |- conf: 存放tomcat的配置信息。其中server.xml文件是核心的配置文件。 ゝ一世哀愁。/ 2021年09月11日 05:40/ 0 赞/ 361 阅读
还没有评论,来说两句吧...