tomcat基本使用

img

什么是Web服务器

web服务器的定义

其实并没有标准定义,一般认为Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。

img

Web服务器的特点

  • 服务器是一种被动程序:只有当Internet上运行其他计算机中的浏览器发出的请求时,服务器才会响应。
  • 服务器一般使用HTTP(超文本传输协议)与客户机浏览器进行信息交流,这就是人们常把它们称为HTTP服务器的原因。
  • Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息的基础上运行脚本和程序

什么是tomcat

tomcat是由Apache软件基金会属下Jakarta项目开发的Servlet容器,是开发和调试JSP程序的首选,实现了对Servlet和JavaServer Page的支持,并提供Web服务器的一些特有功能。

tomcat是一款开源轻量级Web应用服务器,是一款优秀的Servlet容器实现。

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。

Servlet严格来讲是指Java语言实现的一个接口,一般情况下我们说的Servlet是指任何实现了这个Servlet接口的类。

  • 实例化并调用init()方法初始化该 Servlet,一般 Servlet 只初始化一次(只有一个对象)
  • service()(根据请求方法不同调用doGet() 或者 doPost(),此外还有doHead()、doPut()、doTrace()、doDelete()、doOptions()、destroy())。
  • 当 Server 不再需要 Servlet 时(一般当 Server 关闭时),Server 调用 Servlet 的 destroy() 方法。

    简单总结下,tomcat是一个中间件,在B/S架构中,浏览器发出的http请求经过tomcat中间件,转发到最终的目的服务器上,响应消息再通过tomcat返回给浏览器。

    tomcat所做的事情主要有:开启监听端口监听用户的请求,解析用户发来的http请求然后访问到你指定的应用系统,然后你返回的页面经过tomcat返回给用户。

Apache,Nginx和tomcat的区别

  • Apache全称是 Apache Http Server Project, tomcat全称是 Apache tomcat。
  • Apache和 Nginx用于处理静态资源, tomcat用来处理动态资源。
  • Apache和Nginx相比,Nginx适合做前端服务器,适合做负载均衡。

一般情况下,使用的时候,都是 Apache+tomcat一起使用或者 Nginx+tomcat一起使用。

典型的Servlet的处理流程

  1. 第一个到达服务器的HTTP请求被委派到Servlet容器。
  2. Servlet容器在调用service()方法之前加载Servlet。
  3. 然后Servlet容器处理由多个线程产生的多个请求,每个线程执行一个单一的Servlet实例的service()方法。

tomcat版本介绍

tomcat版本 6 7 8 8.5 9
JDK ≥5.0 ≥6.0 ≥7.0 ≥7.0 ≥8.0
Servlet 2.5 3 3.1 3.1 4
JSP 2.1 2.2 2.3 2.3 2.3
EL 2.1 2.2 3 3 3
WebScoket N/A 1.1 1.1 1.1 1.1

Servlet规范

Servlet 2.X

项目目录结构必须要有WEB-INF,web.xml等文件夹和文件,在web.xml中配置servlet,filter,listener,以web.xml为java web项目的统一入口。

Servlet 3.x

项目中可以不需要WEB-INF,web.xml等文件夹和文件,在没有web.xml文件的情况下,通过注解实现servlet,filter,listener的声明,当使用注解时,容器自动进行扫描。

8.5版本特点

tomcat8.5进行了大量的代码重构,对比与7.0的版本,也符合tomcat未来的代码架构体系。但是tomcat的核心和主体架构还是一直保持这样的。

  • 支持Servlet3.1
  • 默认采用NIO,移除BIO
  • 支持NIO2(AIO)
  • 支持HTTP/2协议
  • 默认采用异步日志处理

    为什么要使用8.5的版本,首先这个版本比较新,因为太老的版本比如6.0的版本Servlet不支持3所以会导致部署SpringBoot等项目有问题,同时这个版本是在9.0出现以后发布的一个中间版本,主体架构延续8.0,同时又实现了部分9.0的新特性。

tomcat启动

tomcat 下载

tomcat下载地址:https://tomcat.apache.org/download-80.cgi

img

一般启动

startup.bat 启动 tomcat

  1. 通常下载解压版即可,解压后可以直接使用,安装版使用不灵活。
  2. 直接到 %tomcat_HOME%/bin 目录下面运行 startup.bat ( linux 中是 startup.sh )文件即可开启 tomcat,默认端口 8080,浏览器输入 localhost:8080 即可访问。
  3. 这样做的好处是能直接从窗口中实时的看到项目中所有输出的内容,以及抛出的异常与错误等,适合于调试阶段
  4. Windws 系统中可以将 startup.bat 创建快捷方式,然后放到启动文件夹中,这样就会开机自起。

img

启动日志如下

img

启动成功可以访问到的tomcat首页 http://localhost:8080/

img

为什么有这个默认首页:tomcat“买一送一”的思想。默认tomcat启动后加载webapps中的项目

img

IDEA中启动

IDEA中配置tomcat
  1. 点击Run—EDit Configurations…

img

  1. 点击左侧“+”号,找到tomcat Server—Local

若是没有找到tomcat Server 可以点击最后一行 34 items more

img

  1. 在tomcat Server -> Unnamed -> Server -> Application server项目下,点击 Configuration ,找到本地 tomcat 服务器,再点击 OK按钮。

img

IDEA发布项目
  1. 点击Deployment选项卡配置需要发布的服务

img

  1. 选择需要发布的war

img

  1. 然后点击ok就可以了

img

  1. 运行项目

img

  1. 然后就可以通过浏览器访问页面了

img

嵌入式启动

SpringBoot中一个main方法嵌入式启动tomcat

@SpringBootApplication
@Import(MybatisConfig.class)
public class AdminApplication {
    //相当于启动了tomcat的8080端口
    public static void main(String[] args) {
        SpringApplication.run(AdminApplication.class, args);
    }
}

img

tomcat关闭

第一种:Ctrl+C键 关闭tomcat服务器
第二种:点击tomcat窗口的右上角关闭按钮 (暴力停止服务器)
第三种:找到tomcat目录/bin/shutdown.bat文件,双击执行关闭tomcat。

tomcat项目部署

隐式部署

直接丢文件夹、war、jar到webapps目录,tomcat会根据文件夹名称自动生成虚拟路径,简单,但是需要重启tomcat服务器,包括要修改端口和访问路径的也需要重启。

显式部署

添加context元素

在tomcat的conf目录下的server.xml中的Host加入一个Context(指定路径和文件地址)

<Context path="/test" docBase="D:/work/spring_mvc_test.war" />

img

即/test这个虚拟路径映射到了D:/work/spring_mvc_test目录下(war会解压成文件),修改完servler.xml需要重启tomcat 服务器。

创建xml文件

在tomcat的conf/Catalina/localhost中创建xml文件,访问路径为文件名

在localhost目录下新建demo.xml

<Context docBase="D:/work/spring_mvc_test" />

不需要写path,虚拟目录就是文件名demo,path默认为/demo,添加demo.xml不需要重启 tomcat服务器。

三种方式比较

  • 隐式部署:可以很快部署,需要人手动移动Web应用到webapps下,在实际操作中不是很人性化
  • 添加context元素 : 配置速度快,需要配置两个路径,如果path为空字符串,则为缺省配置,每次修改server.xml文件后都要重新启动tomcat服务器,重新部署.
  • 创建xml文件:服务器后台会自动部署,修改一次后台部署一次,不用重复启动tomcat服务器,该方式显得更为智能化。