前言

依自己目前的所闻所见,每个项目的WEB-INF下都会带有一个web.xml配置文件。当启动项目时,web容器(tomcat)会首先去读取web.xml中的内容,读取加载完成后才算完成了项目的启动。

详解

总体结构如下

<?xml version="1.0" encoding="UTF-8"?>
<web-app 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"
version="3.0" metadata-complete="true"> <display-name>Archetype Created Web Application</display-name>
<!--在这里配置-->
</web-app>

头部         :    schema 引用

<web-app>:具体配置配置在此标签内,如下常见配配置项

1.  <context-param>:配置上下文的初始参数

 <!--容器在启动时就加载spring的配置文件-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param> <context-param>
<param-name>name</param-name>
<param-value>小明</param-value>
</context-param>

参数会加载到  context——>parameters中

此时可以在controller中利用以下方法获取

    @RequestMapping("/home")
public String home(HttpServletRequest request){
String name = request.getServletContext().getInitParameter("name");
System.out.println(name+"_______________________");
return "/index2";
}

2.<listener>:配置监听器

<!--spring 启动IOC容器的监听器-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

3.<servlet>:配置servlet

    <!--spring mvc 的DispatcherServlet-->
<servlet>
<servlet-name>enterprise-servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--spring mvc 的 配置文件,如果配置文件名和servlet-name相同则不需要此配置-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:enterprise-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<!--对文件上传的限制-->
<multipart-config>
<max-file-size>52428800</max-file-size>
<max-request-size>52428800</max-request-size>
<file-size-threshold>0</file-size-threshold>
</multipart-config>
</servlet>
<servlet-mapping>
<servlet-name>enterprise-servlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

也可单独使用,使用默认servlet加载静态资源

<!--tomcat默认servlet为default-->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/*.css</url-pattern>
</servlet-mapping>

4.<filter>:配置过滤器

 <!--配置字符编码过滤器-->
<!--字符编码过滤器必须要配置在所有过滤器前面-->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

5.<session-config>:配置session过期时间

 <!--session的过期时间,单位为分钟,优先级  servlet api(setMaxInactiveInterval(秒))—> 项目/web.xml—>tomcat/web.xml-->
<session-config>
<session-timeout>30</session-timeout>
</session-config>

6.<error-page>:配置错误跳转页面

<!--当页面访问不存在的请求时就跳转到404.jsp页面-->
<error-page>
<error-code>404</error-code>
<location>/WEB-INF/pages/error/404.jsp</location>
</error-page>

7.<resource-ref>:配置JNDI数据源

 <resource-ref>
<description>DHCP数据库连接池</description>
<res-ref-name>jdbc/microDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

此处可参看:这里  查看如何实现利用JNDI实现数据库连接。

加载顺序:会先读取<context-param>和<listener>两个节点

——>创建servletContext,将<context-param>的键值对交给servletContext

——>创建listener的类实例

——>filter

——>servlet(load-on-startup:标记容器是否在启动的时候就加载这个servlet,越小越先执行(0-正整数),负数或不配置则等到调用该servlet时才加载)

【web.xml】项目从web.xml开始的更多相关文章

  1. maven多模块项目,多web合并项目使用心得

    Fixflow,做中国最好的开源流程引擎!项目地址https://github.com/fixteam/fixflow 此文章适合maven初学者或想接触maven的用户,讲的只是皮毛,高手请自觉略过 ...

  2. Web API 2 入门——Web API 2(C#)入门(谷歌翻译)

    ASP.NET Web API 2(C#)入门 在这篇文章中 本教程中使用的软件版本 创建一个Web API项目 添加模型 添加控制器 使用Javascript和jQuery调用Web API 运行应 ...

  3. javaWeb项目中Web.xml的基本配置

    这个地址写的非常好 ,欢迎大家访问 Å:http://www.cnblogs.com/hxsyl/p/3435412.html 一.理论准备 先说下我记得xml规则,必须有且只有一个根节点,大小写敏感 ...

  4. maven项目提示web.xml is missing或红色感叹号

    1.web.xml is missing and <failOnMissingWebXml> is set to true 提示信息应该能看懂.也就是缺少了web.xml文件,<fa ...

  5. JavaWeb项目中web.xml有关servlet的基本配置

    JavaWeb项目中web.xml有关servlet的基本配置: 我们注意到,tomcat下的conf中也有一个web.xml文件,没错的,所有的JavaWeb项目中web.xml都继承自服务器下的w ...

  6. SpringMVC项目中web.xml中的节点载入顺序问题

    SpringMVC项目中web.xml中的节点载入顺序问题,之前以为web.xml中就是一些配置信息,和节点的顺序没有关系.后来才发现初始化时的载入顺序是和节点的顺序相关的. 完整的web.xml文件 ...

  7. 关于IDEA中web项目中web.xml配置文件标红的解决办法

    原文链接 https://blog.csdn.net/qq_33451695/article/details/86684127 解决方法前提:web.xml没有实际错误,但依然被web.xml标红 出 ...

  8. java web 项目中web.xml 详解

    web.xml详述: web.xml 是每个Java web 项目的必备文件,又叫做部署描述符,Servlet规范中定义的,是web应用的配置文件. 概念: .部署描述符文件就像所有XML文件一样,必 ...

  9. maven web项目中web.xml

    web.xml 不是web工程必须的. web.xml文件用来配置那些东西:欢迎页,servlet,filter等. web.xml文件中定义了多少种标签元素,web.xml 中就可以出现它的模式文件 ...

  10. javaWeb项目中web.xml的xsd( XML Schemas Definition)文件

    <?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns="http://w ...

随机推荐

  1. 检查linux版本命令

    lsb_release -a cat /etc/issue cat /proc/version uname -a cat /etc/redhat-release

  2. Java排序 - 不实用的几个排序算法 -- 睡眠排序、猴子排序、面条排序、珠排序

    介绍几个不实用的排序算法,一来可以在学习时增加一些乐趣,放松一下自己,二来可以学习一下.思考一下这些算法失败在哪里,又是否存在一些好的地方? 睡眠排序 这是一个思想比较简单,脑洞巨大的算法 -- 我们 ...

  3. python一些好文章链接收藏

    程序员之路:python3+PyQt5+pycharm桌面GUI开发 python-nmap的函数学习 python标准库中socket模块详解 python队列Queue 简单认识python cm ...

  4. Springboot 2.x 无法读取yml配置值的问题:Could not resolve placeholder xxx value '${xxx}'

    最近在用Springboot2.1 新建demo工程的时候,在DataSourceConfig类中通过 @Value("${spring.datasource.url}") 的方式 ...

  5. 百度TTS的来由

    #### https://home-assistant.io/components/tts.baidu/#### https://github.com/charleyzhu/HomeAssistant ...

  6. python学习笔记(5)

    .................................................................................................... ...

  7. linux configure 应用

    linux下configure命令详细介绍 2018年01月11日 15:02:20 冷月霜 阅读数:705 标签: configure 更多 个人分类: 数据库技术   Linux环境下的软件安装, ...

  8. sketch2code 有的叫screenshot to code什么的

    先mark一下项目,回头再深究 https://github.com/mzbac/sketch2code https://www.floydhub.com/emilwallner/datasets/h ...

  9. mysql学习2

    1.视图 视图是一个虚拟表(非真实存在),其本质是[根据sql语句获取动态的数据集,并为其命名],用户使用时只需要使用[名称]即可获取结果集,并可以将其当作表来使用. 搜索临时表 SELECT * F ...

  10. Linux_常用命令简单介绍(netstat,awk,top,tail,head,less,more,cat,nl)

    1.netstat netstat -tnl | grep 443 (查看443端口是否被占用) root用户,用netstat -pnl | grep 443 (还可显示出占用本机443端口的进程P ...