web.xml小结

web.xmlx小结

1.web.xml加载过程(步骤)

首先简单讲一下,web.xml的加载过程。当启动一个WEB项目时,容器包括(JBoss、Tomcat等)首先会读取项目web.xml配置文件里的配置,当这一步骤没有出错并且完成之后,项目才能正常地被启动起来。

  1. 启动WEB项目的时候,容器首先会去它的配置文件web.xml读取两个节点:
  2. 紧接着,容器创建一个ServletContext(Application),这个WEB项目所有部分都将共享这个上下文。
  3. 容器以的name作为键,value作为值,将其转化为键值对,存入ServletContext。
  4. 容器创建中的类实例,根据配置的class类路径来创建监听,在监听中会有contextInitialized(ServletContextEvent args)初始化方法,启动Web应用时,系统调用Listener的该方法,在这个方法中获得:ServletContext application = ServletContextEvent.getServletContext(); context-param的值 = application.getInitParameter("context-param的键"); 得到这个context-param的值之后,你就可以做一些操作了。
  5. 举例:你可能想在项目启动之前就打开数据库,那么这里就可以在中设置数据库的连接方式(驱动、url、user、password),在监听类中初始化数据库的连接。这个监听是自己写的一个类,除了初始化方法,它还有销毁方法,用于关闭应用前释放资源。比如:说数据库连接的关闭,此时,调用contextDestroyed(ServletContextEvent args),关闭Web应用时,系统调用Listener的该方法。
  6. 接着,容器会读取,根据指定的类路径来实例化过滤器。
  7. 以上都是在WEB项目还没有完全启动起来的时候就已经完成了的工作。如果系统中有Servlet,则Servlet是在第一次发起请求的时候被实例化的,而且一般不会被容器销毁,它可以服务于多个用户的请求。所以,Servlet的初始化都要比上面提到的那几个要迟。
  8. 总的来说,web.xml的加载顺序是:->->->。其中,如果web.xml中出现了相同的元素,则按照在配置文件中出现的先后顺序来加载。
  9. 对于某类元素而言,与它们出现的顺序是有关的。以为例,web.xml中当然可以定义多个,与相关的一个元素是注意,对于拥有相同元素而言,必须出现在之后,否则当解析到时,它所对应的还未定义。web容器启动初始化每个时,按照出现的顺序来初始化的,当请求资源匹配多个时,拦截资源是按照元素出现的顺序来依次调用doFilter()方法的。类似,此处不再赘

web .xml中servlet-mapping的作用

servlet-mapping元素在Servlet和URL样式之间定义一个映射。

它包含了两个子元素servlet- name和url-pattern:

servlet-name元素给出的Servlet名字必须是 在servlet元素中声明过的Servlet的名字。

url-pattern元素指定对应于Servlet的URL路径,
如果url-pattern定义的是路径,那么以后所有对这个路径下资源的请求都会由servlet-name中定义的servlet处理.
如果url-pattern定义的是资源格式例如*.do等,那么对于所有符合这种格式的资源的请求都由指定的servlet处理

原文地址:https://www.cnblogs.com/xiaxiaopi/p/14386594.html