web.xml配置说明
前言
首先,web.xml文件的作用是配置web项目启动时加载的信息。(web.xml并不是一个Web的必要文件,没有web.xml,网站仍然是可以正常工作的。)
而这些配置自然是通过标签来实现的,
同一类的配置节点的加载顺序与它们在web.xml中的先后顺序有关(如“filter-mapping节点”必须出现在与其有相同“filter-name值”的“filter节点之后)。
而不同类配置节点在web.xml中的先后顺序与加载顺序无关,
即无论如何配置,web.xml的加载顺序都为:context-param -> listener -> filter -> servlet,
而同类型之间的加载顺序为其对应的mapping节点书写顺序。
下面详细的说一下各个主要的标签节点
1、web-app
随着java版本的不断更新,web.xml配置文件的版本也在不断更新,而用于“定义web.xml版本”的文件,我们称之为“部署描述文件”(web.xml deployment descriptor,又称为“DD”),这些描述文件都是官方定义的。
我们在web.xml中能使用那些标签,怎么用,都是由“部署描述文件”定义出来的。
所以在web.xml一开始,就需要先选择“部署描述文件”版本,即书写web-app标签的属性,
<web-app>有四个属性:
1、xmlns:申明了web.xml文件的名称空间的xml方案文档的位置;
2、xmls:xsi:指定了命名空间的案例;
3、xsi:schemeLocation:指定了发方案的位置;
4、version:制定方案的版本;
在网站:http://www.mkyong.com/web-development/the-web-xml-deployment-descriptor-examples/
中有各个描述的写法例子。
如,Java EE 7对应的方案版本就是3.1,写法样例为:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
</web-app>
2、context-param
通过这个标签,可以设置多个固定的“键值对”。
这些键值对会被放到ServletContext上下文对象中,之后在程序中可以根据键值名来获取键值。
(值得一提的是,对于这些键值对的操作可以早于程序的完全启动,比如,在如下的监听器的初始化方法中,就可获取这些键值对)
2.1、param-name
键值名
2.2、param-value
键值
3、listener
listener监听器随web应用的启动而启动,只会初始化一次,随web应用的停止而销毁。
根据此特性我们可以把一些只需初始化一次的操作放在此处,如:连接数据库、提前加载某些页面等。
3.1、listen-class
指定监听类,该类需要继承ServletContextListener类,包含初始化方法contextInitialized(ServletContextEvent event) 和 销毁方法contextDestoryed(ServletContextEvent event)
4、filter
filter为“过滤器”,他的执行顺序是在listen之后,在servlet之前。
从tomcat等相关web容器的内部运行机制可知,所有的访问请求,最终都会被封装成“request”和“response”两个对象,然后tomcat再把这两个对象交由servlet处理,而filter则是在“交给servlet”之前,对这两个对象进行处理了,即filter过滤的是request和response两个对象。
5、servlet
此标签的作用是申明一个servlet,可以对该servlet进行“初始化”。
5.1、servlet-name
设置servlet的名称,该名称在整个项目中必须是唯一的。
5.2、servlet-class
对应servlet类的完全限定名
5.3、init-param
可选参数,常见的有四种:
contextConfigLocation
此参数可以配置servlet的“ServletConfig”。
web容器会在初始servlet时,将该servlet的ServletConfig传入给他,ServletConfig中可以涵盖多个key-value形式的配置信息,用作servlet的初始化。
namespace
WebApplicationContext命名空间。默认值是[server-name]-servlet。
transformWsdlLocations
可以设置true和false两种值。
默认的wsdl文件的路径只能是静态设定,而将此参数设置为true后,就可设置相对路径。
5.4、load-on-startup
其内容可以为空,也可以是一个整数,此值代表了web容器加载该servlet进内存的顺序。
当是负数或空值时,则由web容器决定什么时候加载该servlet,否则较小的值的servlet先被加载。
例
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>pers.test.service.MyServlet</servlet-class>
<!--可选标签,在使用框架时,多需使用此标签进行初始化-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:config/config.xml</param-value>
</init-param>
<!--可选标签-->
<load-on-startup>1</load-on-startup>
</servlet>
6、servlet-mapping
此标签的作用是将刚刚<servlet>标签定义的servlet映射到URL,即告诉服务器,该servlet对那些请求的url作出响应。
6.1、servlet-name
对应的servlet名称,与<servlet>标签中的<servlet-name>标签对应。
6.2、url-pattern
一个servlet可以配置多个url路径,
假设你ip地址绑定的域名为www.demo.com,则此标签设置为/test时,该servlet响应的完整url就是www.demo.com/test
如果此标签的映射路径只写一个“/“,则表示该servlet为”缺省Servlet“,凡是在web.xml文件中找不到匹配的url路径请求,都会访问到此Servlet上,即该servlet用于处理其他servlet都不处理的请求。
例
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
7、session-config
设置session的过期时间,时间是以分钟为单位的。
<session-timeout>子标签用来设定过期时间。
例
<session-config> <!--session5分钟后过期--> <session-timeout>5</session-timeout> </session-config>
8、welcome-file-list
定义欢迎页面。
如果容器为tomcat,那么当用户访问根目录时(根目录是可以改变的),会访问此标签指定的页面。
此标签可以有多个<welcome-file>子标签,
每一个<welcome-file>子标签对应一个欢迎页,
当定义有多个欢迎页时,显示时会从第一个开始找起,如果第一个存在就显示第一个,后面的就不起作用了,否则继续找第二个标签页,以此类推。
例:
<welcome-file-list> <welcome-file>index.jsp</welcome-file> <welcome-file>index2.jasp</welcome-file> </welcome-file-list>
web.xml配置说明的更多相关文章
- javaweb的web.xml配置说明,初始化过程
[重点]初始化过程可知容器对于web.xml的加载过程是context-param >> listener >> fileter >> servlet 首先了解 ...
- eclipse : java项目中的web.xml( Deployment Descriptor 部署描述文件 )配置说明
context-param.listener.filter.servlet 首先可以肯定的是,加载顺序与它们在 web.xml 配置文件中的先后顺序无关.即不会因为 filter 写在 listen ...
- web.xml文件配置说明
web.xml作用: web.xml主要用来配置Filter.Listener.Servlet等,当我们去启动一个WEB项目时,容器(jetty.tomcat等)首先会读取项目web.xml配置文件里 ...
- web.xml 中 resource-ref 的注意事项
配置说明: web.xml 中配置 <resource-ref> <description>Employees Database for HR Applications< ...
- 如何用Java类配置Spring MVC(不通过web.xml和XML方式)
DispatcherServlet是Spring MVC的核心,按照传统方式, 需要把它配置到web.xml中. 我个人比较不喜欢XML配置方式, XML看起来太累, 冗长繁琐. 还好借助于Servl ...
- web.xml中welcome-file-list的作用
今天尝试使用struts2+ urlrewrite+sitemesh部署项目,结果发现welcome-file-list中定义的欢迎页不起作用: <welcome-file-list> & ...
- web.xml中load-on-startup的作用
如下一段配置,熟悉DWR的再熟悉不过了:<servlet> <servlet-name>dwr-invoker</servlet-name> <ser ...
- springmvc配置文件web.xml详解各方总结(转载)
Spring分为多个文件进行分别的配置,其中在servlet-name中如果没有指定init-param属性,那么系统自动寻找的spring配置文件为[servlet-name]-servlet.xm ...
- Java web.xml 配置详解
在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰. 首先可以肯定的是 ...
随机推荐
- ListView的BeginUpdate()和EndUpdate()的用处
许多Windows 窗体控件(例如,ListView 和 TreeView 控件)实现了 BeginUpdate 和EndUpdate 方法,至于为何要这样用简单说明一下. 当我们向一个Listvie ...
- Linux 配置SSH 无密钥登陆
根据SSH 协议,每次登陆必须输入密码,比较麻烦,SSH还提供了公钥登陆,可以省去输入密码的步骤. 公钥登陆:用户将自己的公钥存储在远程主机上,登陆的时候,远程主机会向用户发送一串随机字符串,用户用自 ...
- vue全局使用axios插件请求ajax
vue全局使用axios插件请求ajax Vue 原本有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方宣布停止更新vue-resource,并推 ...
- P2P原理(转)
P2P(Peer to Peer)对等网络 P2P技术属于覆盖层网络(Overlay Network)的范畴,是相对于客户机/服务器(C/S)模式来说的一种网络信息交换方式.在C/S模式中,数据的分发 ...
- 设计模式理解(九)结构型——外观(Facade)
等了好久,终于想起来开写了,这次写的是外观模式,记得大学时弄课程设计,外观模式搞得我比较混乱,因为单词不认识,后来觉得有点蛋疼,感觉是一坨混乱的东西然后加个壳再弄几个外部调用的接口而已.个人认为,Fa ...
- Codeforces 1045B Space Isaac - 数论 - Hash
题目传送门 传送门I 传送门II 传送门III 题目大意 给定将$\left \{ 0, 1, \dots, m - 1\right \}$分成了不相交的两个非空集合$A$和$B$,给定$A$,问存在 ...
- Spring Boot Log4j2 日志学习
简介 Java 中比较常用的日志工具类,有: Log4j. SLF4j. Commons-logging(简称jcl). Logback. Log4j2(Log4j 升级版). Jdk Logging ...
- 分布式系列 - dubbo服务telnet命令
dubbo服务发布之后,我们可以利用telnet命令进行调试.管理.Dubbo2.0.5以上版本服务提供端口支持telnet命令,下面我以通过实例抛砖引玉一下: 1.连接服务 测试对应IP和端口下的d ...
- Learning-Python【19】:Python常用模块(2)—— os、sys、shutil
os模块:与操作系统相关的模块 import os # 获取当前的工作目录 print(os.getcwd()) # 切换工作目录 os.chdir(r'E:\Python\test') print( ...
- js Infinity 属性
Infinity 属性用于存放表示正无穷大的数值. 说明 无法使用 for/in 循环来枚举 Infinity 属性,也不能用 delete 运算符来删除它. Infinity 不是常量,可以把它设置 ...