web.xml作用:

web.xml主要用来配置Filter、Listener、Servlet等,当我们去启动一个WEB项目时,容器(jetty、tomcat等)首先会读取项目web.xml配置文件里的配置,当这一步骤没有出错并且完成之后,项目才能正常地被启动起来。

web.xml配置元素的加载顺序:

<context-param> -> <listener> -> <filter> -> <servlet>。其中,如果web.xml中出现了相同的元素,则按照在配置文件中出现的先后顺序来加载。

web容器启动过程:

  1. 启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点。
  2. 紧急着,容创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文。
  3. 容器将<context-param>转换为键值对,并交给servletContext。
  4. 容器创建<listener>中的类实例,创建监听器。

web.xml配置元素:

1.<web-app>根元素

    web.xml的模式文件是由Sun公司定义的,每个web.xml文件的根元素<web-app>中,都必须标明这个 web.xml使用的是哪个模式文件。其它的元素都放在<web-app></web-app>之中,<web-app>是根节点。
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
</web-app>

2.<icon>Web应用图标

    指出IDE和GUI工具用来表示Web应用的大图标和小图标。
<icon>
  <small-icon>/images/app_small.gif</small-icon>
  <large-icon>/images/app_large.gif</large-icon>
</icon>

3.<display-name>Web应用名称

    提供GUI工具可能会用来标记这个特定的Web应用的一个名称。
<display-name>Tomcat Example</display-name>

4.<disciption>Web应用描述

    给出于此相关的说明性文本。
<disciption>Tomcat Example servlets and JSP pages.</disciption>

5.<context-param>上下文参数

    声明应用范围内的初始化参数。它用于向 ServletContext提供键值对,即应用程序上下文信息。我们的listener, filter等在初始化时会用到这些上下文中的信息。在servlet里面可以通过getServletContext().getInitParameter("context/param")得到。
<context-param>
  <param-name>ContextParameter</para-name>
  <param-value>test</param-value>
  <description>It is a test parameter.</description>
</context-param>

6.<filter>过滤器

    将一个名字与一个实现javaxs.servlet.Filter接口的类相关联。
<filter>
  <filter-name>setCharacterEncoding</filter-name>
  <filter-class>com.myTest.setCharacterEncodingFilter</filter-class>
  <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>setCharacterEncoding</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

7.<listener>监听器

<listener>
  <listener-class>com.listener.SessionListener</listener-class>
</listener>

8.<servlet>

  • <servlet> 用来声明一个servlet的数据,主要有以下子元素:
  • <servlet-name> 指定servlet的名称
  • <servlet-class> 指定servlet的类名称
  • <jsp-file> 指定web站台中的某个JSP网页的完整路径
  • <init-param> 用来定义参数,可有多个init-param。
  • <load-on-startup> 当值为正数或零时,从小到大加载。否则第一次访问时加载。
  • <servlet-mapping> 用来定义servlet所对应的URL,包含两个子元素
  • <servlet-name> 指定servlet的名称
  • <url-pattern> 指定servlet所对应的URL
<servlet>
<servlet-name>snoop</servlet-name>
<servlet-class>SnoopServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>snoop</servlet-name>
<url-pattern>/snoop</url-pattern>
</servlet-mapping>

9.<session-config>会话超时配置

<session-config>
  <session-timeout>120</session-timeout><!-- 单位为分钟 -->
</session-config>

10.<mime-mapping>

<mime-mapping>
  <extension>htm</extension>
  <mime-type>text/html</mime-type>
</mime-mapping>

11.<welcome-file-list>欢迎文件页

<welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
  <welcome-file>index.html</welcome-file>
</welcome-file-list>

12.<error-page>错误页面

<!-- 1、通过错误码来配置error-page。当系统发生×××错误时,跳转到错误处理页面。 -->
<error-page>
  <error-code>404</error-code>
  <location>/NotFound.jsp</location>
</error-page>
<!-- 2、通过异常的类型配置error-page。(即空指针异常)时,跳转到错误处理页面。 -->
<error-page>
  <exception-type>java.lang.NullException</exception-type>
  <location>/error.jsp</location>
</error-page>

spring在web.xml中的配置:

   <!-- Spring -->
<!-- 配置Spring配置文件路径 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:spring/applicationContext.xml
</param-value>
</context-param>
<!-- 配置Spring上下文监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Spring -->

其中监听器ContextLoaderListener是必须的,作用是加载spring的配置文件,如果不配置contextConfigLocation,则默认的路径是/WEB-INF/applicationContext.xml。

application的相关配置介绍:applicationContext.xml配置简介

spring MVC在web.xml中的配置:

<!-- Spring MVC配置 -->
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-servlet.xml</param-value> 默认
</init-param>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

springMVC配置的相关介绍:Spring MVC学习笔记

WebAppRootListener在web.xml中的配置:

<context-param>
  <param-name>webAppRootKey</param-name>
  <param-value>webapp.root</param-value>
</context-param> <listener>
  <listener-class>org.springframework.web.util.WebAppRootListener</listener-class>
</listener>

WebAppRootListener用于获得项目根目录,在代码中使用System.getProperty(webapp.root)获得。

WebAppRootListener要在ApplicationContext的ContextLoaderListener之前,否则ApplicationContext的bean注入根目录值时会发生无法注入异常。

但是如果在web.xml中已经配置了 org.springframework.web.util.Log4jConfigListener 这个监听器,则不需要配置WebAppRootListener了。因为Log4jConfigListener已经包含了WebAppRootListener的功能。

参考:

web.xml文件详解

web项目配置webAppRootKey 取得根目录

web.xml文件配置说明的更多相关文章

  1. web.xml文件加载顺序

    1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...

  2. Java Web的web.xml文件作用及基本配置(转)

    其实web.xml就是asp.net的web.config一个道理. 说明: 一个web中完全可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的. web.xml文件是用来 ...

  3. web.xml文件详解

      web.xml文件详解 Table of Contents 1 listener. filter.servlet 加载顺序 2 web.xml文件详解 3 相应元素配置 1 listener. f ...

  4. web.xml 文件配置01

    web.xml 文件配置01   前言:一般的web工程中都会用到web.xml,方便开发web工程.web.xml主要用来配置Filter.Listener.Servlet等.但是要说明的是web. ...

  5. web.xml文件中的web-app元素 部署

    [转载]web.xml文件中的web-app元素 (2012-05-24 13:35:57) 转载▼ 标签: 转载 分类: java 挺全 的 呵呵呵 转了 原文地址:web.xml文件中的web-a ...

  6. WEB项目web.xml文件中classpath: 跟classpath*:使用的区别

    引用一篇很不错的文章:http://blog.csdn.net/wxwzy738/article/details/16983935 首先 classpath是指 WEB-INF文件夹下的classes ...

  7. web.xml文件中加载顺序的优先级

    在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰. 首先可以肯定的是 ...

  8. web.xml文件的作用

    每个javaEE工程中都有web.xml文件,那么它的作用是什么呢?它是每个web.xml工程都必须的吗? 一个web中可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的. ...

  9. web.xml文件中配置ShallowEtagHeaderFilter需注意的问题

    问题现象及解决方法 今天在Spring MVC应用中加入ShallowEtagHeaderFilter时,发现返回的响应中没有etag头,上网查了很多相关资料,也试了很多方法依然不起作用.在查看web ...

随机推荐

  1. webpack 打包压缩 ES6文件报错UglifyJs + Unexpected token punc ((); 或者 Unexpected token: operator (>)

    webpack 打包压缩 ES6文件报错UglifyJs + Unexpected token punc (();  或者 Unexpected token: operator (>) 解决方案 ...

  2. GEEK学习笔记— —程序猿面试宝典笔记(三)

    所谓笔记,就是比較个人的东西,把个人认为有点意思的东西记录下来~~ 程序猿面试宝典笔记(一)基本概念 程序猿面试宝典笔记(二)预处理.const和sizeof 程序猿面试宝典笔记(三)auto_ptr ...

  3. 数据库open报错ORA-01555: snapshot too old

    原文博客链接地址:数据库open报错ORA-01555: snapshot too old 今天正在东莞蜜月的时候.一个学生说他管理的測试库出问题了,无法open,我们先来看看是什么问题: Recov ...

  4. codeblocks中给GCC编译器加参数

    在使用gcc命令行编译的时候可以使用gcc xxx.c -o xxx.exe -std=c99来使用c99标准编译 但是在codeblocks中默认是不使用c99标准编译的,如何加参数呢? Setti ...

  5. BAT-使用BAT方法设置IP地址

    ::------以下为批处理文件内容---- @echo off ::set slection1= set/p slection1=请输入IP地址: netsh interface ip set ad ...

  6. MAC与PHY连接的管理接口MDIO

    MII Management interface用于MAC层或其他控制芯片(不一定是MAC层芯片,可能是MCU,如高通芯片建构中,1个MAC芯片可以控制2个PHY芯片,然后MCU控制3个网卡(MAC+ ...

  7. D. Powerful array 离线+莫队算法 给定n个数,m次查询;每次查询[l,r]的权值; 权值计算方法:区间某个数x的个数cnt,那么贡献为cnt*cnt*x; 所有贡献和即为该区间的值;

    D. Powerful array time limit per test seconds memory limit per test megabytes input standard input o ...

  8. DWR相关知识

    解决问题:服务器给前台推送消息 用途:聊天,微信签到墙,设备报警

  9. Customize Netbeans Platform Splash Screen and About Dialog

    原帖一直打不开,通过谷歌翻译找到的 http://blogs.kiyut.com/tonny/2007/10/18/customize-netbeans-platform-splash-screen- ...

  10. dm8148 开发之---4路解码器tvp5158

    通过采用自动对比度控制与视频噪声过滤技术的全新 TVP515x 器件,采集4通道视频,可带来优异图像质量并实现市场领先的视频解码性能德州仪器 (TI) 宣布推出可实现优异图像质量的新型 TVP5158 ...