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>是根节点。
  1. <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  4. http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  5. </web-app>

2.<icon>Web应用图标

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

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

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

4.<disciption>Web应用描述

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

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

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

6.<filter>过滤器

    将一个名字与一个实现javaxs.servlet.Filter接口的类相关联。
  1. <filter>
  2.   <filter-name>setCharacterEncoding</filter-name>
  3.   <filter-class>com.myTest.setCharacterEncodingFilter</filter-class>
  4.   <init-param>
  5.     <param-name>encoding</param-name>
  6.     <param-value>UTF-8</param-value>
  7.   </init-param>
  8. </filter>
  9. <filter-mapping>
  10.   <filter-name>setCharacterEncoding</filter-name>
  11.   <url-pattern>/*</url-pattern>
  12. </filter-mapping>

7.<listener>监听器

  1. <listener>
  2.   <listener-class>com.listener.SessionListener</listener-class>
  3. </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
  1. <servlet>
  2. <servlet-name>snoop</servlet-name>
  3. <servlet-class>SnoopServlet</servlet-class>
  4. </servlet>
  5. <servlet-mapping>
  6. <servlet-name>snoop</servlet-name>
  7. <url-pattern>/snoop</url-pattern>
  8. </servlet-mapping>

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

  1. <session-config>
  2.   <session-timeout>120</session-timeout><!-- 单位为分钟 -->
  3. </session-config>

10.<mime-mapping>

  1. <mime-mapping>
  2.   <extension>htm</extension>
  3.   <mime-type>text/html</mime-type>
  4. </mime-mapping>

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

  1. <welcome-file-list>
  2.   <welcome-file>index.jsp</welcome-file>
  3.   <welcome-file>index.html</welcome-file>
  4. </welcome-file-list>

12.<error-page>错误页面

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

spring在web.xml中的配置:

  1.    <!-- Spring -->
  2. <!-- 配置Spring配置文件路径 -->
  3. <context-param>
  4. <param-name>contextConfigLocation</param-name>
  5. <param-value>
  6. classpath:spring/applicationContext.xml
  7. </param-value>
  8. </context-param>
  9. <!-- 配置Spring上下文监听器 -->
  10. <listener>
  11. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  12. </listener>
  13. <!-- Spring -->

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

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

spring MVC在web.xml中的配置:

  1. <!-- Spring MVC配置 -->
  2. <servlet>
  3. <servlet-name>spring</servlet-name>
  4. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  5. <init-param>
  6. <param-name>contextConfigLocation</param-name>
  7. <param-value>/WEB-INF/spring-servlet.xml</param-value> 默认
  8. </init-param>
  9. <load-on-startup>1</load-on-startup>
  10. </servlet>
  11.  
  12. <servlet-mapping>
  13. <servlet-name>spring</servlet-name>
  14. <url-pattern>*.do</url-pattern>
  15. </servlet-mapping>

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

WebAppRootListener在web.xml中的配置:

  1. <context-param>
  2.   <param-name>webAppRootKey</param-name>
  3.   <param-value>webapp.root</param-value>
  4. </context-param>
  5.  
  6. <listener>
  7.   <listener-class>org.springframework.web.util.WebAppRootListener</listener-class>
  8. </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. SpringCloud系列十五:使用Hystrix实现容错

    1. 回顾 上文讲解了容错的重要性,以及容错需要实现的功能. 本文来讲解使用Hystrix实现容错. 2. Hystrix简介 Hystrix是Netflix开源的一个延迟和容错库,用于隔离访问远程系 ...

  2. 下载文件,ie文件名称乱码问题

    设置响应编码,将文件名称用java.net.URLEncoder.encode编码,这样就不会乱码了 java.net.URLEncoder.encode response.setCharacterE ...

  3. CentOS设置sendmail发件人,让sendmail不显示通过XXX代发

    0.有一个十分快速的方法 命令:hostname itzhanzhang.com,但是重启后会失效,于是请接着往下看一劳永逸的方法: 1.设置你的主机名 默认的主机名是类似于“VM_24_76_cen ...

  4. java json字符串和对象互转

    /** * Created by admin on 2017/7/26. */ public class NewPost { private String title; private String ...

  5. 挑战:万能的slash! 判断js中“/”是正则、除号、注释?

    很久以前在其它地方就探讨和关注过这个问题,但都没有满意的解答. 看了zjfeihu 的帖子: <前端代码加亮插件(html,jss,css),支持即时加亮,运行代码>,再次提出这个比较经典 ...

  6. IE的坏脾气——3像素Bug

    在一个典型的浮动中,如下面的图片所示:灰色矩形是外部容器,绿色容器在外部容器内向左浮动,未浮动的部分包围着浮动部分.但是IE6在解析这样的浮动时,会莫名的给靠紧浮动部分的未浮动部分添加3个像素的边距. ...

  7. 如何查询当前手机的cpu架构,so库导入工程又出异常了?

    执行adb命令: adb shell cat /proc/cpuinfo 对应文件夹 AArch64 == arm64-v8a ARMv7 == armeabi-v7a ............等 其 ...

  8. php5.4n 长链接 bug

    运行5.2的部分程序会有中文无法显示的问题 恢复到5.2后中文显示正常

  9. samba在linux下的配置

    Samba配置过程容易遇到的问题 samba的安装很简单,搜索一下都能找到.我主要是记录一上我碰到的问题及解决的办法 第一个问题 防火墙的问题,粗暴的办法是直接把防火墙关掉,合适的做法是把samba用 ...

  10. void bind(String sName,Object object);――绑定:把名称同对象关联的过程

    void bind(String sName,Object object);――绑定:把名称同对象关联的过程 void rebind(String sName,Object object);――重新绑 ...