首页 > 技术文章 > Tomcat简单学习

LucasBlog 2020-04-11 20:53 原文

一.Tomcat简介

​ Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器[来自百度百科https://baike.baidu.com/item/Tomcat]

​ Tomcat是免费的,开源的web应用服务器,中小型的JavaEE服务器。

​ Tomcat简单的说就是一个能运行Java的服务器,底层就是Socket网络通信程序,里面有容器,能跑JSP和Servlet。

二.Tomcat安装和使用

  1. 下载:http://tomcat.apache.org/

  2. 安装

    在window系统中,下载得到压缩包,只需要解压压缩包就好了。

    安装目录最好不要有中文和空格。

  3. 卸载

    直接删除解压后的目录。

  4. Tomcat使用

    • 启动

      进入Tomcat目录下,bin目录下的startup.bat,双击运行即可。

      Tomcat启动成功界面如下:

      tomcat-startup.png

      打开浏览器,输入http://localhost:8080,如果能出现Tomcat界面(如下图),则说明Tomcat启动成了。

      tomcat.png

    • 关闭

      正常关闭Tomcat服务器,只要打开Tomcat目录下的bin目录,双击shutdown.bat;或者使用ctrl+c

      如果是直接点击startup窗口的X来关闭,不属于正常关闭的。虽然也可以关闭,但是属于强制关闭。

  5. Tomcat启动可能遇到的问题

    前面讲了Tomcat的启动,是比较顺利的,但也不是一定就能顺利启动的,总会有些问题发生。可能遇到以下问题,做个记录:

    • 双击startup.bat,黑窗口一闪而过

      这种情况是因为Tomcat其实也是JAVA写的,也依赖jdk,因为没有正确的配置JAVA_HOME环境变量导致。

      解决方法:正确配置JAVA_HOME环境变量

    • 启动报错(大概率是端口问题)

      1. 可以通过找到占用的端口,并找到对应的进程,直接杀死进程。

        在cmd窗口中输入netstat -ano,看看谁占用了8080端口(Tomcat默认端口是8080),然后根据进程号,关闭这个进程

      2. 也可以通过修改Tomcat的配置,把端口号改掉。

        进入Tomcat主目录,打开conf下的server.xml文件,将端口号8080修改成其他的

        Connector port="8888" protocol="HTTP/1.1"
                       connectionTimeout="20000"
                       redirectPort="8443" />
        

        一般我们会吧tomcat的默认端口号改为80,80端口是http的默认端口,这样的好处就是在浏览器访问时候不需要输入端口号,比如访问tomcat,使用http://localhost就可以了。

三.Tomcat目录结构

Tomcat的目录结构如下图所示:

tomcat-tree.png

目录简单介绍:

  • bin

    存放windows或linux平台上启动和关闭tomcat的脚本文件。

  • conf

    存放tomcat服务器的各种配置文件,主要关注server.xmlweb.xml

  • lib

    存放tomcat服务器以及所有web应用都可以访问的jar文件

  • logs

    存放tomcat执行时的日志文件

  • temp

    存放tomcat运行时的临时文件

  • webapps

    tomcat的web发布目录,外部访问的web应用都放在这个文件夹中

  • work

    存放jsp编译后生成的对应的serverlet文件和.class文件

四.Tomcat部署项目

​ webapps目录是tomcat用来部署应用的,将我们的web应用放到这个目录下,我们的应用就会管理起来了。

​ 以下以例子来说明。

例子:在webapps下创建一个web应用HelloWorld,在HelloWorld目录下创建一个index.html,然后访问index.html。

index.html文件内容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HelloWorld</title>
</head>
<body>
    HelloWorld 你好!
</body>
</html>

启动Tomcat,访问:http://localhost:8080/HelloWorld/index.html,如下

tomcat-helloworld.png

如果我们想将index.html设置为HelloWorld站点的首页,就需要编辑web.xml文件了。

可以如下操作:

在HelloWorld目录下新建一个目录WEB-INF(名字就得叫这个),在WEB-INF中创建一个web.xml(如果web.xml不会写,可以从其他web应用中复制一份过来,复制webapps/ROOT/WEB-INF/web.xml)

然后在web.xml中添加以下内容:

<welcome-file-list>         
    <welcome-file>
    	index.html
    </welcome-file>
</welcome-file-list>

重新启动tomcat,直接访问:http://localhost:8080/HelloWorld,效果如下图

tomcat-helloworld1.png

五.Javaweb项目web目录结构

Javaweb项目部署的web目录结构是这样子的:

tomcat-webtree.png

六.Tomcat虚拟目录配置

​ 默认情况下,只有webapps目录中web应用目录才会被Tomcat当用一个web应用管理,但这样一来所有web项目都必须放在webapps目录下,如果太多项目放一起,可能造成磁盘空间不足等问题,也不是很方便web项目的管理,所以需要重新配置tomcat的虚拟目录,虚拟目录就访问web应用时候的根目录。比如上述例子中http://localhost:8080/HelloWorld,/HelloWorld就是虚拟目录,只是他与项目名字一样。

​ 有两种方式配置虚拟目录:

  • 配置conf/server.xml文件

    在server.xml文件中添加以下内容:

    <Context path="/Helloworld1" docBase="E:\Helloworld1"/>

    其中,path表示访问时输入的web项目名(虚拟目录,可以随意),docBase表示项目的绝对路径

    例子:

    1. 在E盘下创建目录Helloworld1目录,在Helloworld1目录中创建一个WEB-INF目录和hello.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <h1>你好,我是Helloworld1</h1>
    </body>
    </html>
    
    1. 打开tomcat目录下的conf目录,编辑里面的server.xml

      添加<Context path="/haha" docBase="E:\Helloworld1"/>

      tomcat-serverxml.png

    2. 启动tomcat,访问站点:http://localhost:8080/haha/hello.html,结果如下图

      tomcat-vitural-dir.png

  • conf/Catalina/localhost创建任意名称的xml文件

    第二种方法就是进入到tomcat根目录下,在conf/Catalina/localhost目录下创建一个xml文件,这个xml文件的名字就是站点的虚拟目录名字,这个xml文件内容为:

    <Context docBase="E:\Helloworld2"/>

    例子:

    1. 在E盘下创建目录Helloworld2目录,在Helloworld2目录中创建一个WEB-INF目录和hello.html

      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Document</title>
      </head>
      <body>
          <h1>你好,我是Helloworld2</h1>
      </body>
      </html>
      
    2. 在tomcat根目录下的conf/Catalina/localhost目录下创建一个XML文件,命名为hehe

    3. 在hehe.xml文件中写入以下内容

      <?xml version="1.0" encoding="UTF-8" ?>
      <Context docBase="E:\Helloworld2" />
      
    4. 启动tomcat,访问站点:http://localhost:8080/hehe/hello.html,结果如下图

      tomcat-vitural-dir2.png

推荐阅读