在ITOO中,每个war包下的web.xml都是一样的.它的结构如下:
itoo中含有多个war包,而且每个war包中web.xml都和上图的结构一样,而且配置内容都是一样的.
在Javaweb 应用中可以包含HTML 文档,Servlet,JSP和相关java类等,为了Servlet容器能够顺利地找到javaWeb 应用中的各个组件,Servlet规范规定,javaWeb应用必须采取固定的目录结构,即每种类型的组件在Web应用中都有固定的存放目录.Servlet规范还规定,javaWeb应用的配置信息存放在WEB-INF/web.xml文件中,Servlet 容器从该文件中读取配置信息.
WEB应用的组成结构:
qrc工程名
|
|----index.html,jsp....【根目录下的文件外界可以直接访问】
|
|----WEB-INF目录【该目录下的文件外界无法直接访问,有web服务器负责调用】
| |---classes目录(java类)
| |---lib目录(java类运行所需要的jar)
| |---web.xml文件(web应用的配置文件)
每一个javaWeb工程都有一个web.xml配置文件,那么他到底有什么作用呢?它是每一个web工程都必的必须的吗?
web.xml文件是用来初始化工程配置信息的,比如说welcome页面,filter,listener,servlet,servlet-mapping,启动加载级别等等,web.xml 文件是javaWeb应用的XML格式的配置文件,存放于WEB-INF子目录下.Web.xml文件由开发人员编写,供Servlet 容器访问.Web.xml文件也称为javaWeb应用发布描述文件,Servlet容器在加载和启动javaWeb应用时会读取它的web.xml文件,从中获得关于当前web应用的发布信息.当你的web工程中没用到这些当然也就不需要这个xml文件来配置你的apllication了
每一个xml文件都有定义他书写规范的schema文件,web.xml所对应的xml Schema文件中定义了多少种标签元素,web.xml中就可以出现它所定义的标签元素,也就具备哪些特定的功能。web.xml的模式文件是由Sun 公司定义的,每个web.xml文件的根元素为<web-app>中,必须标明这个web.xml使用的是哪个模式文件。
所以,web.xml文件是web应用中不可缺少的配置文件。他本身是一个XML文件。遵守XML文件的语法。在web.xml文件中
可包含以下配置信息:
.Servlet定义.
.servlet的初始化参数
.servlet及JSP的映射
.安全域配置参数
.welcome文件清单.
.资源引用
.环境变量的定义.
Servlet2.5版本的web.xml采用了XMLSchema来定义XML元素;
web.xml的元素说明:
<span style="font-family:FangSong_GB2312;font-size:18px;"><web-app>
<description>
<description>描述当前web应用的,这是一个描述性的信息,可有可无</description>
<display-name>
<display-name>在web应用中显示在web应用管理页面的名字,可有可无</display-name>
<distributable>
<distributable/> <!--负载平衡,应用是分布的-->
<filter>
<filter>
<filter-name>AuthenticationFilter</filter-name>
<filter-class>webbook.guestbook.AuthenticationFilter</filter-class>
<init-param>
<param-name>url</param-name>
<param-value>/admin/login.jsp</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-mapping>
<filter-name>AuthenticationFilter</filter-name>
<url-pattern>/admin/secure/*</url-pattern>
<url-pattern>/admin/manage/*</url-pattren>
</filter-mapping>
<context-param>
<context-param>
<param-name>pageSize</param-name>
<param-value>30</param-value>
</context-param>
<listener>
<listener>
<listener-class>webbook.user.OnlineUserListener</listener-class>
</listener>
<servlet>
<servlet>
<servlet-name>AddMessageServlet</servlet-name>
<servlet-class>webbook.guestbook.AddMessageServlet<servlet-class>
<init-param>
<param-name>type</param-name>
<param-value>text</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-mapping>
<servlet-name>AddMessageServlet</servlet-name>
<url-pattern>/servlet/AddMessage</url-pattern>
</servlet-mapping>
<session-config>
<session-config>
<session-timeout>60</session-timeout>
</session-config>
<mime-mapping>
<mime-mapping>
<extension>xls</extension>
<mime-type>application/vnd.ms-excel</mime-type>
</mime-mapping>
<welcome-file-list>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>addMessage.jsp</welcome-file>
</welcome-file-list>
<error-page>
<error-page>
<error-code>404</error-code>
<location>/error404.htm</location>
</error-page>
<error-page>
<exception-type>java.io.IOException</exception-type>
<location>/error500.jsp</location>
</error-page></span>
--------------------------------------------------------------------------
web应用初始化
1、首先,把在web.xml文件中<listener>元素所申明的那些监听器进行实例化;
2、然后,调用那些实现了ServletContextListener接口的监听器的contextInitialized()方法;
3、实例化<filter>元素中所申明的过滤器类,调用过滤器类的init()方法;
4、最后,如果<servlet>元素中使用了<load-on-startup>子元素,则按照数值有小到大依次对
servlet进行实例化,同时调用对应的servlet的init()方法;
说了这么多,用以下两张图来解释以下web.xml在javaweb中的作用:
Web 服务器与Web应用这两个不同的软件系统协作,需要一个中介Servlet容器来处理.
Web.xml中配置实现servlet接口的实现.
Web服务器在加载Web应用时,就会把相应的web.xml文件中的数据读入到内存中,因此当web服务器需要参考web.xml文件时,实际上只需要从内存中读取相关数据就酷刑了,无需再到文件系统中读取Web.xml文件.
所以,web 文件可以提前读取到内存中的.