webxml详解.docx

上传人:b****7 文档编号:8792318 上传时间:2023-02-01 格式:DOCX 页数:19 大小:24.36KB
下载 相关 举报
webxml详解.docx_第1页
第1页 / 共19页
webxml详解.docx_第2页
第2页 / 共19页
webxml详解.docx_第3页
第3页 / 共19页
webxml详解.docx_第4页
第4页 / 共19页
webxml详解.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

webxml详解.docx

《webxml详解.docx》由会员分享,可在线阅读,更多相关《webxml详解.docx(19页珍藏版)》请在冰豆网上搜索。

webxml详解.docx

webxml详解

1、启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取两个结点。

 

2、紧急着,容创建一个ServletContext(servlet上下文),这个web项目的所有部分都将共享这个上下文。

 

3、容器将转换为键值对,并交给servletContext。

 

4、容器创建中的类实例,创建监听器。

 

二 Load-on-startup

Load-on-startup元素在web应用启动的时候指定了servlet被加载的顺序,它的值必须是一个整数。

如果它的值是一个负整数或是这个元素不存在,那么容器会在该servlet被调用的时候,加载这个servlet。

如果值是正整数或零,容器在配置的时候就加载并初始化这个servlet,容器必须保证值小的先被加载。

如果值相等,容器可以自动选择先加载谁。

 

在servlet的配置当中,5的含义是:

 

标记容器是否在启动的时候就加载这个servlet。

 

当值为0或者大于0时,表示容器在应用启动时就加载这个servlet; 

当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。

 

正数的值越小,启动该servlet的优先级越高。

 

三 加载顺序

首先可以肯定的是,加载顺序与它们在web.xml文件中的先后顺序无关。

即不会因为filter写在listener的前面而会先加载filter。

最终得出的结论是:

ServletContext-> listener->filter->servlet

        同时还存在着这样一种配置节:

context-param,它用于向ServletContext提供键值对,即应用程序上下文信息。

我们的listener,filter等在初始化时会用到这些上下文中的信息,那么context-param配置节是不是应该写在listener配置节前呢?

实际上context-param配置节可写在任意位置,因此真正的加载顺序为:

context-param->listener->filter->servlet

        对于某类配置节而言,与它们出现的顺序是有关的。

以filter为例,web.xml中当然可以定义多个filter,与filter相关的一个配置节是filter-mapping,这里一定要注意,对于拥有相同filter-name的filter和filter-mapping配置节而言,filter-mapping必须出现在filter之后,否则当解析到filter-mapping时,它所对应的filter-name还未定义。

web容器启动时初始化每个filter时,是按照filter配置节出现的顺序来初始化的,当请求资源匹配多个filter-mapping时,filter拦截资源是按照filter-mapping配置节出现的顺序来依次调用doFilter()方法的。

        servlet同filter类似,此处不再赘述。

       由此,可以看出,web.xml的加载顺序是:

ServletContext-> context-param->listener->filter->servlet,而同个类型之间的实际程序调用的时候的顺序是根据对应的mapping的顺序进行调用的。

 

四 web.xml文件详解 

 

我将自己知道的web.xml的元素整理了一下:

web.xml首先是肯定要包含它的schema.

    xmlns:

xsi="http:

//www.w3.org/2001/XMLSchema-instance"

    xsi:

schemaLocation="

    version="2.4">

(注解:

XMLSchema定义(XMLSchemaDefinition,XSD)是一套W3C标准,用于基于XML的称为XMLSchema的类型系统。

用于定义的语言是一种称为XML模式定义语言(XMLSchemaDefinitionLanguage)的XML语法。

Web服务使用XML作为表示消息和数据的底层格式。

因此,XSD成为Web服务类型系统的自然选择。

XML文档必须有严格的形式规范,以适应各种具体的应用。

首先,XML文档必须符合XML语法限制,术语称为“well-formedXML”;其次,为了使XML表示的数据有一定含义,还需要根据应用为其定义语义上的限制,术语称为“validatingXML”。

“well-formedXML”是容易验证的,而“validatingXML”还需要另一个关联的文档来定义XML标记规范。

以前使用的是DTD文档,现在使用的是Schema。

其它的元素都放在之中。

是对站台的描述

定义站台的名称

是指定该站台是否可分布式处理

用来设定web站台的环境参数,它包含两个子元素:

    用来指定参数的名称

    用来设定参数值

比如:

    my_param

    hello

在此设定的参数,可以在servlet中用getServletContext().getInitParameter("my_param")来取得

是用来声明filter的相关设定,它包含以下子元素:

    这当然就是指定filter的名字

    这是用来定义filter的类的名称

    用来定义参数,它有两个子元素:

        用来指定参数的名称

        用来设定参数值

比如:

        setCharacterEncoding

        com.myTest.setCharacterEncodingFilter

        

            encoding

            GB2312

        

同时使用的是用来定义filter所对应的URL,它有两个子元素:

    指定filter的名字

    指定filter所对应的URL

比如:

        setCharacterEncoding

        /*

用来设定Listener接口,它的主要子元素为

    定义Listener的类名称

比如:

    com.myTest.ContextListener 

用来声明一个servlet的数据,主要有以下子元素:

    指定servlet的名称

    指定servlet的类名称

    指定web站台中的某个JSP网页的完整路径

    用来定义参数,和前面的差不多

同样,与一起使用的是用来定义servlet所对应的URL,包含两个子元素:

    指定servlet的名称

    指定servlet所对应的URL

比如:

        ShoppingServlet

        com.myTest.ShoppingServlet

    

        ShoppingServlet

        /shop/ShoppingServlet

用来定义web站台中的session参数,包含一个子元素:

    用来定义这个web站台所有session的有效期限,单位为                                                              分钟

定义某一个扩展名和某一个MIMEType做对映,包含两个                                                        子元素:

    扩展名的名称

    MIME格式

比如:

    doc

    application/vnd.ms-word

 

    xls

    application/vnd.ms-excel

用来定义首页的列单,包含一个子元素:

    指定首页的文件名称

比如:

    index.jsp

    index.html

用来处理错误代码或异常的页面,有三个子元素:

    指定错误代码

    指定一个JAVA异常类型

    指定在web站台内的相关资源路径

比如:

    404

    /error404.jsp

    java.lang.Exception

    /exception.jsp

用来设定JSP网页所用到的TagLibrary路径,有两个子元素:

    定义TLD文件的URI,在JSP网页中用taglib指令便可取得该URI的                                              TLD文件

    指定TLD文件相对于web站台的存放位置

比如:

      myTaglib

      /WEB-INF/tlds/MyTaglib.tld

定义利用JNDI取得站台可利用的资源,有五个子元素:

    资源说明

    资源名称

    资源种类

    资源经由Application或Container来许可

    资源是否可以共享,有Shareable和Unshareable两个                                                                     值,默认为Shareable

比如,配置数据库连接池就可在此配置:

        JNDIJDBCDataSourceofshop

        jdbc/sample_db

        javax.sql.DataSource

        Container

包括两个子元素。

    

    其中元素在JSP1.2时就已经存在;而是JSP2.0新增的元素。

    元素主要有八个子元素,它们分别为:

    

    1.

设定的说明;

    2.

设定名称;

    3.

设定值所影响的范围,如:

/CH2或/*.jsp;

    4.

若为true,表示不支持EL语法;

    5.

若为true,表示不支持<%scripting%>语法;

    6.

设定JSP网页的编码;

    7.

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

    8.

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

一个简单的元素完整配置:

    

        Taglib

        /WEB-INF/tlds/MyTaglib.tld

    

    

        SpecialpropertygroupforJSPConfigurationJSPexample.

        JSPConfiguration

        /jsp/*

        true

        GB2312

        true

        /include/prelude.jspf

        /include/coda.jspf

    

  

配置web.xml来限制对某些servlet的请求

有时我们只希望通过认证的用户才能请求某些servlet的话,就可以在web.xml中来进行相应的配置,来达到此目的。

这就要用到元素。

对于tomcat,中web.xml使用security-constraint元素需要在位于/conf/tomcat-users.xml的XML文件中创建用户名和密码。

比如下面的这个tomcat-users.xml文件:

xmlversion='1.0'encoding='utf-8'?

>

  

  

  

  

  

  

此XML片段包括一个tomcat-users根元素,它包含一个或多个role和user元素。

然后在Web应用程序的web.xml中创建security-constraint、login-config和security-role元素。

      

          HelloServlet

          /HelloServlet

          GET

          POST

      

      

          Thisappliesonlytothe"tomcat"securityrole

          admin

      

      

          NONE

      

  

  

  

      BASIC

  

  

      admin

  

其中security-constraint元素包含一个或多个web-resource-collection元素,它是描述Web应用程序中的哪些web资源受到指定安全限制的保护。

http-method元素指定安全限制覆盖的HTTP方法。

上面的例子中,当我们对/HelloServlet的GET或POST请求时将触发配置的安全机制。

auth-constraint元素用于描述允许访问Web组件的安全角色。

此例中安全角色的例子有tomcat、manager、admin。

而只有当作为admin角色的用户才可以访问HelloServlet。

Web应用程序通过login-config元素来认证用户,并确认该用户是否为正确的角色。

longin-config包含的tra

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1