Tomcat

简介:

Tomcat目录层次结构                                                                 

 

1

Tomcat服务器端口的配置                                                           

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

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

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

Tomcat服务器虚拟目录的映射方式                                                  

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

1.虚拟目录的映射方式一:在server.xml文件的host元素中配置

找到server.xml文件的host元素,在<Host></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元素有两个属性,

  Ⅰ.path:用来配置虚似目录,必须以"/"开头。

  Ⅱ.docBase:配置此虚似目录对应着硬盘上的Web应用所在目录。

使用浏览器访问"/JavaWebApp"这个虚拟目录下的1.jsp这个web资源。1.jsp可以正常访问,这说明我们已经成功地将将在F盘下的JavaWebDemoProject这个JavaWeb应用映射到JavaWebApp这个虚拟目录上了,访问"/JavaWebApp/1.jsp"就相当于访问"F:\JavaWebDemoProject\1.jsp"

1

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

2.虚拟目录的映射方式二:让tomcat服务器自动映射

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

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

11

3.虚拟目录的映射方式三

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="F:\JavaWebDemoProject" />

downloaddownload

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

使用这种方式映射虚拟目录的最大好处是修改了配置文件后不用重启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服务器配置一个虚拟主机(网站),需要修改conf文件夹下的server.xml这个配置文件,使用Host元素进行配置,打开server.xml,可以看到Tomcat服务器自带的一个名称为localhost的虚拟主机(网站):

 

download

平时我们将开发好的JavaWeb应用放到webapps文件夹下,然后就可以使用"http://localhost:端口号/JavaWebAppName"的方式去访问了,其实访问的就是name是"localhost"的那台虚拟主机(Host),这台虚拟主机管理webapps文件夹下的所有web应用。

例如:http://localhost:8080/JavaWebDemoProject/1.jsp,这个URL地址访问的就是名称是localhost的那台虚拟主机下的JavaWebDemoProject这个应用里面的1.jsp这个web资源。

 

<Host name="www.yydcdut.com" appBase="F:\JavaWebApps">
    
 </Host>

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

JavaWeb应用的组成结构                                                            

download

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

    ┝WEB-INF:此文件夹必须位于WebRoot文件夹里面,而且必须以这样的形式去命名,字母都要大写。

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

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

复制代码
<?xml version="1.0" encoding="ISO-8859-1"?>
 <web-app xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  version="2.5">
    <display-name>Welcome to Tomcat</display-name>
   <description>
      Welcome to Tomcat
   </description>
 </web-app>
复制代码

打包JavaWeb应用                                                                    

在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,范例:将JavaWebDemoProject这个JavaWeb应用打包成war包

download

执行完之后,就可以得到一个war文件,平时开发完JavaWeb应用后,一般都会将JavaWeb应用打包成一个war包,然后将这个war包放到Tomcat服务器的webapps目录下,当Tomcat服务器启动时,就会自动将webapps目录下的war包解压。

比如现在将war文件放到放到Tomcat服务器的webapps目录下,Tomcat服务器启动后会自动"Deploying web application",将这个war文件解压缩。

Tomcat的体系结构                                                                   

download

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

 

 

 

 

复制代码
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" 
               keystoreFile="conf/.keystore" keystorePass="123456"/>
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">

      <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>
      <Host name="www.gacl.cn" appBase="F:\JavaWebApps">
        <Context path="" docBase="F:\JavaWebApps\JavaWebDemo1"/>
      </Host>

    </Engine>
  </Service>
</Server>
复制代码

生成Tomcat服务器的数字证书                                                       

SUN公司提供了制作证书的工具keytool, 在JDK 1.4以后的版本中都包含了这一工具,它的位置为<JAVA_HOME>\bin\keytool.exe

keytool -genkey -alias tomcat -keyalg RSA

使用keytool生成一个名字为tomcat的证书,存放在.keystore这个密钥库中

download

命令执行完之后,操作系统的用户文件夹下面就会生成一个.keystore文件。

使用命令:keytool -list -keystore .keystore查看.keystore密钥库里面的所有证书

download

配置https连接器                                                                      

将生成的.keystore密钥库文件拷贝到Tomcat服务器的conf目录下,修改server.xml文件,配置https连接器,代码如下:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
                maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
                clientAuth="false" sslProtocol="TLS" 
                keystoreFile="conf/.keystore" keystorePass="123456"/>

在server.xml文件中配置了一个端口是8443的加密连接器,浏览器访问8443端口的连接器时,将会以加密的方式来访问web服务器,这个连接器收到浏览器的请求后,将会向浏览器出示一份数字证书,浏览器再用数字证书里面的公钥来加密数据,keystoreFile="conf/.keystore" 用来指明密钥库文件的所在路径,服务器从密钥库中提取证书时需要密码,keystorePass="123456"指明密钥库的访问密码。

使用"https://localhost:8443/"访问8443的加密连接器

由于密钥库里面的证书是我们手工生成的,没有经过CA的认证,所以使用"https://localhost:8443/"访问8443的加密连接器,浏览器会出现"证书错误,导航已阻止",浏览器认为当前要访问的这个主机是不安全的,不推荐继续访问,点击“继续浏览此网站(不推荐)”就可以继续访问了,如下图所示:

downloaddownload

我是天王盖地虎的分割线                                                             

 

 




本文转自我爱物联网博客园博客,原文链接:http://www.cnblogs.com/yydcdut/p/3911356.html,如需转载请自行联系原作者

相关文章
|
2天前
|
安全 应用服务中间件 数据库连接
Tomcat详解
Tomcat详解
7 1
|
2月前
|
网络协议 Java 应用服务中间件
什么是tomcat?tomcat是干什么用的?
什么是tomcat?tomcat是干什么用的?
|
6月前
|
XML Java 应用服务中间件
Tomcat使用总结
Tomcat使用总结
44 0
|
8月前
|
Java 应用服务中间件 容器
tomcat
tomcat
64 0
|
8月前
|
网络协议 Java 应用服务中间件
你还在用tomcat ?out了
Netty作为高性能服务器讲解
|
9月前
|
Java 应用服务中间件
Tomcat2
Tomcat2
52 0
|
缓存 NoSQL 数据可视化
|
Java 应用服务中间件 容器
Tomcat
封装HTTP协议操作,简化开发可以将web项目部署到服务器中,对外提供网上浏览服务
56 0
Tomcat
|
应用服务中间件
Tomcat 介绍与使用
Tomcat 介绍与使用
100 0
Tomcat 介绍与使用
|
XML Java 应用服务中间件
Tomcat就是这么简单(下)
Tomcat简单的说就是一个运行JAVA的网络服务器,底层是Socket的一个程序,它也是JSP和Serlvet的一个容器。
190 0
Tomcat就是这么简单(下)

热门文章

最新文章