文档章节

web工程中web.xml元素加载顺序以及配置实例

j
 jhon_n
发布于 2017/10/18 16:34
字数 715
阅读 10
收藏 0

 

web工程中web.xml元素加载顺序以及配置实例

简介

web.xml是web工程的配置文件,容器加载web工程时,会首先从WEB-INF中查询web.xml,并加载其中的配置信息,可以将web.xml认为是web工程的入口。

web.xml中包含有welcome欢迎页面、servlet、servlet-mapping、filter、listener和启动加载级别等。

web.xml加载顺序

  1. 容器读取工程的配置文件web.xml,读取<listener>和<context-param>两个节点。
  2. 容器创建ServletContext,所有的web项目都将共享该ServletContext。
  3. 容器将<context-param>转换为键值对,并交给ServletContext。
  4. 容器创建<listener>中的类的实例,创建监听器

web.xml内容详解

复制代码

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xmlns:web="http://java.sun.com/xml/ns/javaee" xmlns="http://java.sun.com/xml/ns/javaee"

    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"

    id="WebApp_ID" version="3.0">

    <display-name>console</display-name>

    <!--servletContext加载的属性信息 -->

    <context-param>

        <param-name>contextConfigLocation</param-name>

        <param-value>classpath:spring.xml,classpath:spring-mybatis.xml,classpath:spring-shiro.xml</param-value>

    </context-param>

    <!-- 定义过滤器的名称,以及其初始化参数-->

    <filter>

        <filter-name>shiroFilter</filter-name>

        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>

        <init-param>

            <param-name>targetFilterLifecycle</param-name>

            <param-value>true</param-value>

        </init-param>

    </filter>

    <!-- 定义url被哪个filter过滤,下面的配置表示所有的请求都必须经过shiroFilter  -->

    <filter-mapping>

        <filter-name>shiroFilter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

    <filter>

        <filter-name>ResponseCrossFilter</filter-name>

        <filter-class>com.emcc.changedig.filter.ResponseCrossFilter</filter-class>

    </filter>

    <filter-mapping>

        <filter-name>ResponseCrossFilter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

    <!--  定义监听器,控制容器在启动和停止时的行为 -->

    <listener>

        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

    </listener>

    <filter>

        <filter-name>encodingFilter</filter-name>

        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

        <init-param>

            <description>字符集编码</description>

            <param-name>encoding</param-name>

            <param-value>UTF-8</param-value>

        </init-param>

    </filter>

    <filter-mapping>

        <filter-name>encodingFilter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

    <!--  清理监听器,当应用停止时,使用该listener释放资源 -->

    <listener>

        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>

    </listener>

    <! – 定义servlet,初始化参数以及启动顺序 -->

    <servlet>

        <description>spring mvc servlet</description>

        <servlet-name>springMvc</servlet-name>

        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <init-param>

            <description>spring mvc 配置文件</description>

            <param-name>contextConfigLocation</param-name>

            <param-value>classpath:spring-mvc.xml</param-value>

        </init-param>

        <load-on-startup>1</load-on-startup>

    </servlet>

    <servlet> 

        <servlet-name>DruidStatView</servlet-name> 

        <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class> 

        <init-param> 

            <!-- 允许清空统计数据 --> 

            <param-name>resetEnable</param-name> 

            <param-value>true</param-value> 

        </init-param> 

        <init-param> 

            <!-- 用户名 --> 

            <param-name>loginUsername</param-name> 

            <param-value>druid</param-value> 

        </init-param> 

        <init-param> 

            <!-- 密码 --> 

            <param-name>loginPassword</param-name> 

            <param-value>druid</param-value> 

        </init-param> 

    </servlet> 

    <!-- 定义servlet 映射规则 -->

    <servlet-mapping> 

        <servlet-name>DruidStatView</servlet-name> 

        <url-pattern>/druid/*</url-pattern> 

    </servlet-mapping>

    <servlet-mapping>

        <servlet-name>springMvc</servlet-name>

        <url-pattern>/</url-pattern>

    </servlet-mapping>

    <session-config>

        <!-- 时间单位是分钟 -->

        <session-timeout>360</session-timeout>

    </session-config>

    <!-- default表示,对客户端请求的静态资源,交由默认的servlet来处理 -->

    <servlet-mapping>

        <servlet-name>default</servlet-name>

        <url-pattern>*.css</url-pattern>

    </servlet-mapping>

    <servlet-mapping>

        <servlet-name>default</servlet-name>

        <url-pattern>*.js</url-pattern>

    </servlet-mapping>

    <servlet-mapping>

        <servlet-name>default</servlet-name>

        <url-pattern>*.ico</url-pattern>

    </servlet-mapping>

    <servlet-mapping>

        <servlet-name>default</servlet-name>

        <url-pattern>*.gif</url-pattern>

    </servlet-mapping>

    <servlet-mapping>

        <servlet-name>default</servlet-name>

        <url-pattern>*.jpg</url-pattern>

    </servlet-mapping>

    <servlet-mapping>

        <servlet-name>default</servlet-name>

        <url-pattern>*.png</url-pattern>

    </servlet-mapping>

    <servlet-mapping>

        <servlet-name>default</servlet-name>

        <url-pattern>*.bmp</url-pattern>

    </servlet-mapping>

    <servlet-mapping>

        <servlet-name>default</servlet-name>

        <url-pattern>*.jpeg</url-pattern>

    </servlet-mapping>

    <servlet-mapping>

        <servlet-name>default</servlet-name>

        <url-pattern>*.swf</url-pattern>

    </servlet-mapping>

    <servlet-mapping>

        <servlet-name>default</servlet-name>

        <url-pattern>*.flv</url-pattern>

    </servlet-mapping>

    <servlet-mapping>

        <servlet-name>default</servlet-name>

        <url-pattern>*.xml</url-pattern>

    </servlet-mapping>

    <servlet-mapping>

        <servlet-name>default</servlet-name>

        <url-pattern>*.txt</url-pattern>

    </servlet-mapping>

    <servlet-mapping>

        <servlet-name>default</servlet-name>

        <url-pattern>*.htm</url-pattern>

    </servlet-mapping>

    <servlet-mapping>

        <servlet-name>default</servlet-name>

        <url-pattern>*.html</url-pattern>

    </servlet-mapping>

    <!--  定义错误返回页面  -->

    <error-page>

        <error-code>404</error-code>

        <location>/web/error/404.html</location>

    </error-page>

</web-app>

本文转载自:

j
粉丝 0
博文 2
码字总数 2559
作品 0
私信 提问
综合技术 --maven web.xml详解

//参考 http://mianhuaman.iteye.com/blog/1105522 本项目的web.xml文件内容 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/d......

求是科技
2015/08/19
786
0
web.xml 中元素加载顺序及其详解

一、概述 1、启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点。 2、紧接着,容器创建一个ServletContext(servlet上下文),这个web...

shanxi_liyong
2014/11/20
378
3
web.xml 常用标签配置(转)

1.Web.xml作用: 每一个javaWeb工程都有一个web.xml配置文件,web.xml文件是用来初始化工程配置信息的,比如说welcome页面,filter,listener,servlet,servlet-mapping,启动加载级别等等,...

hxlzpnyist
2012/05/29
251
0
web.xml之context-param,listener,filter,servlet加载顺序及其周边

先以加载spring为例子看看加载顺序的作用: Spring加载可以利用ServletContextListener 实现,也可以采用load-on-startup Servlet 实现,但比如filter 需要用到 bean ,但加载顺序是: 先加载...

晨曦之光
2012/05/23
4K
0
web.xml中load-on-startup的作用

如下一段配置,熟悉DWR的再熟悉不过了: dwr-invoker org.directwebremoting.servlet.DwrServlet debug true 1 dwr-invoker /dwr/* 我们注意到它里面包含了这段配置:1,那么这个配置有什么作...

长平狐
2012/11/28
83
0

没有更多内容

加载失败,请刷新页面

加载更多

js中将字符串转换成json的三种方式

使用ajax的开发项目过程中,经常需要将json格式的字符串返回到前端,前端解析成js对象(JSON )。 ECMA-262(E3) 中没有将JSON概念写到标准中,还好在 ECMA-262(E5) 中JSON的概念被正式引入了...

物种起源-达尔文
4分钟前
0
0
centos7下面python3.7安装

我这里使用的是CentOS7,默认系统自带python2.7的版本,这个版本被系统很多程序所依赖,所以不建议删除,如果使用最新的Python3那么我们知道编译安装源码包和系统默认包之间是没有任何影响的...

chenhongjiang
10分钟前
1
0
带你入门SpringCloud统一配置 | SpringCloud Config

前言 在微服务中众多服务的配置必然会出现相同的配置,如果配置发生变化需要修改,一个个去修改然后重启项目的方案是绝对不可取的。而 SpringCloud Config 就是一个可以帮助你实现统一配置选...

桌前明月
10分钟前
0
0
9.21 日常记录

先说说最近的状态: 一句话,很不好。缺失了目标感,做什么事都是浑浑噩噩的。 每天都是想着轻松的活路去做复习,没有看书,根本没有去思考如何让自己变得更好。 回想起年初的约定,也是一个...

Garphy
19分钟前
0
0
借助Python 函数进行模块化代码

你是否对函数、类、方法、库和模块等花哨的编程术语感到困惑?你是否在与变量作用域斗争?无论你是自学成才的还是经过正式培训的程序员,代码的模块化都会令人困惑。但是类和库鼓励模块化代码...

问题终结者
23分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部