16.部署描述符文件
1.部署描述符文件的作用:
部署描述符文件:
web.xml叫做部署描述符文件
是在Servlet规范中定义的,是web应用的配置文件。
作用:
描述了容器运行程序所需要的信息,提供站点的配置设定
web.xml文件是XML文档
必须以XML声明开头,指出XML版本及字符编码
顶层(根)元素为<web-app>,元素名大小写敏感
web-App和WEB-APP都是不合法的,web-app必须用小写
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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"> </web-app>
web.xml文件是XML文档
必须以XML声明开头,指出XML版本及字符编码
顶层(根)元素为<web-app>,元素名大小写敏感
各元素对出现在其他元素中的次序敏感
可省略某些可选元素,但不能将其放在不正确的位置
xsd文档的作用是定义XML文档的合法构建模块,类似 dtd
学习XML Schema(.xsd)教程
http://www.w3school.com.cn/schema/index.asp
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd
元素 |
含义 |
icon |
指出IDE和GUI工具可用来代表Web应用的一个和两个图像文件的位置。 |
display-name |
display-name 元素提供GUI工具可能会用来标记这个特定应用的一个名称。 |
description |
提供关于 Web 应用程序的描述性文本。 |
context-param |
用来设定web应用的环境参数。 |
filter |
过滤器元素将一个名字与一个实现javax.servlet.Filter接口的类相关联。 |
filter-mapping |
一但命名了一个过滤器,就利用filter-mapping元素把它与一个或多个servlet或JSP页面相关联。 |
listener |
指出事件监听程序类 |
servlet |
servlet元素用于声明一个servlet |
servlet-mapping |
servlet-mapping定义了servlet和URL模式之间的映射 |
元素 |
含义 |
icon |
指出IDE和GUI工具可用来代表Web应用的一个和两个图像文件的位置。 |
display-name |
display-name 元素提供GUI工具可能会用来标记这个特定应用的一个名称。 |
description |
提供关于 Web 应用程序的描述性文本。 |
context-param |
用来设定web应用的环境参数。 |
filter |
过滤器元素将一个名字与一个实现javax.servlet.Filter接口的类相关联。 |
filter-mapping |
一但命名了一个过滤器,就利用filter-mapping元素把它与一个或多个servlet或JSP页面相关联。 |
listener |
指出事件监听程序类 |
servlet |
servlet元素用于声明一个servlet |
servlet-mapping |
servlet-mapping定义了servlet和URL模式之间的映射 |
元素 |
含义 |
resource-ref |
包含了部署组件对外部资源的引用声明 |
resource-env-ref
|
包含了部署组件和对部署组件环境中的资源有关的管理对象的引用
|
distributable |
支持集群的服务器可安全的在多个服务器上分布Web应用
|
env-entry |
声明了一个应用程序的环境入口 |
ejb-ref |
声明了一个对企业bean的home引用 |
ejb-local-ref |
声明了对企业bean的本地home引用 |
2.常用元素的声明与配置
icon
<icon> <small-icon>/images/small.gif</small-icon> <large-icon>/images/large.gif</large-icon> </icon>
包含small-icon和large-icon元素,为大型和小型GIF或JPEG图标图片指定文件名
用于在GUI工具中表示父元素。
display-name:
<display-name>myFirstApp</display-name>
定义应用的名称。
description
<description>测试应用V1.0</description>
对应用做出描述。
context-param
<context-param> <param-name>param_name</param-name> <param-value> param_value</param-value> </context-param>
context-param 应用范围内初始化参数
<param-name>参数名称</param-name>
<param-value>值</param-value>
filter
声明了Web应用程序中的过滤器
filter-name元素是过滤器的逻辑名称。
filter-class是过滤器的完全限定类名。
init-param元素包含的名-值对作为此过滤器的初始化参数。
当指定可选的async-supported元素时,表示该过滤器支持异步请求处理。
<filter> <filter-name>authorizefilter</filter-name> <filter-class>onest.web.filter.AuthorizeFilter</filter-class> </filter>
filter-mapping
listener
servlet
servlet元素用于声明一个servlet
jsp-file元素命名JSP页面,包含到以“/”开头的Web应用程序中一个JSP文件的完全路径。
所指的JSP文件可存放于WEB-INF目录
servlet-name元素包含了servlet的规范名称。
servlet-class包含了servlet的完全限定类名。
load-on-startup元素表示该servlet应该在Web应用程序启动时加载。
servlet-mapping
session-config
控制会话超时
如果某个会话在一定的时间内未被访问,服务器可以把它扔掉以节约内存。
session-config和session-timeout元素给出一个适用于所有服务器的明确的超时期
session-timeout元素的值的单位为分钟
mime-mapping
关联文件与MIME类型
服务器一般都具有一种让Web站点管理员将文件扩展名与媒体相关联的方法。如:
自动给予名为mom.jpg的文件一个image/jpeg的MIME类型
如果希望将特殊的文件发送到客户机时分配为某种MIME类型,使用mime-mepping元素
<mime-mapping> <extension>foo</extension> <mime-type>application/x-fubar</mime-type> </mime-mapping>
welcome-file-list
error-page
jsp-config
提供安全性:
利用web.xml中相关元素为服务器内建功能提供安全性:
指定验证的方法:<login-config>
限制对web资源的访问:<security-constraint>
分配角色名:<security-role>
配置认证方法
auth-method为Web应用程序配置认证机制
该元素的内容必须是BASIC、DIGEST、FORM、CLIENT-CERT、或提供商指定的认证模式
realm-name表示为Web应用程序选择用于认证模式的领域名。
form-login-config指定应该用于基于表单登录的登录和错误页面
3.JavaEE元素
<distributable/>:支持集群的服务器可安全的在多个服务器上分布Web应用
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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"> <distributable/> </web-app>
<resource-env-ref>:声明一个与某个资源有关的管理对象
<resource-env-ref> <resource-env-ref-name>jdbc/mssql</resource-env-ref-name> <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type> </resource-env-ref>
<resource-ref>:声明一个资源引用
<resource-ref> <description>JNDI JDBC DataSource</description> <res-ref-name>jdbc/data</res-ref-name> <res-type>javax.sql.DataSoruce</res-type> <res-auth>Container</res-auth> </resource-ref>