Tomcat服务器

Posted 静静大人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tomcat服务器相关的知识,希望对你有一定的参考价值。

Tomcat学习笔记

1. Tomcat的下载

1.1 点击跳转到Tomcat官方网站

1.2 Tomcat的启动与关闭

2. Tomcat的文件目录结构

  • bin 用于存放Tomcat服务器的可执行程序
  • conf 用于存放Tomcat服务器的配置文件
  • lib 用于存放Tomcat服务器的jar包
  • logs 用于存放Tomcat运行时输出的日志信息
  • temp 用于存放Tomcat运行时产生的临时数据
  • webapps 用于存放部署的Web工程;-- 后续Servlet会用到【非常重要】
  • work 用于存放Tomcat运行时jsp翻译为Servlet的源码

2.1 可能存在的问题

  1. Java环境没有配置;
  2. 闪退问题:需要配置兼容性;
  3. 乱码问题:配置文件中设置。

2.2 conf配置文件

  • server.xml可自定义部分

    <Connector port="8081" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
    -- port: 默认的访问端口。例:http://localhost:8080/
    -- protocol:代表http通信协议版本
    
    <Engine name="Catalina" defaultHost="localhost">
          <Realm className="org.apache.catalina.realm.LockOutRealm">
            <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                   resourceName="UserDatabase"/>
          </Realm>
    		<!--name代表访问ip,appBase代表指定的网站访问路径,
    		unpackWARs代表是否会自动解压war包,autoDeploy代表是否自动发布-->
          <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="true">
            <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
                   prefix="localhost_access_log" suffix=".txt"
                   pattern="%h %l %u %t &quot;%r&quot; %s %b" />
          </Host>
        </Engine>
    
  • server.xml文件架构图

1. Server可以有多个service服务; service可以有多个connector;Engine中也可以有多个host,包括一个本地主机localhost和多个虚拟主机;
2. 浏览器使用service中的connector来建立连接;
3. 使用service中的engine来提供具体的服务.

2.3 webapps应用文件夹

  • 图中每一个文件夹代表一个应用,总共有5个应用;

    作用: webapps主要用来存放应用程序的.当tomcat启动时回去加载webapps下目录下的应用程序,因此,可以文件夹\\war包\\jar包发布应用.

  • root目录: 是tomcat默认的启动目录,tomcat的官网首页相关文件就存放在root目录中.

  • 问题1:那Tomcat是如何加载webapps下的应用呢?即加载顺序

    答:Tomcat加载应用时,即为部署web服务。

    -- 1.1 拷贝war包或web应用文件夹到webapps目录下

    **问题1.1 **:部署的项目到底放在webapps目录下还是root目录下?或者说两者的区别

    答:都可以。不过两者之间存在细微的差别。

    区别:

    1. webapps目录下:将项目名.war包直接放在webapps目录下,Tomcat加载时,会自动解压,并创建一个项目名.war文件目录。例:nowcoder.war

    2. webapps目录下:访问测试:localhost:8080/nowcoder/文件名
      
    3. root目录下:不能将war包或war包解压后的整个压缩文件放进去,应该将解压文件夹里的文件放到root目录下

    4. root目录下:访问测试:localhost:8080/文件名
      -- 相比于webapps目录下,去掉了**项目名**
      
    5. 总结:Tomcat服务器启动时,会先去webapps目录下找项目。如果找到项目,则显示出来;否则,去Root目录下寻找项目。

      注意:Root目录下只能存放一个项目;webapps下可以存放多个项目文件,然后根据项目名去寻找

    问题1.2:如何修改默认Root目录?

    答:打开conf文件夹下的server.xml文件。

    <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="true">
    <!--添加一行-->
    <Context path=”" docBase=”zhangsan” debug=”0″ reloadable=”true” />
    <!--注释-->
    重启Tomcat后,会默认加载zhangsan目录下的文件。
    

3. 如何自定义访问网站

3.1 为什么访问8080会出现相应界面?是否可以更改

答:因端口和主机名的配置。可以进行更改。

3.2 修改访问端口

-- 8080代表默认的访问端口,可以进行修改。若修改成8081端口,8080将无法访问,只有8081可以访问

3.3 修改主机名称

hosts文件存放域名与主机的映射地址,如若修改主机名称,需要同时修改hosts文件的内容

4.高难度面试题

输入一个ip地址后,网站是如何进行访问的?

  1. 输入一个域名:回车;
  2. 检查本机的C:\\Windows\\System32\\drivers\\etc\\hosts配置文件下有没有这个域名 映射;
    1. 有:直接返回对应的ip地址,这个地址中,有我们需要访问的web程序,可以直接访问
    2. 没有:去DNS服务器寻找,找到的话就返回,找不到就返回找不到。

5. 如何发布一个web网站?

-- 将自己写的网站,放到服务器(Tomcat)指定的web应用的文件夹(webapps)下,(即可以复制 root的文件结构)

  • **★★网站应该有的结构****:【后续java项目结构基于此】

    -webapps:Tomcat服务器的web目录
        -- Root
        -- kuangstudy: 网站的目录名
            -- WEB-INF
                -classes: java程序
                -lib: web应用所依赖的jar包
                -web.xml: 网站配置文件
            -- index.html 默认的首页
            - static 静态文件资源目录
                - css
                    -style.css
                - js
                - img
           - .......             
    

以上是关于Tomcat服务器的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat根据JSP生成Servlet机制解析

jsp页面被tomcat引擎运行的时候组装成java片段,但是这些java片段怎么没有main方法作为程序的入口啊?

找到多个名为 [spring_web] 的片段。这对于相对排序是不合法的

代码片段 - Golang 实现简单的 Web 服务器

markdown 在Intel Nuc上设置Ubuntu Web服务器,步骤和代码片段

从片段调用 Google Play 游戏服务