【WEB】TOMCAT介绍

TOMCAT

基本操作

  • 查看版本:进入Library - Tomcat - bin目录,输入 sh version.sh,查看Server number: 9.0.13.0
  • 打开:进入Library - Tomcat - bin目录,输入 ./startup.sh (若Permission denied,赋予超级管理员权限sudo chmod 755 *.sh,再次./startup.sh
  • 查看:浏览器输入 http://localhost:8080/
  • 关闭:进入Library - Tomcat - bin目录,输入 ./shutdown.sh
  • 于IDEA上配置:Finder栏 - Run - Edit Configuration;左上角点击添加"+" - Tomcat Server - Local;第一步,输入配置的Tomcat的Name,第二步,点击配置Tomcat:Configuration,第三步,在弹出的Application Servers中配置Tomcat Home(Library - Tomcat)和Library( - bin);Apply。

介绍

  • 是由 Apache 开发的一个Servlet 容器,实现了对 Servlet 和 JSP 的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。他可以运行你按照J2EE中的Servlet规范编写好的Java程序。
  • 简单的说它是一个Web网站的运行容器,把你写好的网站放进去就可以运行。
  • 由于 Tomcat 本身也内含了一个 HTTP 服务器,它也可以被视作一个单独的 Web 服务器。但是,不能将 Tomcat 和 Apache HTTP 服务器混淆,Apache HTTP 服务器是一个用 C 语言实现的 HTTP Web 服务器;这两个 HTTP web server 不是捆绑在一起的。Tomcat 包含了一个配置管理工具,也可以通过编辑XML格式的配置文件来进行配置。
  • Apache只支持静态网页html,tomcat支持jsp动态网页。
  • Tomcat是应用(java)服务器,它只是一个servlet容器,是Apache的扩展,处理动态网页部分。

安装

  • 下载:官网有压缩包 https://tomcat.apache.org/download-90.cgi ,下载解压放入电脑盘(建议Library)(为求方便,此时把文件名改成了"Tomcat");
  • 配置:设置文件的读写执行权限。打开Ter输入 sudo chmod 755 /Library/Tomcat/bin/*.sh 回车(这里需要输入管理员密码);(sudo为系统超级管理员;755 代表用户对该文件拥有读,写,执行的权限;同组其他人员拥有执行和读的权限,没有写的权限,其他用户的权限和同组人员权限一样;777代表,user,group ,others ,都有读写和可执行权限。)

在这里插入图片描述

Tomcat - logs - CATALINA

logs文件夹存放Tomcat 的日志文件,打开logs文件夹,可以看到里面的log文件,其中有一个以"catalina.yyyy-MM-dd.log"形式命名的log文件,例如"catalina.2014-05-17.log"日志文件就是记录Tomcat服务器2014-05-17这一天的运行情况。
在这里插入图片描述

在这里插入图片描述

日志信息里面清楚的记录了Tomcat服务器的运行情况,如果因为8080端口被占用而无法正常启动,就会记录如上图所示的异常信息,通过查看异常信息,我们就可知道Tomcat服务器为什么不能够正常启动了!

总结:当Tomcat服务器无法正常启动时,首先检查是否配置了JAVA_HOME环境变量,然后再检查Tomcat服务器启动时的端口是否被别的应用程序占用了。

TOMCAT 伺服器端口的配置

TOMCAT - conf - servel.xml

Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件
如果想修改Tomcat服务器的启动端口,则可以在server.xml配置文件中的Connector节点进行的端口修改

在这里插入图片描述

例如:将Tomcat服务器的启动端口由默认的8080改成8081端口

  • BEFORE
    <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
  • AFTER
    <Connector port="8081" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />

这样就把原来默认Tomcat默认的的8080端口改成了8081端口了;
需要注意的是,一旦服务器中的*.xml文件改变了,则Tomcat服务器就必须重新启动,重新启动之后将重新读取新的配置信息。因为已经在server.xml文件中将Tomcat的启动端口修改成了8081,所以Tomcat服务器启动时就以8081端口启动了,如下图所示:(WIN例子)
在这里插入图片描述

访问Tomcat服务器也必须以新的访问端口去访问:http://localhost:8081/

TOMCAT 伺服器虚拟目录的映射方式(3种)

  • Web应用开发好后,若想供外界访问,需要把web应用所在目录交给web伺服器管理,这个过程称之为虚似目录的映射

  • 1.在server.xml文件的host元素中配置

  • 2.让TOMCAT服务器自动映射

  • 3.在/conf/Catalina/localhost下自主添加.xml文件

1.在server.xml文件的host元素中配置

  • 找到server.xml文件的host元素,如下图所示:
    在这里插入图片描述
    在这对标签加上<Context path="/JavaWebApp" docBase="F:\JavaWebDemoProject" />即可将在F盘下的JavaWebDemoProject这个JavaWeb应用映射到JavaWebApp这个虚拟目录上,JavaWebApp这个虚拟目录是由Tomcat服务器管理的,JavaWebApp是一个硬盘上不存在的目录,是我们自己随便写的一个目录,也就是虚拟的一个目录,所以称之为"虚拟目录",代码如下:
<Host name="localhost"  appBase="webapps"
             unpackWARs="true" autoDeploy="true"
             xmlValidation="false" xmlNamespaceAware="false">

         <Context path="/JavaWebApp" docBase="F:\JavaWebDemoProject" />
 </Host>

其中,Context表示上下文,代表的就是一个JavaWeb应用,Context元素有两个属性,

  • 1.path:用来配置虚似目录,必须以"/"开头。
  • 2.docBase:配置此虚似目录对应着硬盘上的Web应用所在目录。
    使用浏览器课访问"/JavaWebApp"这个虚拟目录下的1.jsp这个web资源

注意:在Tomcat6之后中,不再建议在server.xml文件中使用配置context元素的方式来添加虚拟目录的映射,因为每次修改server.xml文件后,Tomcat服务器就必须要重新启动后才能重新加载server.xml文件。在Tomcat服务器的文档http://localhost:8080/docs/config/context.html中有这样的说明:

It is NOT recommended to place elements directly in the server.xml file. This is because it makes modifying the Context configuration more invasive since the main conf/server.xml file cannot be reloaded without restarting Tomcat.

2.让TOMCAT服务器自动映射

tomcat服务器会自动管理webapps目录下的所有web应用,并把它映射成虚似目录。换句话说,tomcat服务器webapps目录中的web应用,外界可以直接访问。

例如:

  • 把电脑中的JavaWebDemoProject这个JavaWeb应用直接copy到tomcat服务器webapps目录中;
  • 此时Tomcat服务器就会自动为JavaWebDemoProject这个JavaWeb应用映射一个同名的虚拟目录"/JavaWebDemoProject",然后就可以使用浏览器访问这个JavaWeb应用的资源了。例如 http://localhost:8080/JavaWebDemoProject/1.jsp

3.在/conf/Catalina/localhost下自主添加.xml文件

参考Tomcat服务器文档:

In individual files (with a “.xml” extension) in the
$CATALINA_BASE/conf/[enginename]/[hostname]/ directory. The context
path and version will be derived from the base name of the file (the
file name less the .xml extension). This file will always take
precedence over any context.xml file packaged in the web application’s
META-INF directory.

意思就是:在tomcat服务器的\conf\Catalina\localhost目录下添加一个以xml作为扩展名的文件,xml文件的名字可以任意取,比如取名为aa.xml;
注意这一句话"The context path and version will be derived from the base name of the file",这一句话的意思翻译过来就是"context元素的path属性源自于是这个xml文件的名字",上面提到过,Context元素的path属性是用来配置虚似目录的名称的,所以虚似目录的名称就是这个xml文件的名称。

$CATALINA_BASE指的就是tomcat服务器根目录,[enginename]指的是Tomcat服务器使用的引擎名称,Tomcat使用的引擎是Catalina;

在aa.xml文件中添加Context元素映射JavaWeb应用,代码如下:

<Context docBase="xxx:\JavaWebDemoProject" />

注意:在Context元素中并没有指明path属性来设置虚拟目录的名称,那么"F:\JavaWebDemoProject"映射的虚拟目录名称是神马呢,就是当前正在编辑的这个xml文件的名称aa。

使用这种方式映射虚拟目录的最大好处是修改了配置文件后不用重启Tomcat服务器,比如将aa.xml修改成bb.xml,Tomcat服务器会自动Undeploying context [/aa],然后自动信息: Deploying configuration descriptor D:\apache-tomcat-7.0.53\conf\Catalina\localhost\bb.xml

Tomcat服务器配置虚似主机(即配置一个网站)

在Tomcat服务器配置一个虚拟主机(网站),需要修改/Library/Tomcat/conf/server.xml这个配置文件,其中可以看到Tomcat服务器自带的一个名称为localhost的虚拟主机(网站),上文中已展示图片,使用<Host>...</Host>元素进行配置。

平时我们将开发好的JavaWeb应用放到webapps文件夹下,然后就可以使用http://localhost:端口号/JavaWebAppName的方式去访问了。

同样的,我们可以使用如下的方式配置一个虚拟主机,例如:

<Host name="www.gacl.cn" appBase="/xxx/JavaWebApps">
      
</Host>

这里我们新配置一个虚拟主机,虚拟主机的name是"www.gacl.cn",虚拟主机"www.gacl.cn"现在管理着JavaWebApps文件夹下的所有web应用。
平时我们在互联网上使用域名"www.baidu.com"访问百度时,其实就是在访问一个名称是"www.baidu.com"的虚拟主机,所以当我们要访问name是"www.gacl.cn"的这个虚拟主机时,就可以使用"域名(www.gacl.cn)"去访问。
注意:appBase="/xxx/JavaWebApps",这里的JavaWebApps文件夹代表的不是一个项目的根目录,而是一个存放了一个或者多个JavaWeb应用的文件夹

通过hosts在系统中注册域名

编辑这个文件,将新添加的网站的域名和IP地址绑定在一起,这样我们就可以在浏览器中使用www.gacl.cn这个域名去访问name是www.gacl.cn那个虚拟主机里面管理的那些web应用了
编辑hosts方法:command+shift+G - 输入/private/etc/hosts - 启用editor编辑;
在这里插入图片描述
使用浏览器通过域名"www.gacl.cn"访问"www.gacl.cn"这个虚拟主机下的JavaWebDemo1这个web应用下的1.jsp这个web资源,"www.gacl.cn"这个虚拟主机开放了一个8080端口,用户只能通过这个8080端口去访问JavaWebDemo1这个web应用下的1.jsp这个web资源。
例如:

浏览器与服务器交互的过程

浏览器与服务器交互图
在这里插入图片描述

  • 服务器发送回来的数据:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 102
Date: Mon, 19 May 2014 14:25:14 GMT

<html>
    <head>
        <title>JavaWebDemo1</title>
    </head>
    <body>
        JavaWebDemo1

    </body>
</html>

JavaWeb应用的组成结构

开发JavaWeb应用时,不同类型的文件有严格的存放规则,否则不仅可能会使web应用无法访问,还会导致web服务器启动报错.
在这里插入图片描述

WebRoot :Web应用所在目录,一般情况下虚拟目录要配置到此文件夹当中。

WEB-INF:此文件夹必须位于WebRoot文件夹里,而且必须字母都要大写

web.xml:配置文件,有格式要求,此文件必须以这样的形式去命名,并且必须放置到WEB-INF文件夹中。

web.xml的格式可以直接从Tomcat中参考得到:找到Tomcat目录下的webapps\ROOT\WEB-INF这个目录下的web.xml文件,把这个文件拷贝到我们新建的WEB-INF文件夹中,并修改这个web.xml文件,把里面的注释删除掉,只留下如下所示的代码即可。

Tomcat的体系结构

Tomcat服务器的启动是基于一个server.xml文件的。
Tomcat启动的时候首先会启动一个Server,Server里面就会启动Service,Service里面就会启动多个Connector,每一个连接器都在等待客户机的连接,当有用户使用浏览器去访问服务器上面的web资源时,首先是连接到Connector,Connector是不处理用户的请求的,而是将用户的请求交给一个Engine去处理**(Engine首先对接Client的请求)**,Engine接收到请求后就会解析用户想要访问的Host,然后将请求交给相应的Host,Host收到请求后就会解析出用户想要访问这个Host下面的哪一个Web应用,一个web应用对应一个Context。

参考博客:
http://www.cnblogs.com/xdp-gacl/p/3729033.html
https://www.cnblogs.com/xdp-gacl/p/3744053.html

猜你喜欢

转载自blog.csdn.net/weixin_42915286/article/details/84108532