项目加载web.xml文件的过程:
1. 先读取<context-param></context-param>和<listener></listener>;
<context-param>翻译成中文是“上下文参数”,从字面意思就能明白作用:上下文通用参数的初始化;
<listener>它能监听到服务器的启动和停止,在启动和停止时触发里面的方法做相应必要的常规操作;
2. 创建一个ServletContext,被整个项目共享;
3. ServletContext根据<context-param>进行赋值;
4. ServletContext根据<listener>进行启动的必要化工作;
比如:<context-param>中设置数据库的连接方式(驱动、url、user、password),在<listener>中初始化数据库的连接销毁资源释放等;
5. ServletContext根据<filter></filter>实例化过滤器;
6. ServletContext根据<servlet></servlet>进行servlet的初始化;
<servlet>里配置的类不管有多新技术,都必须得实现最老牌的HttpServlet;
它的主要作用是对请求url进行分析分配,例如:http请求的url=http://localhost:9001/program/XXX/XXX? aa=xx & bb=xx;
/XXX/XXX匹配上servletA的<url-pattern>,就交由servlet处理,匹配上servletB的<url-pattern>就交由servletB处理;
aa=xx & bb=xx 参数的处理,则是交由对应上的servlet里的拦截器interceptor来处理;
-------------------------------------------------------------------------------------------------------------------------------------
注意:<servlet>只要有一个servlet匹配上,就不继续进行下一个servlet的匹配,而<filter>是顺序匹配,不管有没有匹配上,反正你得依照顺序把<filter>都过一遍;
整的来说,web.xml的加载顺序: