<wep-app>是根元素,子元素有 (icon?, display-name?, description?, distributable?, context-param*, filter*, filter-mapping*, listener*, servlet*, servlet-mapping*, session-config?, mime-mapping*, welcome-file-list?, error-page*, jsp-config*, resource-env-ref*, resource-ref*, security-constraint*, login-config?, security-role*, env-entry*, ejb-ref*, ejb-local-ref*)
思考: ?和*代表什么
上面标红的部分是我在项目中所使用到的,估计也是最常用的,闲来介绍下这些元素都是做什么的吧。
1.context-param元素
context-param元素含有一对参数名和参数值,用作应用的servlet上下文初始化参数。参数名在整个Web应用中必须是惟一的。
包含三个子元素
有效部署描述符:
<context-param>
<param-name></param-name>
<param-value></param-value>
<description></description>
</context-param>
2.filter元素
filter元素用于指定Web容器中的过滤器。在请求和响应对象被 servlet 处理之前或之后,可以使用过滤器对这两个对象进行操作。利用下一节介绍的filter-mapping元素,过滤器被映射到一个servlet或一个URL模式。这个过滤器的filter元素和filter-mapping元素必须具有相同的名称。
filter-name元素用来定义过滤器的名称,该名称在整个应用中都必须是惟一的。filter-class元素指定过滤器类的完全限定的名称。
部署描述符:
<filter>
<filter-name>webwork</filter-name>
<filter-class>com.webwork.dispatcher.WebworkFilterDispatcher</filter-class>
<init-param>
<param-name>username</param-name>
<param-value>yefei</param-value>
</init-param>
</filter>
3.filter-mapping
filter-mapping 元素用来声明Web应用中的过滤器映射。过滤器可被映射到一个servlet或一个URL模式。将过滤器映射到一个servlet中会造成过滤器作用于servlet上(即把每个请求(由通配符指定)都发送到该 servlet 上)。将过滤器映射到一个URL模式中则可以将过滤器应用于任何资源,只要该资源的URL与URL模式匹配。过滤是按照部署描述符的filter-mapping元素出现的顺序执行的。
部署描述符:
<filter-mapping>
<filter-name>webwork</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>webwork</filter-name>
<servlet-name>webServlet</servlet-name>
</filter-mapping>
4.listener
listener元素用来注册一个监听器类,可以在Web应用中包含该类。使用listener元素,可以收到事件什么时候发生以及用什么作为响应的通知。
部署描述符:
<listener>
<listener-class>com.huawei.netforce.timer.tfTimer</listener-class>
</listener>
com.huawei.netforce.timer.tfTimer 是应用程序中类的全路径
5.servlet
servlet元素用来声明一个servlet。
<!ELEMENT servlet (icon?, servlet-name, display-name?, description?, (servlet-class|jsp-file), init-param*, load-on-startup?, run-as?, security-role-ref*)>
<!ELEMENT servlet-name (#PCDATA)>
<!ELEMENT servlet-class (#PCDATA)>
<!ELEMENT jsp-file (#PCDATA)>
<!ELEMENT init-param (param-name, param-value, description?)>
<!ELEMENT load-on-startup (#PCDATA)>
<!ELEMENT run-as (description?, role-name)>
<!ELEMENT role-name (#PCDATA)>
icon、display-name和description元素的用法和上一节介绍的用法相同。init-param元素与context-param元素具有相同的元素描述符。可以使用init-param子元素将初始化参数名和参数值传递给servlet。
(1)、servlet-name、servlet-class和jsp-file元素
servlet元素必须包含servlet-name元素和servlet-class元素或jsp-file元素其中一个。
描述如下:
servlet-name 元素用来定义servlet的名称,该名称在整个应用中必须是惟一的。
servlet-class 元素用来指定servlet的完全限定的名称。
jsp-file 元素用来指定应用中JSP文件的完整路径。这个完整路径必须由a/开始。
(2)、load-on-startup元素
当启动Web容器时,用 load-on-startup 元素自动将servlet加入内存。加载servlet就意味着实例化这个servlet,并调用它的init方法。可以使用这个元素来避免第一个servlet请求的响应因为servlet载入内存所导致的任何延迟。如果load-on-startup 元素存在,而且也指定了jsp-file元素,则JSP文件会被重新编译成servlet,同时产生的servlet也被载入内存。
load-on-startup 元素的内容可以为空,或者是一个整数。这个值表示由Web容器载入内存的顺序。举个例子,如果有两个servlet元素都含有load-on-startup子元素,则load-on-startup子元素值较小的servlet将先被加载。如果load-on-startup子元素值为空或负值,则由Web容器决定什么时候加载servlet。如果两个servlet的load-on-startup子元素值相同,则由Web容器决定先加载哪一个servlet。
(3)、run-as元素
如果定义了run-as元素,它会重写用于调用Web应用中servlet所设定的Enterprise JavaBean(EJB)的安全身份。Role-name是为当前Web应用定义的一个安全角色的名称。
(4)、security-role-ref元素
在servlet代码编程中访问用户和角色,使用javax.servlet.http.HttpServletRequest.isUserInRole(String role)方法。字符串role被映射到嵌套在一个WEB应用程序部署描述符的<servlet>声明上的<security-role-ref>元素里的<role-name>元素提供的名字上。<role-link>元素映射到一个定义在WEB应用程序描述符的<security-role>元素的<role-name>上。security-role-ref元素的描述如下:
role-link元素用来将安全角色引用链接到已定义的安全角色。role-link元素必须含有已经在security-role元素中定义的一个安全角色的名称。
部署描述符:
<servlet>
<servlet-name>webworkServlet</servlet-name>
<servlet-class>com.huawei.netforce.WebworkServlet</servlet-class>
<init-param>
<param-name>xmlFile</param-name>
<param-value>/WEB-INF/initConfig.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<security-role-ref>
<role-name>manager</role-name>
<role-link>sdctc</role-link>
</security-role-ref>
</servlet>
...
<security-role>
<role-name>sdctc</role-name>
</security-role>
6.servlet-mapping
servlet-mapping 元素将URL模式映射到某个servlet。
部署描述符:
<servlet-mapping>
<servlet-name>webwork</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
7.session-config
session-config元素为Web应用中的javax.servlet.http.HttpSession对象定义参数。
下面是一个部署描述符,在用户最近访问HttpSession对象30分钟后,HttpSession对象默认为无效:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
session-timeout元素用来指定默认的会话超时时间间隔,以分钟为单位。该元素值必须为整数。如果session-timeout元素的值为零或负数,则表示会话将永远不会超时。
8.welcome-file-list
当用户在浏览器中输入的URL不包含某个servlet名或JSP页面时,welcome-file-list元素可指定显示的默认文件.
假设用户在浏览器的地址框中输入 http://host/webAppPrefix/directoryName/ 这样的包含一个目录名但没有包含文件名的URL,用户能得到一个目录表?一个错误?还是标准文件的内容?如果得到标准文件内容,是index.html、index.jsp、default.html、default.htm 或别的什么东西呢?welcome-file-list元素及其辅助的welcome-file元素解决了这个模糊的问题。
welcome-file子元素用于指定默认文件的名称。welcome-file-list元素可以包含一个或多个welcome-file子元素。如果在第一个welcome-file元素中没有找到指定的文件,Web容器就会尝试显示第二个,以此类推。如果两者都没有找到,则结果有赖于所用的服务器(如一个目录列表)。
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
如果用户键入的URL不包含servlet名称、JSP页面或其他资源,则不会在应用目录中找到main.html文件,这时就会显示jsp目录下的welcome.jsp文件
9.jsp-config
一般的如果用到自定义标签就会使用这个元素哦
包括 <taglib> 和 <jsp-property-group> 两个子元素。其中<taglib> 元素在JSP 1.2 时就已经存在;而<jsp-property-group> 是JSP 2.0 新增的元素
完整配法:
<jsp-config>
<taglib>
<taglib-uri>Taglib</taglib-uri>
<taglib-location>/WEB-INF/tlds/MyTaglib.tld</taglib-location>
</taglib>
<jsp-property-group>
<description>Special property group for JSP Configuration JSP example.</description>
<display-name>JSPConfiguration</display-name>
<url-pattern>/jsp/* </url-pattern>
<el-ignored>true</el-ignored>
<page-encoding>GB2312</page-encoding>
<scripting-invalid>true</scripting-invalid>
<include-prelude>/include/prelude.jspf</include-prelude>
<include-coda>/include/coda.jspf</include-coda>
</jsp-property-group>
</jsp-config>
taglib-uri 元素是用于Web应用中的标记库的URI。taglib-uri元素的值与WEB-INF目录相对应。
taglib-location 元素包含一个位置,其中可以找到标记库的标记库描述符(TLD)文件
<jsp-property-group>定义了一组JSP的特性。这些特性实际上对应JSP的page directive定义的特性。通过<jsp-property-group>只不过可以方便地对多个具有相同属性的JSP统一定义。
1.<description>:设定的说明;
2.<display-name>:设定名称;
3.<url-pattern>:设定值所影响的范围,如:/CH2或/*.jsp;
4.<el-ignored>:若为true,表示不支持EL语法;
& <60;5.<scripting-invalid>:若为true,表示不支持<%scripting%>语法;
6.<page-encoding>:设定JSP网页的编码;
7.<include-prelude>:设置JSP网页的抬头,扩展名为.jspf;
8.<include-coda>:设置JSP网页的结尾,扩展名为.jspf。
其他的我觉着是不常用的,至少是我还没有用到的,如果想知道用法,请参照http://elderheart.blog.sohu.com/31690693.html