servelet 资源加载过程

servelet 资源加载过程:
启动tomcat服务器的时候,服务器将会加载所有webapps 目录下所有项目的配置文件,即web.xml;
web.xml里面配置了动态资源到网络url访问地址的mapping,即当我们在浏览器输入url地址以后,tomcat怎么定位到对应的资源

<servlet>
<servlet-name>className</servlet-name>
<servlet-class>fullClassPath</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>className</servlet-name>
<url-pattern>/webName</url-pattern>
</servlet-mapping>

当我们输入http://localhost:8080/webName 后,tomcat服务器会根据/webName去匹配url-pattern,然后根据匹配结果找到servlet-name 再接着找到serlet-class
然后给你class全名生成对应的class对象;
通过名字<url-pattern>我们可以看出,它是一个pattern,因此并不一定是一个完全匹配
url-pattern支持三种格式:
1>完全匹配
2>XX*匹配
3>*XX匹配
2>3>不能同时使用

*代表任意字符; 如XX*则表示只要是以XX开头即可,后面可以是任意字符;
如果/webName在url-pattern里面没有匹配到任何对象,则会访问默认的servelet对象,它会去搜索静态资源去匹配webName,
如果仍然没有匹配,则报404错误。
所以这里需要注意一点,不要使用/* 这种模式,因为它可以匹配任意输入格式,这样将永远无法访问静态资源

当定位到对应的class之后,如果没有提前初始化,则会通过反射的方式来构造该类的对象,然后调用初始化。
接下来每次对该sevlet的访问都将不再初始化,而是直接调用service方法。
当服务器关闭时调用destroy方法来销毁sevlet.

猜你喜欢

转载自jaler.iteye.com/blog/2299912