web.xml结构

<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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值