web.xml标签详解

<!--该元素声明应用范围内的初始化参数-->
<context-param>
    <!--声明描述信息 -->
    <description></description>
    <!--用于指定上下文参数的名称-->
    <param-name>contextConfigLocation</param-name>
    <!--用于指定上下文参数的值-->
    <param-value>contextConfigLocationValue</param-value>
 </context-param>

作用:该元素用来声明应用范围(整个WEB项目)内的上下文初始化参数。
param-name 设定上下文的参数名称。必须是唯一名称
param-value 设定的参数名称的值

  • 初始化过程:
  1. 在启动Web项目时,容器(比如Tomcat)会读web.xml配置文件中的两个节点和。
  2. 接着容器会创建一个ServletContext(上下文),应用范围内即整个WEB项目都能使用这个上下文。
  3. 接着容器会将读取到转化为键值对,并交给ServletContext。
  4. 容器创建中的类实例,即创建监听(备注:listener定义的类可以是自定义的类但必须需要继承ServletContextListener)。
  5. 在监听的类中会有一个contextInitialized(ServletContextEvent event)初始化方法,在这个方法中可以通过event.getServletContext().getInitParameter(“contextConfigLocation”) 来得到context-param 设定的值。在这个类中还必须有一个contextDestroyed(ServletContextEvent event) 销毁方法.用于关闭应用前释放资源,比如说数据库连接的关闭。
  6. 得到这个context-param的值之后,你就可以做一些操作了.注意,这个时候你的WEB项目还没有完全启动完成.这个动作会比所有的Servlet都要早。
    由上面的初始化过程可知容器对于web.xml的加载过程是context-param >> listener >> fileter >> servlet
    -如何使用
    1. 页面中
      ${initParam.contextConfigLocation}
    2. servelet中
String paramValue=getServletContext().getInitParameter("contextConfigLocation")
<!--声明WEB应用的描述信息-->
<description></description>
<!--定义了WEB应用的名字-->
<display-name></display-name>
<!--用于-->
<distributable/>
<!--声明一个EJB的本地主目录的应用-->
<ejb-local-ref>
    <!--声明描述信息-->
    <description></description>
<!--当前bean从一个不同jar包中引用另外一个bean的名称。通过ejb-link元素定义的名称必须使用"#"和bean注册名与Web应用程序中war文件的位置相关联-->
    <ejb-link></ejb-link>
    <!--java:comp/env的对应的EJB引用名-->
    <ejb-ref-name></ejb-ref-name>
    <!--用于声明实体或会话的bean类型-->
    <ejb-ref-type></ejb-ref-type>
    <!--用于指定包含企业Bean本地接口的完全限定名称-->
    <local></local>
    <!--用于指定包含企业Bean本地Home接口的完全限定名称-->
    <local-home></local-home>
</ejb-local-ref>
<!--声明一个EJB的主目录的引用-->
<ejb-ref>
    <!--声明描述信息-->
    <description></description>
<!--当前bean从一个不同jar包中引用另外一个bean的名称。通过ejb-link元素定义的名称必须使用"#"和bean注册名与Web应用程序中war文件的位置相关联-->
    <ejb-link></ejb-link>
    <!--java:comp/env的对应的EJB引用名-->
    <ejb-ref-name></ejb-ref-name>
    <!--用于声明实体或会话的bean类型-->
    <ejb-ref-type></ejb-ref-type>
    <!--用于指定EJB Home接口的完全限定名称-->
    <home></home>
    <!--bean的remote接口的完全限定名称-->
    <remote></remote>
</ejb-ref>


<!--声明Web应用的环境项-->
<env-entry>
    <!--声明描述信息-->
    <description></description>
<!--一个相对于java:comp/env环境JNDI名-->
    <env-entry-name></env-entry-name>
<!--(java.lang程序包中一个类型的完全限定类名,java.lang.Boolean、java.lang.String等)组成-->
    <env-entry-type></env-entry-type>
<!--用于指定环境条目的值-->
    <env-entry-value></env-entry-value>
</env-entry>

<!--在返回特定HTTP状态代码时,或者特定类型的异常被抛出时,能够制定将要显示的页面-->
<error-page>
    <!--用于指定Http的错误代码-->
    <error-code></error-code>
    <!--用于指定程序中的异常(异常的完整路径)-->
    <exception-type></exception-type>
    <!--用于指定程序出现错误时,跳转到的页面-->
    <location></location>
</error-page>
<!--过滤器元素将一个名字与一个实现javax.servlet.Filter接口的类相关联-->
<filter>
    <!--声明描述信息-->
    <description></description>
    <!--用于定义Web应用的名称-->
    <display-name></display-name>
    <!--用于指定当前filter对应的类的路径-->
    <filter-class></filter-class>
    <!--用于对当前filter取一个名称,以便在后面的映射时使用-->
    <filter-name></filter-name>
    <!--指定应用的大图标和小图标-->
    <icon></icon>
    <!--用于指定当前filter的一些初始化参数-->
    <init-param></init-param>
</filter>
<!--一旦命名了一个过滤器,就要利用filter-mapping元素把它与一个或多个servlet或JSP页面相关联-->
<filter-mapping>
<!--该元素有四个可能的值:即REQUEST(默认),FORWARD,INCLUDE和ERROR,可以在一个<filter-mapping>元素中加入任意数目的<dispatcher>,使得filter将会作用于直接从客户端过来的request,通过forward过来的request,通过include过来的request和通过<error-page>过来的request。如果没有指定任何< dispatcher >元素,默认值是REQUEST -->
    <dispatcher></dispatcher>
    <!--用于指定上文定义的filter名称-->
    <filter-name></filter-name>
    <!--用于指定上文定义的servlet名称-->
    <servlet-name></servlet-name>
    <!--描述用于解析URL的模式-->
    <url-pattern></url-pattern>
</filter-mapping>
<!--Web应用图标:指出IDE和GUI工具用来表示Web应用的大图标和小图标-->
<icon>
    <!--用于指定大图标-->
    <large-icon></large-icon>
    <!--用于指定小图标-->
    <small-icon></small-icon>
</icon>
<!--该元素主要用来设定JSP的相关配置-->
<jsp-config>
    <!--定义了一组JSP的特性。这些特性实际上对应JSP的page directive定义的特性-->
    <jsp-property-group>
        <!--声明描述信息-->
        <description></description>
        <!--用于定义Web应用的名称-->
        <display-name></display-name>
        <!--若为true,表示不支持EL语法-->
        <el-ignored></el-ignored>
        <!--指定应用的大图标和小图标-->
        <icon></icon>
        <!--设置JSP网页的结尾,扩展名为.jspf -->
        <include-coda></include-coda>
        <!--设置JSP网页的抬头,扩展名为.jspf -->
        <include-prelude></include-prelude>
<!--如果节点值为:true则表示这个文件为jsp文档(xml格式),如果为false,则表示为标准的jsp文件-->
        <is-xml></is-xml>
        <!--设定JSP网页的编码-->
        <page-encoding></page-encoding>
        <!--若为true表示不支持<%scription%>语法-->
        <scripting-invalid></scripting-invalid>
        <!--设定值所影响的范围,:/CH2 或者/*.jsp -->
        <url-pattern></url-pattern>
    </jsp-property-group>
    <!--用来设定JSP网页用到的Tag Library路径-->
    <taglib>
        <!--用于指定TLD文件对应Web站台的存放位置-->
        <taglib-location></taglib-location>
<!--用于指定TLD文件的URI,JSP网页的taglib指令可以由这个URI存取到TLD文件-->
        <taglib-uri></taglib-uri>
    </taglib>
 </jsp-config>
<!--servlet API的版本2.3增加了对事件监听程序的支持,事件监听程序在建立、修改和删除会话或servlet环境时得到通知。Listener元素指出事件监听程序类-->
<listener>
    <!--声明描述信息-->
    <description></description>
    <!--用于定义Web应用的名称-->
    <display-name></display-name>
    <!--指定应用的大图标和小图标-->
    <icon></icon>
    <!--用于指定监听器的类(完整路径)-->
    <listener-class></listener-class>
</listener>
<!--该元素用来设置各种Locale和字符集编码之间的映射关系的集合-->
<locale-encoding-mapping-list>
    <!--该元素用来设置各种Locale和字符集编码之间的映射关系-->
    <locale-encoding-mapping>
        <!--该元素用来指定其Locale的名称,如:zh-CN-->
        <locale></locale>
        <!--该元素用来指定其编码方式-->
        <encoding></encoding>
    </locale-encoding-mapping>
</locale-encoding-mapping-list>
<!--指定服务器应该怎样给试图访问受保护页面的用户授权。它与sercurity-constraint元素联合使用-->
<login-config>
    <!--指定对用户身份验证的方法。可能值:
BASIC:使用浏览器进行身份验证(默认),
FORM:使用用户编写的HTML表单-->
    <auth-method></auth-method>
<!--指定必需相对于文档根目录的web资源的URI,用于对用户进行身份验证。这个可以是HTML页面、JSP或者HTTP Servlet,且必须返回-->
    <form-login-config></form-login-config>
    <!--用于对用户凭据进行身份验证时所引用的领域名称-->
    <realm-name></realm-name>
</login-config>
<!--元素指定了一个逻辑目标消息,后者映射到服务器特有部署描述文件中的物理目标信息-->
<message-destination>
    <!--声明描述信息-->
    <description></description>
    <!--用于定义Web应用的名称-->
    <display-name></display-name>
    <!--指定应用的大图标和小图标-->
    <icon></icon>
    <!--为一个目标信息指定一个唯一的名称(仅限于web.xml中)-->
    <message-destination-name></message-destination-name>
</message-destination>
<!--用于指出将引用与web.xml中声明资源相关联的信息地址-->
<message-destination-ref>
    <!--声明描述信息-->
    <description></description>
<!--用来连接对一个目标消息的引用。它的值必须通过web.xml文件或者在同一个J2EE应用单元的部署描述文件中message-destination元素的message-destination-name子元素来声明-->
    <message-destination-link></message-destination-link>
<!--定义一个信息地址引用的JNDI名(相对于java:comp/env上下文)。在web.xml中,这个名称必须唯一-->
    <message-destination-ref-name></message-destination-ref-name>
<!--素声明了目标的类型,可以是javax.jms.Queue或javax.jms.Topic-->
    <message-destination-type></message-destination-type>
<!--说明引用所指定的目标信息的使用情况。它的值指出是使用目标信息中的消息,还是产生目标信息,亦或两者兼有(有效值为Consumes,Produces或ConsumesProduces)-->
    <message-destination-usage></message-destination-usage>
</message-destination-ref>
<!--如果Web应用具有想到特殊的文件,希望能保证给他们分配特定的MIME类型,则mime-mapping元素提供这种保证-->
<mime-mapping>
    <!--用于指定其扩展名名称-->
    <extension></extension>
    <!--用于指定MIME的格式-->
    <mime-type></mime-type>
</mime-mapping>
<!--声明与资源相关的一个管理对象-->
<resource-env-ref>
    <!--声明描述信息-->
    <description></description>
<!--指定资源环境引用的名称,其它值为web应用程序代码中使用的环境条目名称。名称是相对于java:comp/env上下文的JNDI名称,该名称在web应用程序中必须唯一-->
    <resource-env-ref-name></resource-env-ref-name>
    <!--指定资源环境引用的类型,它是java语言的类或者接口的完全限定名称-->
    <resource-env-ref-type></resource-env-ref-type>
</resource-env-ref>
<!--声明一个资源工厂使用的外部资源-->
<resource-ref>
    <!--声明描述信息-->
    <description></description>
    <!--用于指定资源由Application或Container来许可-->
    <res-auth></res-auth>
    <!--用于指定资源名称 -->
    <res-ref-name></res-ref-name>
    <!--用于指定资源是否可以共享.默认值为 Shareable -->
    <res-sharing-scope></res-sharing-scope>
    <!--用于指定资源种类-->
    <res-type></res-type> 
</resource-ref>
<!--制定应该保护的URL。它与login-config元素联合使用-->
<security-constraint>
    <!--用于定义那些组或委托人可以访问此安全约束内定义的web资源集合-->
    <auth-constraint></auth-constraint>
    <!--用于定义Web应用的名称-->
    <display-name></display-name>
    <!--用于定义客户端如何与服务器进行通信-->
    <user-data-constraint></user-data-constraint>
    <!--用于定义用此安全约束的web应用程序的区域-->
    <web-resource-collection></web-resource-collection>
</security-constraint>
<!--给出安全角色的一个列表,这些角色将出现在servlet元素内的security-role-ref元素的role-name子元素中。分别地声明角色可使高级IDE处理安全信息更为容易-->
<security-role>
    <!--声明描述信息-->
    <description></description>
    <!--用于定义那些安全角色可以访问在此安全约束中定义的资源-->
    <role-name></role-name>
</security-role>
<!--该元素声明一个对Web服务的引用-->
<service-ref>
    <!--声明描述信息-->
    <description></description>
    <!--用于定义Web应用的名称-->
    <display-name></display-name>
<!--元素为端口组件声明处理器。它包含一个必需的handler-name和handlerclass和可选的init-param,soap-header,soap-role和port-name元素。handler-name元素定义了处理器的名称(在web.xml中是唯一的)。handler-class定义了处理器所实现类的完全限定名-->
    <handler></handler>
    <!--指定应用的大图标和小图标-->
    <icon></icon>
<!--该元素包含将WSDL定义映射到服务终端接口和服务接口的那个文件的位置-->
    <jaxrpc-mapping-file></jaxrpc-mapping-file>
<!--该元素声明了一个在容器中解析服务终端接口到一个WSDL端口的客户端依赖关系。它使用一个特别的端口组件选择性地关联服务终端接口-->
    <port-component-ref></port-component-ref>
    <!--该元素指定Web应用所依赖的JAX-RPC完全限定接口名-->
    <service-interface></service-interface>
<!--该元素与其两个子元素(namespaceURI和localpart)声明了正在引用的WSDL服务元素。如果不指定wsdl-file元素或者WSDL文件只包含一个服务-->
    <service-qname></service-qname>
<!--该元素定义的Web服务(与java:comp/env上下文对应的)-->
    <service-ref-name></service-ref-name>
<!--该元素包含Web服务描述语言文件的位置(相对于Web应用程序的根目录)。这个文件必须放在WEB-INF/wsdl目录中-->
    <wsdl-file></wsdl-file>
</service-ref>
<!--在向servlet或JSP页面制定初始化参数或定制URL时,必须首先命名servlet或JSP页面。Servlet元素就是用来完成此项任务的-->
<servlet>
    <!--声明描述信息-->
    <description></description>
    <!--用于定义Web应用的名称-->
    <display-name></display-name>
    <!--指定应用的大图标和小图标-->
    <icon></icon>
    <!--用于指定servlet的一些初始化参数-->
    <init-param></init-param>
    <!--用于指定一个jsp页面来对该servlet进行初始化-->
    <jsp-file></jsp-file>
<!--用于指定应用启动时加载的优先级-->
    <load-on-startup></load-on-startup>
    <!--该元素指定了该web应用程序运行时所需用的运行身份-->
    <run-as></run-as>
<!--该元素将 <security-role> 定义的安全角色名链接到使用Servlet逻辑进行硬编码的备用角色名。使用此附加提取层,可以在部署时配置Servlet,且不必更改Servlet 代码-->
    <security-role-ref></security-role-ref>
    <!--用于指定当前servlet对应的类的路径-->
    <servlet-class></servlet-class>
    <!--用于对当前servlet取一个名称,以便在后面的映射时使用-->
    <servlet-name></servlet-name>
</servlet>
<!--服务器一般为servlet提供一个缺省的URL:http://host/webAppPrefix/servlet/ServletName。 但是,常常会更改这个URL,以便servlet可以访问初始化参数或更容易地处理相对URL。在更改缺省URL时,使用servlet-mapping元素-->
<servlet-mapping>
    <!--用于指定上文配置的servlet的名称-->
    <servlet-name></servlet-name>
<!--描述用于解析URL的模式-->
    <url-pattern></url-pattern>
</servlet-mapping>
<!--如果某个会话在一定时间内未被访问,服务器可以抛弃它以节省内存。可通过使用HttpSession的setMaxInactiveInterval方法明确设置单个会话对象的超时值,或者可利用session-config元素制定缺省超时值-->
<session-config>
    <!--用于session的超时时间-->
    <session-timeout></session-timeout>
</session-config>
<!--指示服务器在收到引用一个目录名而不是文件名的URL时,使用哪个文件-->
<welcome-file-list>
    <!--用于指定欢迎页面的路径-->
    <welcome-file></welcome-file>
</welcome-file-list>

web.xml详解

对于一个J2EE领域的程序员而言,基本上每天都会和web应用打交道。

什么是web应用?最简单的web应用什么样?给你一个web应用你该从何入手?

1、什么是web应用?

      web应用是一种可以通过Web访问的应用程序。在J2EE领域下,web应用就是遵守基于JAVA技术的一系列标准的应用程序。

2、最简单的web应用什么样?

      2个文件夹、1个xml文件就能成为一个web应用

      第一个文件夹:应用名,如test

      第二个文件夹:在test文件夹中创建名为WEB-INF的文件夹

      XML文件:在WEB-INF文件夹下创建web.xml文件,文件内容只需<web-app></web-app>

3、给你一个web应用你该从何入手?

      这属于仁者见仁智者见智的问题,我通常看一个web应用是从web.xml入手的微笑

正文:

1、web.xml学名叫部署描述符文件,是在Servlet规范中定义的,是web应用的配置文件。

2、部署描述符文件就像所有XML文件一样,必须以一个XML头开始。这个头声明可以使用的XML版本并给出文件的字符编码。DOCYTPE声明必须立即出现在此头之后。这个声明告诉服务器适用的servlet规范的版本(如2.2或2.3)并指定管理此文件其余部分内容的语法的DTD(Document Type Definition,文档类型定义)。所有部署描述符文件的顶层(根)元素为web-app。请注意,XML元素不像HTML,他们是大小写敏感的。因此,web-App和WEB-APP都是不合法的,web-app必须用小写。

web.xml样例:

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">  
<web-app>  
</web-app>  

3、web.xml中XML 元素不仅是大小写敏感的,而且它们还对出现在其他元素中的次序敏感。例如,XML头必须是文件中的第一项,DOCTYPE声明必须是第二项,而web- app元素必须是第三项。在web-app元素内,元素的次序也很重要。服务器不一定强制要求这种次序,但它们允许(实际上有些服务器就是这样做的)完全拒绝执行含有次序不正确的元素的Web应用。这表示使用非标准元素次序的web.xml文件是不可移植的。
元素顺序列表:在这里插入图片描述
元素标签详解:

元素1:

含义

icon元素包含small-icon和large-icon两个子元素.用来指定web站台中小图标和大图标的路径.
/路径/smallicon.gif
small-icon元素应指向web站台中某个小图标的路径,大小为16 X 16 pixel,但是图象文件必须为GIF或JPEG格式,扩展名必须为:.gif或.jpg.

/路径/largeicon-jpg
large-icon元素应指向web站台中某个大图表路径,大小为32 X 32 pixel,但是图象文件必须为GIF或JPEG的格式,扩展名必须为; gif或jpg.

范例

/images/small.gif /images/large.gif

元素2、3:,

含义

应用名称
定义应用的名称。

应用描述
对应用做出描述。

范例

test

测试应用V1.0

元素4:

含义

context-param 元素用来设定web应用的环境参数(context),它包含两个子元素:
param-name和param-value.
参数名称
设定Context名称

设定Context名称的值

范例

param_name
param_value

此所设定的参数,在JSP网页中可以使用下列方法来取得:
${initParam.param_name}
若在Servlet可以使用下列方法来获得:
String param_name=getServletContext().getInitParamter(“param_name”);

元素5,6:,

含义

filter元素用来设定web应用的过滤器,它的两个主要子元素filter-name和filter-class用来定义Filter所对应的class

Filter的名称
定义Filter的名称
Filter的类名称
定义Filter的类名称

filter-mapping 元素的两个主要子元素filter-name和url-pattern.用来定义Filter所对应的URL.
Filter的名称
定义Filter的名称.
URL
Filter所对应的RUL.例如:/Filter/*

范例

Encoding ghjf.test.filter.SetCharacterEncodingFilter encoding GBK Encoding /*

元素7:

含义

listener元素用来定义Listener接口,它的主要子元素为
Listener的类名称
定义Listener的类名称

范例

org.springframework.web.context.ContextLoaderListener

元素8、9:、

含义

servlet元素的两个主要子元素servlet-name和servlet-class用来定义servlet所对应的class

servlet的名称
定义servlet的名称
servlet的类名称
定义servlet的类名称

servlet-mapping元素包含两个子元素servlet-name和url-pattern.用来定义servlet所对应URL.
Servlet的名称
定义Servlet的名称.
Servlet URL
定义Servlet所对应的RUL.例如:/Servlet/*

范例

dwr-invoker DWR Servlet Direct Web Remoter Servlet uk.ltd.getahead.dwr.DWRServlet debug true dwr-invoker /dwr/*

元素10:

含义

session-config包含一个子元素session-timeout.定义web应用中的session参数.
分钟
定义这个web站台所有session的有效期限.单位为分钟.

范例

30

元素11:

含义

mime-mapping包含两个子元素extension和mime-type.定义某一个扩展名和某一MIME Type做对映.
扩展名名称
扩展名称
MIME格式
MIME格式.

范例

doc application/vnd.ms-word xls application/vnd.ms-excel ppt application/vnd.ms-powerpoint

元素12:

含义

welcome-file-list包含一个子元素welcome-file.用来定义首页列单.
用来指定首页文件名称
welcome-file用来指定首页文件名称.我们可以用指定几个首页,而服务器会依照设定的顺序来找首页.

范例

index.jsp index.htm

元素13:

含义

error-page元素包含三个子元素error-code,exception-type和location.将错误代码(Error Code)或异常(Exception)的种类对应到web应用资源路径.
错误代码
HTTP Error code,例如: 404、403
Exception
一个完整名称的Java异常类型
/路径
在web应用内的相关资源路径

范例

404 /error404.jsp java.lang.Exception /exception.jsp

元素14:

含义

jsp-config元素主要用来设定JSP的相关配置,jsp:config包括和两个子元素.其中元素
在JSP 1.2时就已经存在了;而是JSP 2.0新增的元素.

taglib元素包含两个子元素taglib-uri和taglib-location.用来设定JSP网页用到的Tag Library路径. URI taglib-uri定义TLD文件的URI,JSP网页的taglib指令可以经由这个URI存取到TLD文件. /WEB-INF/lib/xxx.tld TLD文件对应Web站台的存放位置. jsp-property-group元素包含8个元素,分别为: Description 此设定的说明

Name
此设定的名称

URL
设定值所影响的范围,如:/CH2 或者/*.jsp

true|false
若为true,表示不支持EL语法.

true|false
若为true表示不支持<%scription%>语法.

encoding
设定JSP网页的编码

.jspf
设置JSP网页的抬头,扩展名为.jspf

.jspf
设置JSP网页的结尾,扩展名为.jspf

范例

Taglib /WEB-INF/tlds/MyTaglib.tld Special property group for JSP Configuration JSP example. JSPConfiguration /* true GB2312 true

元素15:

含义

resource-env-ref有两个子元素:
资源名
资源的名称 相对于java:comp/env
查找资源时返回的资源类名
当web应用查找该资源的时候,返回的Java类名的全称

范例

jdbc/mssql javax.sql.DataSource

元素16:

含义

resource-ref元素包括五个子元素description,res-ref-name,res-type,res-auth,res-sharing-scope.利用JNDI取得应用可利用资源.
说明
资源说明
资源名称
资源名称
资源种类
资源种类
Application|Container
资源由Application或Container来许可
Shareable|Unshareable
资源是否可以共享.默认值为 Shareable

范例

JNDI JDBC DataSource jdbc/data javax.sql.DataSoruce Container
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值