1、Tomcat 实现了一个新的Servlet容器Catalina;
2、Tomcat:
        ROOT
        |
        |____      /                                  ————包含HTML和JSP文件、图片、样式表等
        |________WEB-INF                    ————站点二进制文件目录
                |__classes                        ————类文件目
                |__lib                               ————打包文件jar目录
                |__web.xml                     ———— 站点配置文件
3、Tomcat工作原理:
        Tomcat是Servlet的运行环境(Servlet容器);
        Servlet和普通java类区别:Servlet运行在服务器上
        Servlet容器的作用是负责处理客户请求。当客户请求到来时,Servlet容器获取请求,然后调用某个Servlet,并把Servlet的执行结果返回给客户。Tomcat就是起这样的作用的容器。
4、Tomcat的工作模式
    (1)独立的Servlet容器
        它是内置在Web服务器中的一部分,是指使用基于java的web服务器的情形。
        大多数的web服务器并非基于java,所以Tomcat又发展了其他两种模式;
    (2)进程内的Servlet容器
        Servlet容器是作为web服务器的插件和java容器的实现;
        web服务器插件在内部地址空间打开一个JVM,使得java容器得以在内部运行;如果出现需要调用Servlet的某个请求时,插件将取得对此请求的控制并将它传递(使用JNI)给java容器;
        适用于:多线程、单进程的服务器
        JNI:java本地调用接口,通过这个接口,java程序可以和其他语言编写的本地程序进行通信;
    (3)进程外的Servlet容器
        Tomcat作为进程外的Servlet容器时,Servlet容器运行于web服务器之外的地址空间,并且作为web服务器插件和java容器的实现结合;
        web服务器插件和java容器JVM使用IPC机制进行通信;
        如果出现需要调用Servlet的某个请求时,插件将取得对此请求的控制并将它传递(使用IPC)给java容器。
        进程外容器的反应时间或进程外容器引擎不如进程内容器,但进程外容器引擎在许多其他可比的方面更好(如伸缩性、稳定性);
        IPC:进程间通信
 
5、Tomcat组织结构
    (1)Tomcat是一个基于组件的服务器,它的构成组件是可配置的,其最外层的组件是catalina Servlet容器,其他的组件按照一定的格式要求配置在这个顶层容器中。
    tomcat的各个组件在$CATALINA_HOME/conf/server.xml文件中配置;
       server.xml文件的组成结构如下:
Host组件代表一个虚拟主机,一个虚拟主机可以包含多个web应用(context组件)
一个<server>包含一个或多个<service>
一个<sevice>包含唯一一个<engine>和一个或多个<connector>,多个<connector>共享一个<Engine>
一个<Engine>可以包含多个<Host>,每个<Host>定义了一个主机,包含一个或多个web应用<context>
<context>元素代表一个虚拟主机上的web应用
 
    (2)java web应用由什么构成?
        Servlet、JSP页面、java类、静态资源(HTML文档、图片等)、描述Web应用的描述文件
    
6、Web服务器比较
    java web服务器,规模从小到大:JSWDK、JServer、Resin、Tomcat、JRun、JBoss、WebLogic、WebSphere等
    其中JSWDK、JServer、Resin、Tomcat、JRun、JBoss是完全免费的软件
 
7、JDK、JRE、JVM、JIT
JRE,java运行基础,地位类似一台PC机,java程序必须有JRE才可以运行;
JDK,java编写的开发工具(java.exe、javac.exe等);
          JRE的调试环境;
          如果按照了JDK,会有两套JRE,一个位于\jre,另外一套位于"C:\program Files\Java"目录下;后面这套比前面那套少了server端的java虚拟机;不过可以直接从前面那里拷贝过来;
JVM,JRE目录下的bin目录有两个目录,server与client,这就是真正jvm.dll所在。
JIT,java即时编译器,是JVM的一部分,属于内核部分
 
 
8、JVM性能设置
主要包含了下面几个方面:
(1)启动方式
自身的server JIT编译器提供比默认编译器更好的性能,至少减少启动时间;
性能提高,java提供了命令行变量进行设置,通过修改tomcat启动脚本属性可以实现;
(2)堆大小
(3)垃圾回收
 
9、Tomcat的目录结构和相关设置
Tomcat下有9个目录,分别是bin、common、conf、logs、server、shared、temp、webapps和work目录。
(1)Tomcat根目录在Tomcat中叫$CATALINA_HOME,这里把解压后的tomcat放在C:/Tomcat5.5下;
    $CATALINA_HOME
    |__bin/                                                存放启动和关闭Tomcat的脚本
    |__common/
    |            |__classes/
    |            |__lib/
    |__conf/                                             存放不同的配置文件
    |__logs/                                             存放Tomcat执行的log文件
    |__server/
    |            |__classes
    |            |__lib/
    |__shared/                                         共享的类
    |__temp/
    |__webapps/                                     Tomcat的主要发布目录
    |__work/                                            存放JSP编译后产生的class文件
    |
 
(2)对目录进行详细说明
$CATALINA_HOME/bin:    存放脚本
        catalina:用以启动和停止服务,供其他脚本调用;
                               Tomcat在调试模式,或安全模式,或嵌入使用时都可以调用这个脚本;
        digest: 该脚本用于创建容器管理验证的摘要密码,通过加密密码提高安全性;
                       容器管理安全机制允许授权用户、阻止非法用户;
                       Tomcat 服务器执行用户身份检查和用户授权;
        startup和shutdown:两个脚本都调用了catalina脚本来启动和停止服务,使用可以执行文件方便操作,代替命令行的执行方式。在安装时被设置在开始菜单中,作为快捷方式,调用bootstap.jar来启动服务;
        tool-wrapper:该命令允许相同环境中使用命令行方式进行操作;
 
$CATALINA_HOME/common:
1、在common目录下的lib目录,存放Tomcat服务器和所有web应用都能访问的JAR。它又包括了classes和lib目录,该目录下所有的类为任何web应用所共享访问,class下为未打包的类文件,lib下为打包的jar文件;
2、与$CATALINA_HOME/下的classes和lib不同的是,该目录下的类可以为catalina引擎所访问,这是为了访问安全进行的区分;
    lib目录下包括了Xerces解析器和java Email API等;
 
$CATALINA_HOME/shared :
在这个目录下的lib目录,存放所有web应用能访问的,但是Tomcat不能访问的jar;
                       
$CATALINA_HOME/server:
该目录包括webapps和lib两个子目录。
在webapps目录中,存放Tomcat自带的APP-admin和manager两个应用,用来管理Tomcat-Web服务;
在lib目录中,存放Tomcat服务器所需要的,但web应用不能访问的JAR;
 
$CATALINA_HOME/work:
Tomcat把各种JSP生成的Servlet文件放在这个目录下。包括临时文件,JSP预编译文件和其他中间文件;
 
$CATALINA_HOME/temp:
临时活页夹,Tomcat运行时候用于存放临时文件;
 
$CATALINA_HOME/logs:
存放Tomcat的日志文件;
 
$CATALINA_HOME/conf
1、存放Tomcat的各种配置文件,包括server.xml配置文件、用户访问控制文件user.xml、目标配置文件conf.xml及catalina.policy文件;
    其中catalina.policy用于设置catalina在安全管理器上下文中运行时的访问权限,最重要的是server.xml文件,其配置项:服务停止、日志、过滤器、连接、端口、主机、应用目录位置等;
2、server.xml文件
 
$CATALINA_HOME/webapps
web应用的发布目录,把java开发的web站点或war包放到这个目录下就可以Tomcat服务器访问了。
该目录默认包括:
    example:
    manager:用以远程管理Tomcat,包括安装和卸载Web应用
    ROOT:Tomcat的默认web目录,不需要上下文参数就可以直接访问该目录下的文件;
    tomcat-docs:tomcat默认安装后的文档目录,可以删除该目录
    
10、web.xml
一个java web应用存在一个核心文件,就是web.xml;
该文件控制整个应用的行为方式和方法。
 
web.xml文件基本配置如下:
(1)头元素:指定版本和文字编码。
<?xml  version="1.0"  encoding="utf-8">
 
(2)文档类型:指定DTD文档(或xsd文档)的位置。
<!DOCTYPE  web-app 
            PUBLIC    "-//Sun  Microsystems, Inc.//DTD  Web  Application  2.3//EN"
            "http://java.sun.com/dtd/web-app  2 3.dtd">
<web-app>
 
(3)Web应用图标:指出IDE和GUI工具用来表示Web应用的大图标和小图标。
<icon>
        <small-icon>/images/app  small.gif</small>
        <large-icon>/images/app  large.gif</large-icon>
</icon>
 
(4)web应用名称:提供GUI工具可能会用来标记这个特定的Web应用的一个名称。
<display-name>Tomcat  Examples</display-name>
 
(5)web应用描述:给出与此有关的说明性文本。
<description>Tomcat Example servlets and JSP pages. </description>
 
(6)分布式属性:Tomcat集群参数。
<distributable/>
 
(7)上下文参数:声明应用范围内的初始化参数。
<context-param>
        <param-name>ContextParameter</param-name>
        <param-value>test</param-value>
        <description>It is a test parameter.</description>
</context-param>
 
(8)过滤器定义:将一个名字与一个实现javax.servlet.Filter接口的类相关联。
<filter>
        <filter-name>Set Character Encoding</filter-name>
        <filter-class>filters.SetCharacterEncodingFilter</filter-class>
        <init-param>
                <param-name>encoding</param-name>
                <param-value>EUC  JP</param-value>
        </init-param>
</filter>
 
(9)过滤器映射:一旦命名了一个过滤器,就要利用filter-mapping元素把它与一个或多个Servlet或JSP页面相关联。
<filter-mapping>
        <filter-name>Set Charater Encoding</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>
 
(10)监听器:listener元素指出事件监听程序类
<listener>
        <listener-class>listeners.SessionListener</listener-class>
</listener>
 
(11)Servlet定义:在向Servlet或JSP页面制定初始化参数或定制URL时,必须首先命名Servlet或JSP页面。Servlet元素就是用来完成此项任务的。
<servlet>
        <servlet-name>snoop</servlet-name>
        <servlet-class>SnoopServlet</servlet-class>
        <init-param>
                <param-name>foo</param-name>
                <param-value>bar</param-value>
        </init-param-value>
        <run-as>
                <description>Security role for anonymous access</description>
                <role-name>tomcat</role-name>
        </run-as>
</servlet>
 
(12)Servlet映射:服务器一般为Servlet提供一个默认的URL:http://host/webAppPrefix/servlet/ServletName。但是,我们常常会更改这个URL,以便Servlet可以访问初始化参数或更容易地处理相对URL。在更改默认URL时,使用servlet-mapping元素。
<servlet-mapping>
        <servlet-name>snoop</servlet-name>
        <url-pattern>/snoop</url-pattern>
</servlet-mapping>
 
(13)控制回话超时:如果某个会话在一定时间内未被访问,服务器可以抛弃它以节省内存。
                                可通过使用httpSession的setMaxInactiveInterval方法明确设置单个会话对象的超时值,或者可利用session-config元素指定默认超时值。
<session-config>
        <session-timeout>120</session-timeout>
</session-config>
 
(14)MIME类型映射:如果web应用具有特殊的文件,希望能保证给他们分配特定的MIME类型,则mime-mapping元素提供这个中保证。
<mime-mapping>
        <extension>htm</extension>
        <mime-type>text</mime-type>
</mime-type>

Tomcat 基础二的更多相关文章

  1. Tomcat基础教程(二)

    上一篇说到了Tomcat的介绍,下载及安装,这一篇我会详述Tomcat服务器结构 一.Tomcat服务器结构图: Tomcat服务器中可以配置多个Service,每个Service可以包含多个Conn ...

  2. Tomcat 基础优化

    作者:北京运维 本文档是身边一些朋友.技术大佬之前分享的一些笔记,记录了 Tomcat 优化方法,笔记较多而且比较杂乱,经过整理.分类我个人觉得大致可以从以下几个方面优化 Tomcat: Tomcat ...

  3. Tomcat基础配置和高级配置

    **********  第一部分 Tomcat基础配置   *********** 一.Apatch Tomcat 在win下配置 大部分转载自:http://blog.csdn.net/liuhao ...

  4. 【数据结构05】红-黑树基础----二叉搜索树(Binary Search Tree)

    目录 1.二分法引言 2.二叉搜索树定义 3.二叉搜索树的CRUD 4.二叉搜索树的两种极端情况 5.二叉搜索树总结 前言 在[算法04]树与二叉树中,已经介绍过了关于树的一些基本概念以及二叉树的前中 ...

  5. web服务器专题:tomcat(二)模块组件与server.xml 配置文件

    web服务器专题:tomcat(二)模块组件与server.xml 配置文件 回顾: Web服务器专题:tomcat(一) 基础模块 一个Server.xml的实例 <?xml version= ...

  6. Python全栈开发【基础二】

    Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...

  7. Bootstrap <基础二十九>面板(Panels)

    Bootstrap 面板(Panels).面板组件用于把 DOM 组件插入到一个盒子中.创建一个基本的面板,只需要向 <div> 元素添加 class .panel 和 class .pa ...

  8. Bootstrap <基础二十八>列表组

    列表组.列表组件用于以列表形式呈现复杂的和自定义的内容.创建一个基本的列表组的步骤如下: 向元素 <ul> 添加 class .list-group. 向 <li> 添加 cl ...

  9. Bootstrap<基础二十七> 多媒体对象(Media Object)

    Bootstrap 中的多媒体对象(Media Object).这些抽象的对象样式用于创建各种类型的组件(比如:博客评论),我们可以在组件中使用图文混排,图像可以左对齐或者右对齐.媒体对象可以用更少的 ...

随机推荐

  1. 在 Azure VM 中使用应用商店映像创建 HPC Pack 群集的头节点

    使用 Azure 应用商店和 Azure 门户中的 Microsoft HPC Pack 2012 R2 虚拟机映像创建 HPC 群集的头节点. 此 HPC Pack VM 映像基于预安装了 HPC ...

  2. 表迁移工具的选型-复制ibd的方法-传输表空间

    1.1. 场景 有的时候开放人员自己的库需要帮忙导一些数据,但是表的数据量又很大.虽然说使用mysqldump或mysqlpump也可以导.但是这耗时需要比较久. 记得之前建议开放人员可以直接使用na ...

  3. 【require.js】模块化开发

    一.Require.js及AMD Require.js:是一个非常小巧的JavaScript模块载入框架,是AMD规范最好的实现者之一. AMD(Asynchronous Module Definit ...

  4. 乘风破浪:LeetCode真题_033_Search in Rotated Sorted Array

    乘风破浪:LeetCode真题_033_Search in Rotated Sorted Array 一.前言     将传统的问题进行一些稍微的变形,这个时候我们可能无所适从了,因此还是实践出真知, ...

  5. It was not possible to find any compatible framework version

    It was not possible to find any compatible framework version The specified framework 'Microsoft.NETC ...

  6. DFS服务待书写

    https://www.cnblogs.com/xfan1982/p/4120583.html 安装AD域控制 https://www.cnblogs.com/wanggege/p/4605678.h ...

  7. October 31st, 2017 Week 44th Tuesday

    No matter how hard the past is, you can always begin again. 不管过去有多么困难,你都可以重新开始. Honestly, I don't ag ...

  8. [Eclipse]如何往eclipse中导入单个python文件,其它类型代码文件也可以参照该方法

    实例:想从外部单独拷一个文件到项目中指定路径,如果直接拷到对应文件夹路径下,启动eslipse又识别不到该文件,下面介绍直接copy的方法至eclipse,复制成功后即会在项目中对应路径下产生文件,下 ...

  9. Netty入门(六)Decoder(解码器)

    Netty 提供了丰富的解码器抽象基类,主要分为两类: 解码字节到消息(ByteToMessageDecoder 和 ReplayingDecoder) 解码消息到消息(MessageToMessag ...

  10. 3675: [Apio2014]序列分割

    Description 小H最近迷上了一个分隔序列的游戏.在这个游戏里,小H需要将一个长度为n的非负整数序列分割成k+1个非空的子序列.为了得到k+1个子序列,小H需要重复k次以下的步骤: 1.小H首 ...