Java EE中关于配置文件web.xml杂谈一

来源:互联网 发布:淘宝水族箱品牌排行榜 编辑:程序博客网 时间:2024/05/22 12:43

    当我们启动一个web项目时,容器Tomcat(运行在虚拟机上)首先会先获取配置文件web.xml中的配置信息,所以当web.xml中出现错误时,无论运行在服务器上的是servlet,还是JSP(jsp最终被Tomcat翻译成servlet,位于%CATALINE_HOME%\work\Catalina\localhost\*web应用名*\org\apache\jsp),均无法正确显示。

    (1)启动web项目时,容器首先读取web.xml下的两个节点<listener></listener>与<context-param></context-param>;

    (2)接着,tomcat容器创建一个ServletContext(application),该web项目的所有部分(JSP与Servlet)都能共享该上下文;

    (3)容器将以<context-param></context-param>间的<param-name>为键,<param-value>为值,作为键值对存于ServletContext中;

    (4)容器创建<listener></listener>实例,根据配置的class类路径<listener-class>来创建监听,在监听中有contextinitialized(ServletContextEvent args)初始化方法,启动Web应用时,系统调用Listener的该方法,在该方法中获得:ServletContext application=ServletContextEvent.getServletContext();param-value值=application.getInitParameter(param-name键);

    (5)随后,容器会读取<filter></filter>,根据指定的类路径来实例化过滤器

  以上步骤均在web项目启动时的准备工作。如果系统有Servlet,则在第一次发起请求的时候被实例化,且一般不会被容器销毁,它可以服务于多个用户的请求。Servlet的初始化在上述步骤之后完成。所以web.xml的加载次序是:<context-param> --> <listener> --> <filter> --> <servlet>


在web.xml中的首行有一个XML文档有效性检查,即通过<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">。该段代码指定文件类型定义(DTD)。web-app定义该文档的根元素,PUBLIC表明DTD文件能被公开使用;-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN意味着DTD有Sun microsystems, Inc维护,同时表示文档类型是DTD Web Application 2.3,通过英文(EN)书写;最后的URL表示D文件位置,输入该网址即可下载。

PS:Inc与前面的逗号“,”间有空格,若省略将在tomcat运行时出现错误。

引用自http://blog.csdn.net/believejava/article/details/43229361

0 0