zoukankan      html  css  js  c++  java
  • Tomcat 基础二

    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 FilesJava"目录下;后面这套比前面那套少了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>
  • 相关阅读:
    Sublime Text3添加到右键快捷菜单教程
    layui相关用法总结
    idea-----使用相关快捷键
    Redis相关语法
    idea-----怎样取消idea默认打开工程
    idea-----Idea在不关闭project的情况下进行Import Project
    Swagger2异常:Illegal DefaultValue null for parameter type integer java
    IntelliJ IDEA打jar时常遇见的问题
    Java的基本数据类型
    Java中对JSONArray中的对象进行排序
  • 原文地址:https://www.cnblogs.com/StephenChen/p/7153837.html
Copyright © 2011-2022 走看看