个人学习笔记
1、配置编码格式
·· URIEncoding="UTF-8" ··
<Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" URIEncoding="UTF-8"/>
2、配置协议(protocol)
使用的网络协议,表示tomcat使用何种方式来接受和处理client端请求,“HTTP/1.1"是默认值,等效"org.apache.coyote.http11.Http11Protocol”;
- org.apache.coyote.http11.Http11NioProtocol:对应非阻塞 IO
- org.apache.coyote.http11.Http11Nio2Protocol:对应异步 IO
- org.apache.coyote.http2.Http2Protocol:对应 http2 协议
<Connector connectionTimeout="20000" port="80" protocol="org.apache.coyote.http11.Http11Nio2Protocol" URIEncoding="UTF-8"/>
3、启用GZIP压缩,提升web性能
- compression=“on” 开启压缩。可选值:"on"开启,"off"关闭,"force"任何情况都开启。
- compressionMinSize="10240"大于10KB的文件才进行压缩。用于指定压缩的最小数据大小,单位B,默认2048B。注意此值的大小,如果配置不合理,产生的后果是小文件压缩后反而变大了,达不到预想的效果。
- noCompressionUserAgents=“gozilla, traviata”,对于这两种浏览器不进行压缩,其值为正则表达式,匹配的UA将不会被压缩,默认空。
- compressableMimeType="text/html,text/xml,application/javascript,text/css,text/plain,text/json"会被压缩的MIME类型列表,多个逗号隔,表明支持html、xml、js、css、json等文件格式的压缩(plain为无格式的)。compressableMimeType很重要,它用来告知tomcat要对哪一种文件进行压缩,如果类型指定错误了,肯定是无法压缩的。
- useSendfile属性默认为true, 会禁用任何可能的压缩, 改成false就好了,tomcat默认设置是当数据大小达到48kb时,将启用文件传输(sendfile),所以我们想要压缩超过48kb的数据时必须将useSendfile设置为false
<Connector executor="tomcatThreadPool" port="80"
protocol="org.apache.coyote.http11.Http11Nio2Protocol"
URIEncoding="utf-8"
compression="on"
compressionMinSize="10240"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,application/javascript,text/css,text/plain"
useSendfile="false"
/>
4、Connector中的其他属性
enableLookups:禁用DNS 查询
maxPostSize:限制 以FORM URL 参数方式的POST请求的内容大小,单位字节,默认是 2097152(2兆),10485760 为 10M。如果要禁用限制,则可以设置为 -1。
acceptorThreadCount: 用于接收连接的线程的数量,默认值是1。一般这个指需要改动的时候是因为该服务器是一个多核CPU,如果是多核 CPU 一般配置为 2。
5、配置项目访问路劲
- path:指定访问该Web应用的URL入口
- docBase:指定Web应用的文件路径,可以给定绝对路径,也可以给定相对于的appBase属性的相对路径,如果Web应用采用开放目录结构,则指定Web应用的根目录,如果Web应用是个war文件,则指定war文件的路径。(指定项目所在地址)
- reloadable:如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新的,服务器会自动重新加载Web应用。
- jsp运行时都要先转换成servlet,使用tomcat时会在tomcat安装目录下的work生成一系列的文件夹和.java文件和.class文件,workDir 可以指定生成目录。
<Context path ="/" docBase ="D:\\java\\apache-tomcat-blockchain\\webapps\\test" reloadable ="false" workDir ="D:/java/work" />
tomcat 控制台乱码问题
打开logging.properties文件 ,将其中UTF-8改为GBK
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.encoding = GBK
2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
2localhost.org.apache.juli.AsyncFileHandler.encoding = GBK
3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
3manager.org.apache.juli.AsyncFileHandler.encoding = GBK
4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
4host-manager.org.apache.juli.AsyncFileHandler.encoding = GBK
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.encoding = GBK