美文网首页
Apache Tomcat -- Servlet容器

Apache Tomcat -- Servlet容器

作者: saoraozhe3hao | 来源:发表于2018-09-06 14:36 被阅读0次

    官网:http://tomcat.apache.org/
    历史:美国人James Duncan Davidson 1999年在Apache软件基金会创始了Tomcat
    功能:HTTP服务器 、Servlet容器、JSP容器
    Catalina:tomcat的核心模块,即Servlet容器

    与Jetty的对比
    Jetty也是个Servlet容器,最早发布于1995年,现由Eclipse基金会维护
    Jetty比Tomcat更轻量,Tomcat支持更多的Java EE特性

    Windows安装与配置
    0、已安装JDK,配好环境变量 path 和 java_home
    1-1、下载安装版,双击安装,用 /bin/Tomcat9w.exe 启动
    1-2、下载解压版,解压(注意别解压到C盘,可能会有权限问题),用 /bin/startup.bat 启动

    Linux安装与配置
    0、设置云服务器安全组入向规则,已安装JDK
    1、下载 tomcat.tar.gz;上传到 /usr;解压 tar -zxvf tomcat.tar.gz
    2、清空webapps,放入自己准备ROOT.war
    3、启停:/usr/apache-tomcat/bin/startup.sh,shutdown.sh
    4、检查接口监听:netstat -tunlp | grep 8080
    5、访问

    重要目录与文件
    /conf/server.xml --- 服务器配置
    /conf/web.xml --- 全局应用配置
    项目目录/src/main/webapp/WEB-INF/web.xml --- 单应用配置
    /webapps/ROOT 默认访问目录
    /work JSP编译成的.class存放的目录

    /conf/server.xml

    <?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" /> <!-- 把https请求转发到8443端口 -->
        <!-- https配置 -->
        <Connector  protocol="org.apache.coyote.http11.Http11NioProtocol"
               port="8443" maxThreads="200"  scheme="https" secure="true" SSLEnabled="true"
               keystoreFile="./hogen.pfx" keystorePass="1234"  <!-- 引入证书和证书口令 -->
               clientAuth="false" sslProtocol="TLS" keystoreType="PKCS12" />
        <!-- AJP是HTTP协议的替补 -->
        <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
        
        <!-- 通过某域名访问到本服务器,但该域名没在下面的<Host>中,则默认访问defaultHost -->
        <Engine name="Catalina" defaultHost="localhost">   
          <Realm className="org.apache.catalina.realm.LockOutRealm">
            <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                   resourceName="UserDatabase"/>
          </Realm>
          <!-- 虚拟主机配置,指定域名和访问目录的对应关系  -->
          <Host name="localhost"  appBase="webapps" 
                unpackWARs="true" autoDeploy="true"> <!-- 热部署,不用重启,自动解压webapps下的war包,解压成与war包同名的目录,重新部署 -->
              <!-- 日志配置 -->
              <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>
          <!-- 通过127.0.0.1访问本服务器时,是访问这个虚拟主机 -->
          <Host name="127.0.01"> <!-- 可以通过虚拟主机配置子域名,只需要保证子域名能访问到本机 -->
              <Context docBase="xxx" path="/xxx" reloadable="true"/>  <!-- 热加载,.class变化时自动局部加载 -->
          </Host>
        </Engine>
      </Service>
    </Server>
    

    /conf/web.xml

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <web-app>
        <!-- servlet配置 -->
        <servlet>
            <servlet-name>default</servlet-name>
            <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
            <init-param>
                <param-name>debug</param-name>
                <param-value>0</param-value>
            </init-param>
            <init-param>
                <param-name>listings</param-name>
                <param-value>false</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
        
        <!-- JSP配置 -->
        <servlet>
            <servlet-name>jsp</servlet-name>
            <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
            <init-param>
                <param-name>fork</param-name>
                <param-value>false</param-value>
            </init-param>
            <init-param>
                <param-name>xpoweredBy</param-name>
                <param-value>false</param-value>
            </init-param>
            <load-on-startup>3</load-on-startup>
        </servlet>
    
        <!-- servlet处理的url路径 -->
        <servlet-mapping>
            <servlet-name>default</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    
        <!-- JSP处理的url路径 -->
        <servlet-mapping>
            <servlet-name>jsp</servlet-name>
            <url-pattern>*.jsp</url-pattern>
            <url-pattern>*.jspx</url-pattern>
        </servlet-mapping>
    
        <!-- 会话配置 -->  
        <session-config>
            <session-timeout>30</session-timeout>
        </session-config>
    
        <!-- MIME 类型映射 -->    
        <mime-mapping>
            <extension>png</extension>
            <mime-type>image/png</mime-type>
        </mime-mapping>
        
        <!-- 首页配置 -->
        <welcome-file-list>
            <welcome-file>index.html</welcome-file>
            <welcome-file>index.htm</welcome-file>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
    
        <!-- http自动跳转https -->
        <security-constraint>
            <web-resource-collection >
                <web-resource-name >SSL</web-resource-name>
                <url-pattern>/*</url-pattern>
            </web-resource-collection>
            <user-data-constraint>
                <transport-guarantee>CONFIDENTIAL</transport-guarantee>
            </user-data-constraint>
        </security-constraint>
    </web-app>
    

    日志

    logs/localhost_access_log..txt // 访问日志
    logs/catalina.out // 控制台日志,包括启动信息,应用程序的标准输出
    logs/localhost.
    .txt // 程序抛出的异常
    logs/manager.txt、logs/host-manager.txt // manage项目的日志

    日志级别
    OFF(不输出) > SEVERE > WARNING > INFO > CONFIG > FINE > FINER > FINEST > ALL(全输出)

    conf/logging.properties中配置日志输出
    可以配置日志级别、输出目标、有效期

    conf/server.xml中配置访问日志格式
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    prefix="localhost_access_log" suffix=".txt"
    pattern="%h %l %u %t "%r" %s %b" />

    相关文章

      网友评论

          本文标题:Apache Tomcat -- Servlet容器

          本文链接:https://www.haomeiwen.com/subject/sxdxgftx.html