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. Java J2EE读取配置文件

    package com; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.naming.InitialCon ...

  2. 《SQL Server 2008从入门到精通》--20180723

    目录 1.架构 1.1.创建架构并在架构中创建表 1.2.删除架构 1.3.修改表的架构 2.视图 2.1.新建视图 2.2.使用视图修改数据 2.3.删除视图 3.索引 3.1.聚集索引 3.2.非 ...

  3. SQL server权限管理和备份实例

    权限设置: 1.创建用户zhangsan,并赋予zhangsan有dbcreator的服务器权限. 2.使用zhangsan登录,测试能否创建数据库. 3.使用sa用户附加myschool数据库,设置 ...

  4. ISO8583组包、解包

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace POS. ...

  5. NoSQL——not onlySQL不仅仅是SQL

    数据有很大一部分是由关系数据库管理系统(RDBMS)来处理. 1970年 E.F.Codd's提出的关系模型的论文 "A relational model of data for large ...

  6. SDN 第三次上机作业

    SDN 第三次上机作业 1.创建拓扑 2.利用OVS命令下发流表,实现vlan功能 3.利用OVS命令查看流表 s1: s2: 4.验证性测试 5.Wireshark 抓包验证

  7. 团队作业——Alpha冲刺 11/12

    团队作业--Alpha冲刺 冲刺任务安排 杨光海天 今日任务:预览界面布局实现,并留下交互接口 明日任务:预览界面中自定义保存的实现 郭剑南 今日任务:尝试解决Python编写程序无法在Android ...

  8. 怎样自适应ios设备大小

       在编写移动端GIS程序的时候.常常要依据ios设备的大小来设置UI.曾经我在ios程序中,须要定义设备的值(如:宽度和高度),如: 可是假设是不同的设备.如iphone4.iphone5,甚至是 ...

  9. Nowcoder 提高组练习赛-R3

    https://www.nowcoder.com/acm/contest/174#question 今天的题好难呀,只有94个人有分.然后我就爆零光荣 考到一半发现我们班要上物理课,还要去做物理实验( ...

  10. php 数据集转换树、递归重组节点信息多维数组(转)

    一.将数据集转换成树 /** * 将返回的数据集转换成树 * @param array $list 数据集 * @param string $pk 主键 * @param string $pid 父节 ...