Apache Tomcat -- Servlet容器

2018-09-06  本文已影响0人  saoraozhe3hao

官网: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" />

上一篇 下一篇

猜你喜欢

热点阅读