官网: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 "%r" %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" />
网友评论