Tomcat详解

 WEB概述及Tomcat详解
一.WEB概述
Internet上供外界访问的Web资源分为:
静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变。
动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。

常用的静态资源开发技术:
HTML
常用的动态资源开发技术:
JSP/Servlet,ASP,PHP

java中,动态WEB资源开发技术统称为JavaWeb

二. Tomcat详解以及WEB应用程序目录
1.
J2EE:集成了13种开发技术
2.
常用WEB服务器:(WebLogic,WebSphere,Jboss,Tomcat)
(1)WebLogic是BEA公司的产品,是目前应用最广泛的Web服务器,支持JavaEE规范,而且不断的完善以适应新的开发要求.
(2)IBM公司的WebSphere,支持JavaEE规范
(3)大名鼎鼎的红帽的产品,原来属于开源组织Jboss,后被红帽收购。支持JavaEE规范,免费
(4)在小型的应用系统或者有特殊需要的系统中,可以使用一个免费的Web服务器:Tomcat,该服务器支持全部JSP以及Servlet规范


Tomcat版本    Servlet/JSP 规范      JDK版本
7.0           3.0/2.2               1.6
6.0x          2.5/2.1               1.5
5.5x          2.4/2.0               1.4 (相对于5.0,5.5更加稳定)
5.0x          2.4/2.0               1.4

由于Tomcat6本身是基于JDK1.5的应用程序,因此在安装和使用之前需要安装1.5或者以上版本的JDK(JRE)

安装时注意问题:不要安装在带有中文或者空格的路径下

启动需要创建 JAVA_HOME环境变量
如端口被占用,则需要在server.xml文件中将8080端口修改(1024-65535)

不建议配置CATALINA_HOME环境变量(如有不同的解压目录的TOMCAT,C和D盘,如想访问D盘中的WEB应用,会根据环境变量寻找WEB应用的资源,而环境变量是C盘上的TOMCAT,请求资源会出现问题)
3.Tomcat目录详解;
1、bin:存放TOmcat相关的命令
2、conf:存放Tomcat的配置文件(重要)
3、lib:存放Tomcat运行依赖的jar包(servet-api.jar jsp-api.jar)
4、logs:存放日志文件(如果看不到Tomcat的错误信息,可以查看日志)
5、temp:存放临时文件
6、webapps:存放Tomcat所管理的Web应用程序(该目录下有几个目录,就代表管理着几个应用)
7、work:Tomcat的工作目录

4.web应用目录:

Application
  |-- html\jsp\css\js  这些文件一般存在web应用根目录下,根目录下的文件外界可以直接访问
  |-- WEB-INF:此目录必须存在,且大小写一致。(存放在该目录下的资源,用户无法直接访问)
       |--classes:存放编译好的class文件。必须有
    |--lib:存放当前应用需要到的jar包。必须有
    |--web.xml:当前应用的配置文件。必须有
5.访问web应用
无论是开放式目录结构还是打包文件方式发布web应用,web应用的默认URL入口都是Web应用的根目录名。例如要访问Application应用,它的URL入口为/Application,如访问本地服务http://localhost:8080/Application 
6.tomcat组成结构
<Server> 代表整个Servlet容器组建,是最顶层的元素,可以包含一个或多个<Service>元素
  <Service>包含一个<Engine>元素以及一个或者多个<Connector>元素,这些<Connector>共享一个<Engine>
    <Connector>代表和客户程序实际交互的组件,负责接收客户请求,以及向客户返回响应
   <Engine> 每个<Service>元素只能包含一个<Engine>元素,它处理在同一个<Service>中所有<Connector>接收到的客户请求
     <Host>在一个<Engine>中可以包含多个<Host>,它代表一个虚拟主机(网站),它可以包含一个或者多个WEB应用
    <Context/>使用最频繁的元素,它代表在虚拟主机上运行的单个WEB应用
  </Host>
   </Engine>
 </Connector>
  </Service>
</Server>
7.配置虚拟目录

修改Tomcat/conf/server.xml,在Host元素中增加
<Context path="/abcd" docBase="D:\MyApp"/>
需要重新启动Tomcat后才能生效(实际运行过程中不建议使用)

推荐方式:
在Tomcat安装目录/conf/[enginename]/[hostname]目录下建立一个扩展名为xml的配置文件,该文件名即为虚拟路径(path),在其中增加
<Context docBase="D:\MyApp"/>

如果该文件名为ROOT,则是默认应用(还是需要重启)

三.配置默认主页及默认端口

主页:web应用中web.xml:
<welcome-file-list>
  <welcome-file>a.html</welcome-file>  
</welcome-file-list>
端口号(80,已经被占用):
  需要停掉IIS Admin服务,然后在server.xml中进行修改:
  <Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

四.配置虚拟主机

www.itcast.cn               www.heima.com

两家公司WEB应用都发布在一个TOMCAT服务器上,可以为每家公司分别创建一个虚拟主机。当客户通过以上两个不同的虚拟主机访问WEB应用时,会感觉到这两个应用具有相同的主机

1.首先修改 server.xml中的内容
配置两个Host
<Host name="www.itcast.cn"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
</Host> 


<Host name="www.heima.com"  appBase="D:/heimaapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
</Host> 
2.分别创建对应的两个WEB应用
C:\apache-tomcat-6.0.32\webapps\itcast
D:\heimaapps\heima
并把a.html配置成默认主页
<welcome-file-list>
  <welcome-file>a.html</welcome-file>  
</welcome-file-list>

3. 确定寻找主机的顺序: 如浏览器输入了 www.itcast.cn,会先到本机的host文件(C:\Windows\System32\drivers\etc\host)中寻找对应主机的IP地址,如果在host文件中未找到对应主机,则在DNS(Domain Naming Server)服务器上旬找对应的主机IP

为模拟该情况,需要在本机的host文件中进行修改:
127.0.0.1  www.itcast.cn
127.0.0.1  www.itheima.com

4. 在浏览器中输入: http://www.itcast.cn:8080/itcast 和http://www.itheima.com/heima 进行验证,得到不同的页面

5. 注意将host文件恢复,以避免真实访问对应网站时出现错误


五.Tomcat管理

TomcatManager
需要有manager权限对服务器中的应用进行管理:如查看 Path,Running状态,Session,Commands(进行start,stop,reload,undepoly操作等)

在C:\apache-tomcat-6.0.32\conf\tomcat-users.xml中进行配置

  <role rolename="manager-gui"/>  //首先声明一个具有 manager-gui的角色
  <role rolename="tomcat"/>
  <user username="tomcat" password="tomcat" roles="tomcat,manager-gui"/> //然后将该角色添加给名为tomcat的user

Deloy:远程部署,如上传war文件部署的远程服务器中

查看一些服务器的信息Server Information
Tomcat Version,JVM Version,JVM Vendor,OS Name(系统名,如xp),OS Version,OS Architecture(多少位的系统,如x86)

七,在tomcat中配置SSL(Server Socket Layer)

SSL是一种保证网络上的两个节点进行安全通信的协议,建立在SSL协议上的HTTP被称为HTTPS协议。HTTPS使用的默认端口是443。
SSL两个用处:1.对数据进行加密
             2.验证身份
   
安全证书的获得有两种方式:
1、从权威机构获得证书
Certificate Authority,CA和VeriSign和Thawte,它们保证了证书的可信性。申请证书时,需要付费,且一个证书只针对一个IP有效。
2、创建自我签名的证书
如果只关心数据在网络上的安全传输,而不需要对方身份验证,可以创建自我签名的证书。与权威机构颁发的证书采用的加密技术是一样的。
   
   
为Tomcat配置SSL,
1.生成证书
创建自我签名的证书。
SUN公司提供了制作证书的工具keytool。在JDK1.4以上版本中都包含了这一工具。通过这个工具生成证书的命令为:
keytool -genkey -alias tomcat -keyalg RSA 
*生成后默认保存在C盘用户的的文件夹中
以上命令将生成包含一对非对称密钥和自我签名的证书,这个命令中参数的意思
-genkey:生成一对非对称密钥。
-alias:指定密钥对的别名,该别名是公开的。
-keyalg:指定加密算法,此处采用通用的RSA算法。
以上命令将在操作系统的用户目录下生成名为”.keystore”的文件。
如果希望生成的keystore文件放在其他目录中,可以使用-keystore参数
keytool -genkey -alias tomcat -keyalg RSA -keystore d:\.keystore

配置SSL连接器
在Tomcat的servlet.xml文件中,已经提供了现成的配置SSL连接器的代码,只要把注释去掉即可
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />
其他属性:
keystoreFile:指定keystore文件的存放位置,可以指定绝对路经。如果此项没有设定,在默认情况下,Tomcat将从当前操作系统用户的用户名目录下读取名为”.keystore”的文件。
keystorePass:指定keystore的密码,如果此项没有设定,在默认情况下,Tomcat将使用”changeit”密码。


在配置tomcat的SSL双向握手中,由于6.0.33版本中默认启用了APR(APR是通过JNI访问的可移植库,可以提高Tomcat的性能和伸缩性),所以采用传统的配置方式(如下)会报异常;

因此要在serverl.xml中进行修改

 <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" keystoreFile="C:/Users/a/.keystore" keystorePass="123456"/>   
八.HTTP协议
1、请求部分
 客户端带给服务器的信息
 
 HTTP协议请求部分的组成:
 请求行             (位于请求部分的第一行)   GET /demo/index.html HTTP/1.1
           (请求方式 请求的资源路径 使用的协议)
      请求方式:
       GET:默认情况下,请求都是GET方式
        表单提交数据时默认使用的也是GET方式。这种方式会把请求数据放在请求资源的路径后面
        /demo/b.html?username=wzhting&password=123
        特点:不安全
         长度限制(<1k)
        
       POST:可以通过表单的method属性来指定
        表单数据会出现在正文部分,没有大小限制且安全

       
 请求消息头         (从第2行开始到第一个空行结束)
       Accept-Language: zh-cn
       Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
       Accept-Encoding: gzip, deflate
       If-Modified-Since: Mon, 14 May 2012 08:17:15 GMT
       If-None-Match: W/"62-1336983435375"
       User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
       Host: localhost:8080
       Connection: Keep-Alive
 一个空行
 空行后面的都是正文

 
 
2、响应部分
 服务器带给客户端的信息
 HTTP协议响应部分的组成:
 响应行    (位于响应部分的第一行) HTTP/1.1 200 OK
        (协议版本号 响应状态码 状态码描述)
        200(正常)
        表示一切正常,返回的是正常请求结果
        302/307(临时重定向)
        指出被请求的文档已被临时移动到别处,此文档的新的URL在Location响应头中给出。
        304(未修改)
        表示客户机缓存的版本是最新的,客户机可以继续使用它,无需到服务器请求。
        404(找不到)
        服务器上不存在客户机所请求的资源。
        500(服务器内部错误)
        服务器端的程序发生错误


 响应消息头   (从第2行开始到第一个空行)
        Server: Apache-Coyote/1.1
        Accept-Ranges: bytes
        ETag: W/"10-1336983414828"
        Last-Modified: Mon, 14 May 2012 08:16:54 GMT
        Content-Type: text/html
        Content-Length: 10
        Date: Mon, 14 May 2012 08:23:46 GMT
        Warning:w1
        Warning: w2

 一个空行
 响应正文(浏览器就显示正文内容)

 


  

你可能感兴趣的:(Tomcat详解)