一、server.xml <Context docBase="wtest" path="/wtest/dest" reloadable="true"/>
其中,docBase代表本地路径,可以是相对路径也可以是绝对路径
path代表网络路径
docBase和path是一一对应的
webapps/ROOT和/也是一一对应的
举例:docBase路径可以是D:apache-tomcat-8.5.35webappswtest(绝对路径)或者wtest(相对路径,相对于webapps来说)
path路径就是http://127.0.0.1:8080/wtest/dest
浏览器请求的路径=协议+://+ip+:+port+contextpath(上下文路径)+url-pattern
二、web.xml的详解
这里的version=3.1是和servlet-api.jar的版本相关联的,
而且之所以xml文件能进行联想也是根据命名空间的web-app_3_1.xsd决定的
该文档中有两个命名空间一个是默认的命名空间由xmlns定义,默认前缀(主要目地是为了应用文件内容的标签或者属性)
另一个是xsi的命名空间由xmlnx:xsi定义,前缀是xsi(主要目地是为了应用xsi:schemaLocation标签或者属性)
xsi:schemaLocation的模式如下:xsi:schemaLocation="key1 value1 kay2 value2 key3 value3 ..."
url-pattern匹配原则:精确匹配>最长路径匹配(包括‘/*’)>扩展名匹配(包括jspServlet,即'*.jsp')>缺省匹配(包括defaultServlet,即'/')
<url-pattern>/*</url-pattern> 会匹配所有url:路径型的和后缀型的url(包括/login,*.jsp,*.js和*.html等)
三、使用eclipse+maven直接运行web项目时,这里需要配置好:但是这只是仅限于直接运行,编译成war包时,不需要配置这里,只需要配置maven pom.xml就可以了
四、默认的web.xml
这个web.xml在${catalina.home}conf/web.xml目录一下,它里面配置了两个servlet
第一个servlet:
defaultServlet:处理静态文件的servlet
他可以匹配到任何的路径,也可以和他配置成相同的url-pattern,从而覆盖掉它
<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> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
第二个servlet:
jspServlet: 处理所有的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-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.jsp</url-pattern> <url-pattern>*.jspx</url-pattern> </servlet-mapping>
五、tomcat调优:
1、tomcat启动慢:jdk1.8.0_192/jre/lib/security/java.security securerandom.source=file:/dev/./urandom或者
在 catalina.sh 中加入这么一行:-Djava.security.egd=file:/dev/./urandom
2、tomcat中一共有三种运行模式,分别是:bio,nio,apr:(配置apr模式)
bio是阻塞式IO操作,使用的是传统的java i/o处理方式,对于每一个请求都要创建一个线程来进行处理,所以开销较大不适合处理高并发的场景
nio是基于java中非阻塞IO操作的API实现,比传统的i/o处理方式有更高的并发运行性能
apr是从操作系统级别解决异步IO问题,大幅度提高服务器的并发处理性能,也是Tomcat生产环境运行的首选方式(性能高)(这里要理解一下java的jni)