Talk is cheap , show me your code!
欢迎来到付振南Java博客,让我们一起学习Java吧!

tomcat学习笔记 非常详细的tomcat学习笔记

Tomcat学习笔记

tomcat介绍

  • Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。
  • Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
  • 对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。
  • 实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。
  • 另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。

Web基础

c/s与b/s架构

  • C/S ,Client/Server,就是客户端与服务器,顾名思义,用户需要安装相应的客户端才能运行,典型的如QQ,微信。
    优点:减轻服务端的处理压力,运算速度快,对客户端响应快
    缺点:版本升级成本高,每次升级必须先卸载老版本在升级
  • B/S,Browser/Server,浏览器/服务器,本质上来说也是cs架构,只不过client变成了browser而已。
    优点:不存在客户端升级问题,只需要升级服务端程序即可。
    缺点:具体业务的处理压力,全部加载了服务端,导致服务端程序运算速度降低,响应速度降低,用户体验差。

web中的三大协议四大角色

  • 三大协议
    • HTTP协议
    • Servlet协议
    • JDBC协议
  • 四大角色
    • 浏览器
    • web服务器
    • 服务器端程序
    • db(数据库)

Tomcat下载

  • 下载地址
  • 请根据自己需求和电脑系统下载相应版本,建议Source Code Distributions源码也下载,方便后续研究

Tomcat的运行环境与配置

  • tomcat需要安装jdk和jre,对于tomcat5及以前的版本,要求必须安装jdk,而tomcat6及以后的版本只需要安装jre。这里怎么安装jdk和jre就不讲了。
  • 只需要在系统环境变量中设置JAVA_HOME后,将其java的bin目录添加到path变量即可。

Tomcat的启动与访问

  • 打开bin目录下的startup.bat即可启动,打开shutdown.bat即可关闭
    • 如果java环境变量没有正确配置,则可能出现闪退情况,请按要求正确配置java环境变量即可
    • 如遇控制台中文乱码情况,9版本以下的在tomcat中conf里面的server.xml,在Connector中加上
URIEncoding="UTF-8"

还是不行的在tomcat的bin目录下的catalina.bat加如下一条语句

set JAVA_OPTS=-Xms512m -Xmx1024m -XX:MaxPermSize=1024m -Dfile.encoding=UTF-8


项目结构

项目结构
  • 项目文件所在目录直接放项目资源文件
  • WEB-INF
    • classes中放servlet编译好的字节码文件
    • lib放中放使用的jar包
    • web.xml是配置文件,定义请求url和所访问的内容与Servlet间的映射关系,可以指定欢迎页面等

实战手工创建和打包第一个web工程

  • 首先准备好自己的web工程,我这里使用的是之前写的代码,传送门
  • 然后将整个项目文件放在webapps目录下
  • 启动tomcat服务器,通过浏览器正常访问
  • 将webapps中项目删除,控制台中进入项目目录
  • 输入命令
jar -cvf d:\xxx\xxx.war .
  • cvf是命令参数,表示生成一个文档、显示生成过程、指定生成的文件名,xxx为打包后要存放的路径和打包后的文件名,根据自己需求修改,注意,最后需输入一个空格在加一个’.’,代表打包该目录下所有文件。

解读tomcat核心源码

  • Tomcat的核心配置
    • tomcat的核心配置都在conf\server.xml文件中,其核心结构示意图如下图所示:
    • 一个server服务器可以有多个service服务,每个服务都是由engine引擎提供的,每个引擎中可以多台主机或者虚拟主机,如localhost和virtual host,localhost中又可以包含多个context应用,engine引擎通过connector连接器使得浏览器可以访问服务器。
  • Service.xml内容的解读
    • 源码图
    • 从源码图的代码结构中正好印证了上图的tomcat核心结构图,这里只有一个service服务,name为Catalina,
    • 有两个connector,第一个端口为8080,协议是HTTP/1.1,20000ms的延迟,重定向端口为8443,uri编码为utf-8,所以这也就是为什么是开头所说的通过浏览器访问http://localhost:8080的原因了,所以当8080端口被占用时,可以在此修改端口(注意,当应用上线时,必须将端口号 改为80,因为浏览器发出的HTTP请求的默认端口为80端口);第二个connector较为简单,就不分析了。
    • 同时,这个server服务器里有一个engine引擎,name为Catalina,默认端口就是localhost。
    • 接下来是非常重要的地方,请看下图,我们看到engine里面有一个host主机,name为localhost,appBase为webapps,看到这里我想大家也就明白了为什么之前要把项目文件放在webapps中了,再往下看,unpackWARs为true,这个属性的意思是自动解压war包,autoDeploy为true代表着当开启tomcat服务器项目就会自动部署上线,所以在这里可以根据实际生产需求去改变它。

创建虚拟目录

方法一:配置service.xml文件

  • 根据tomcat核心结构图,我们知道,只需要在host主机中添加一个context应用,指定他的path和docBase即可。
<Context path="/xxx", docBase="x:/xx/xx"/>
  • path:当前主机域名访问该应用的uri
  • docBase:当前应用目录所在的真实路径
  • 弊端:若采用修改service.xml方法创建虚拟目录,则每次修改都要重新启动tomcat服务器,对正在运行的项目会造成不可估量的影响。

方法二: 在localhost中添加配置

  • 每当我们启动tomcat时,他会默认的在我们的conf目录下生成一个名为Catalina的引擎,里面有名为localhost的主机,我们只需要在localhost中添加相关配置文件即可。
  • 需要注意的是, 添加的配置文件名字即为path,所以不需要再额外指定path路径,只需要指定docBase即可。最后只需要在浏览器中输入http://localhost:8080/xxx即可访问。
<Context, docBase="x:/xx/xx"/>
  • 使用该方法的优点是他会自动部署用户配置的文件,不需要重启tomcat服务器。

创建虚拟主机

域名解析服务DNS

  • DNS,Domain Name Service,域名解析服务,就是将域名与ip进行映射的服务,而提供这种服务的服务器叫做DNS服务器。
  • 之所以我们能通过域名localhost访问本机,是因为windows本身也可以作为DNS服务器,我们能通过http://localhost:8080/访问本机,正是因为在C:\Windows\System32\drivers\etc目录下的hosts文件中配置了域名和ip地址,请看:
#    localhost name resolution is handled within DNS  itself.
# 127.0.0.1       localhost
# ::1             localhost

虚拟主机的创建

  • 所以,创建虚拟主机,我们只需要在service.xml配置文件engine里面新增加一个host主机即可。
 <Engine name="Catalina" defaultHost="localhost">
<Host name="virtualHost"  appBase="newWebapps"
         unpackWARs="true" autoDeploy="true">
</Host>
 ......
 </Engine>
  • name:代表当前主机的域名,这里我们将它取为virtualHost,
  • appBase:代表该域名下的应用存放在哪个目录,这里我指定为newWebapps
  • 修改完service.xml配置文件后,重启tomcat服务器
  • 修改本地主机hosts文件后如下图(注意不要在前面加#):
  • 在浏览器中输入http://virtualHost:8080/xxx (xxx为你的项目文件,放在newWebapps中)
  • 浏览器会先对本机上hosts文件进行DNS解析,如果没有找到,则去网络服务商(联通、电信)公司提供的DNS服务器上寻找该域名,如果还没有找到则会去更高级的DNS服务器上寻找,直到找到该域名为止;如果找不到,则浏览器会提示“域名解析错误“
  • 思考,此时hosts文件中ip:127.0.0.1映射多个域名,当我们在浏览器中输入127.0.0.1:8080时,他会返回谁呢?
  • 其实这跟我们service.xml中的配置相关。
  • 请看这句代码:
<Engine name="Catalina" defaultHost="localhost">
  • 很显然这里引擎指定了默认主机为localhost,所以当你输入127.0.0.1:8080时,浏览器会默认返回主机为localhost中的contex应用内容。

ManagerApp

  • 当我们的项目非常多的时候,我们不可能一个一个的在浏览器地址栏输入项目名称去访问,这样会很麻烦,这时候就需要用到ManagerApp来把所有项目列出来了。
  • 第一步访问http://localhost:8080/,点击managerApp
  • 第二步输入用户名密码。用户名密码需要在 conf/tomcat-users.xml 中设置,添加以下代码即可。
<role rolename="manager-gui"/>
<user username="tomcat" password="s3cret" roles="manager-gui"/>
  • 其中不要修改
<role rolename="manager-gui"/>
  • 只需要修改username和password即可。
<user username="tomcat" password="s3cret" roles="manager-gui"/>
  • 最后重启tomcat,登录,即可看到当前localhost下所有的应用内容。

相关文章

  1. bilibili某视频教程
  2. Tomcat官网
赞(1) 打赏
未经允许不得转载:付振南Java博客 » tomcat学习笔记

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏