<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA流通橋

    JAVA啟發(fā)者

    統(tǒng)計(jì)

    留言簿(3)

    AJAX相關(guān)網(wǎng)址

    Eclipse相關(guān)網(wǎng)址

    Hibernate

    java相關(guān)網(wǎng)址

    LINUX相關(guān)網(wǎng)址

    webwork相關(guān)網(wǎng)址

    友好鏈接

    閱讀排行榜

    評(píng)論排行榜

    Servlet2.3中文文檔(第11,12,13章)

                                                      第十一章 請(qǐng)求到servlet的映射
    11.1 URI的使用
    web容器根據(jù)客戶端的請(qǐng)求決定要調(diào)用的資源。
    URL路徑映射規(guī)則是第一個(gè)匹配成功就不再匹配了。
    1)引擎將盡力為每一個(gè)請(qǐng)求一個(gè)servlet的路徑匹配一個(gè)servlet
    2)引擎將遞歸的匹配最長的路徑前綴(在一個(gè)目錄樹中)
    3)如果在URL路徑中的最后一節(jié)有擴(kuò)展名(例如:.jsp),則servlet引擎將會(huì)匹配一個(gè)適當(dāng)?shù)膕ervlet獲
    取請(qǐng)求對(duì)象
    4)如果沒有一個(gè)servlet能夠匹配請(qǐng)求,引擎將用一個(gè)適當(dāng)?shù)馁Y源來處理該請(qǐng)求。如:在應(yīng)用中配置了
    默認(rèn)的servlet,就會(huì)被用來處理匹配不到資源的請(qǐng)求。
    11.2 匹配規(guī)則
    在web應(yīng)用描述文件中,匹配的定義如下:
    .以'/'開始,以'/*'為結(jié)尾的字符串,用作路徑匹配
    .以'*.'開始的字符串,用作擴(kuò)展名匹配
    .包含'/'字符串,定義一個(gè)默認(rèn)的servlet。如匹配的servlet路徑是請(qǐng)求URI路徑的最小上下文路徑,路經(jīng)
    的info為空。
    .其它的字符串用作精確的匹配。
    11.2.1 絕對(duì)匹配
    servlet引擎能夠匹配任何精確的資源,如后綴為*.jsp的匹配,引擎中有JSP引擎的話,就會(huì)把所有的JSP
    頁面和與之對(duì)象的資源相匹配。
    11.2.2 匹配的例子:
    path pattern servlet
    /foo/bar/* servlet1
    /baz/* servlet2
    /catalog servlet3
    *.bop servlet4
    incoming path servlet handling request
    /foo/bar/index.html servlet1
    /foo/bar/index.bop servlet1
    /baz servlet2
    /baz/index.html servlet2
    /catalog servlet3
    /catalog/racecar.bop servlet4
    /index.bop servlet4
    第十二章 安全
    12.1介紹
    web應(yīng)用的資源能夠被很多的用戶訪問,這些資源經(jīng)常沒有保護(hù)的暴露在網(wǎng)絡(luò)中,因此一個(gè)穩(wěn)定的web
    應(yīng)用需要一個(gè)安全的環(huán)境。
    提高安全性有以下的幾個(gè)方面:
    .認(rèn)證:訪問一個(gè)實(shí)例前需要一個(gè)特殊的ID進(jìn)行授權(quán)認(rèn)證后才能訪問該實(shí)例
    .資源的訪問控制:一些機(jī)密資源或局部資源只限制給某些用戶或程序使用。
    .數(shù)據(jù)完整性:在傳輸過程中數(shù)據(jù)不能被意外的改變。
    .機(jī)密性:確定信息只能被授權(quán)過的用戶使用。
    12.2 公共安全
    安全性聲明是指表明應(yīng)用是有安全結(jié)構(gòu)的;包括權(quán)限、訪問控制、認(rèn)證。在web應(yīng)用中部署描述是安全
    聲明的主要工具。
    開發(fā)者應(yīng)該為應(yīng)用運(yùn)行時(shí)配一個(gè)邏輯安全策略,在運(yùn)行時(shí)中,servlet引擎用這個(gè)安全策略去驗(yàn)證授權(quán)請(qǐng)
    求。
    安全模塊應(yīng)該適用web應(yīng)用的靜態(tài)內(nèi)容,當(dāng)servlet用RequestDispatcher調(diào)用一個(gè)靜態(tài)資源或servlet用
    forward或include,時(shí)安全模塊不適用。
    12.3 程序級(jí)安全
    當(dāng)應(yīng)用的安全模塊不能充分的表明安全時(shí)程序安全就可以被使用。
    程序安全有以下部分組成:
    HttpServletRequest接口:
    .getRemoteUser
    .isUserInRole
    .getUserPrincipal
    getRemoteUser方法返回客戶端用戶的名稱,用于授權(quán)。
    isUserInRole方法判斷遠(yuǎn)程用戶是否在一個(gè)安全的角色內(nèi)。
    getUserPrincipal方法返回一個(gè)java.security.Principal對(duì)象,表明當(dāng)前用戶的主要名稱。這個(gè)API允許
    servlet根據(jù)這個(gè)信息處理一些業(yè)務(wù)邏輯。
    如果用戶沒有授權(quán),getRemoteUser返回null,isUserInRole返回false,getUserPrincipal返回null。
    isUserInRole以一個(gè)role-name為參數(shù)。一個(gè)security-role-ref元素為在部署描述文件中定義,role-name
    子元素包含角色名稱。Security-role包含一個(gè)子元素role-link,role-link的value值是客戶端用戶將匹配的
    安全角色。當(dāng)用isUserInRole時(shí)引擎將調(diào)用security-role-ref到security-role的匹配。
    舉個(gè)例子:
    <security-role-ref>
    <role-name>FOO</role-name>
    <role-link>manager</role-link>
    </security-role-ref>
    當(dāng)一個(gè)用戶屬于“manager”角色是調(diào)用isUsesrInRole("FOO")返回true
    如果匹配一個(gè)security-role元素的security-role-ref沒有被定義,引擎必須找出一個(gè)與security-role
    列表不同的roel-name元素作為web應(yīng)用默認(rèn)的安全角色。但默認(rèn)的安全角色限制了變換角色名
    稱不需要重新編譯的機(jī)動(dòng)性。
    12.4 角色
    一個(gè)安全角色是一組用戶的邏輯名稱。當(dāng)應(yīng)用發(fā)布時(shí),角色就部署在web應(yīng)用的運(yùn)行時(shí)環(huán)境中
    了。在基于安全屬性的請(qǐng)求到來時(shí),servlet引擎就會(huì)執(zhí)行公共安全或程序級(jí)安全。安全請(qǐng)求在以
    下的一些情況中會(huì)產(chǎn)生:
    1)開發(fā)者給用戶群配置了一個(gè)安全角色。
    2)開發(fā)者把一個(gè)安全角色配置給一個(gè)安全域中的一個(gè)主要名稱。
    12.5 驗(yàn)證
    web客戶端可以用以下的一些機(jī)制驗(yàn)證用戶:
    .HTTP Basic Authentication
    .HTTP Digest Authentication
    .HTTPS Client Authentication
    .Form Based Authentication
    12.5.1 HTTP Basic Authentication
    HTTP Basic Authentication是基于用戶名和密碼的驗(yàn)證機(jī)制,是在HTTP/1.0規(guī)范中定義的。web
    服務(wù)要求客戶端驗(yàn)證用戶,web服務(wù)用一個(gè)realm字符串作為請(qǐng)求的一部分,用戶通過這個(gè)realm
    字符串被驗(yàn)證。realm字符串不會(huì)和任何安全域相關(guān)聯(lián)。客戶端獲得用戶名稱和密碼發(fā)送到服務(wù)
    端。然后服務(wù)端用一個(gè)特殊的realm去驗(yàn)證該用戶。
    Basic Authentication 不是安全的驗(yàn)證協(xié)議。用戶的密碼是用base64編碼的,服務(wù)端是不能夠識(shí)
    別的。一些附加的安全措施可以被使用,這些協(xié)議有:HTTPS安全傳輸協(xié)議或網(wǎng)絡(luò)安全標(biāo)準(zhǔn)(如
    IPSEC協(xié)議、VPN策略)。
    12.5.2 HTTP Digest Authentication
    和HTTP Basic Authentication一樣,HTTP Digest Authentication 也是驗(yàn)證用戶名和密碼的。然而
    這種驗(yàn)證是把密碼加密傳輸?shù)模菳asic Authentication的base64編碼要安全的多。Digest
    Authentication 沒有被廣泛的運(yùn)用,建議servlet引擎支持這種驗(yàn)證,但不是必須的。
    12.5.3 Form Based Authentication
    web應(yīng)用部署描述文件包含登陸表單和錯(cuò)誤頁面。登陸表單必須包含用戶名和用戶密碼字段,這
    兩個(gè)字段必須以j_username和j_password命名。當(dāng)一個(gè)用戶要訪問一個(gè)被保護(hù)的資源時(shí),引擎就
    會(huì)驗(yàn)證該用戶信息,如果該用戶驗(yàn)證通過就會(huì)調(diào)用保護(hù)的資源,如果沒有驗(yàn)證通過,以下的步驟
    就會(huì)發(fā)生:
    1)登陸表單被送到客戶端,啟動(dòng)這個(gè)驗(yàn)證的URL路徑將被引擎保存。
    2)用戶被要求填寫用戶名和密碼
    3)客戶端重新post表單到服務(wù)端
    4)引擎嘗試著重新去驗(yàn)證該用戶的信息
    5)如果驗(yàn)證有失敗,響應(yīng)被設(shè)置為401的錯(cuò)誤頁面將被返回
    6)如果驗(yàn)證成功,如果該訪問的資源在一個(gè)授權(quán)角色中,將進(jìn)一步驗(yàn)證。
    7)如果用戶是授權(quán)用戶,客戶端將用保存的URL路徑重新定向到訪問的資源。
    發(fā)送到驗(yàn)證失敗的用戶的錯(cuò)誤頁面包含了失敗的信息。
    Form Based Authentication 和 Basic Authentication 有一樣的弊端,密碼是用簡單的文本傳輸
    的,不能夠被服務(wù)端驗(yàn)證。附加的一些協(xié)議可以增強(qiáng)這部分功能。如HTTPS傳輸協(xié)議,或網(wǎng)路安
    全標(biāo)準(zhǔn)(如IPSEC協(xié)議或VPN策略)。
    12.5.3.1 登陸表單的一些注意事項(xiàng)
    登陸的表單和跟蹤session的URL實(shí)現(xiàn)上是有限制的。
    登陸表單只能在cookies或SSL跟蹤session的方式下才能使用。
    登陸表單要進(jìn)行驗(yàn)證的話,表單的action就必須為j_security_check。這個(gè)約束使得登陸表單訪問
    的資源沒有問題,也避免了把表單外的字段提交進(jìn)請(qǐng)求中。
    在HTML頁面中登陸表單的一個(gè)例子如下:
    <form method="POST" action="j_security_check" >
    <input type="text" name="j_username">
    <input type="password" name="j_password">
    </form>
    當(dāng)?shù)顷懕韱我驗(yàn)镠TTP請(qǐng)求被調(diào)用時(shí),原始的請(qǐng)求參數(shù)必須被引擎存儲(chǔ),在驗(yàn)證成功后重新定向
    請(qǐng)求的資源。
    如果用登陸表單的用戶被驗(yàn)證通過,創(chuàng)建了一個(gè)session,當(dāng)session超時(shí)或調(diào)用了失效方法,使得
    登陸者推出了。后續(xù)來的請(qǐng)求就必須重新對(duì)用戶進(jìn)行驗(yàn)證。
    12.5.4 HTTPS Client Authentication
    用HTTPS驗(yàn)證用戶是很強(qiáng)的驗(yàn)證機(jī)制。這個(gè)驗(yàn)證需要用戶擁有一個(gè)公共鑰匙(PKC)。servlet引
    擎不需要支持HTTPS協(xié)議。
    12.6 驗(yàn)證信息的跟蹤
    基本的身份驗(yàn)證實(shí)在運(yùn)行時(shí)環(huán)境中進(jìn)行的:
    1)確認(rèn)一個(gè)登陸驗(yàn)證機(jī)制或策略已經(jīng)配置在web應(yīng)用中。
    2)把需驗(yàn)證的信息發(fā)往一個(gè)容器中的所有應(yīng)用。
    3)當(dāng)一個(gè)安全域被刪除時(shí),用戶的請(qǐng)求就需要重新驗(yàn)證。

    第十三章 部署描述文件
    13.1 部署描述元素
    部署描述文件中的所有元素都要被所有的servlet引擎支持。配置類型有下面的幾種:
    .ServletContext Init Parameteres
    .Session Configuration
    .Servlet Declaration
    .Servlet Mapping
    .Application Lifecycle Listener classes
    .Filter Dfinitions and Filter Mappings
    .MIME Type Mappings
    .Error Pages
    當(dāng)servlet 引擎是實(shí)現(xiàn)了J2EE規(guī)范的一部分的時(shí)候,安全信息才有必要在部署描述文件中定義。
    部署描述文件不光光只支持servlet規(guī)范,在部署描述文件為了適應(yīng)web應(yīng)用的需求增加了其他的部屬描述元素。如:
    .taglib
    .用于查找JNDI對(duì)象的一些元素(env-entry,ejb-ref,ejb-local-ref,resource-ref,resource-env-ref)
     
    13.2 處理部屬描述文件的規(guī)則
    本節(jié)主要講一下web容器訪問部屬描述文件的幾種規(guī)則。
    .web容器應(yīng)該忽略部屬描述文件中數(shù)據(jù)的開始空字符和最后的空字符。
    .web容器應(yīng)該有一個(gè)廣泛的選項(xiàng)用戶檢查web應(yīng)用的有效性。如檢查web應(yīng)用是否包含部署描述文件,部屬描述文件結(jié)構(gòu)是否正確。部署描述中應(yīng)該有語義檢查,如:安全規(guī)則有同樣的名字,應(yīng)該報(bào)錯(cuò)等等。
    .部署描述中的URI是假定在URL解碼表單中的
    .引擎必須正確解釋部屬文件中的路徑,如:路徑'/a/../b'必須解釋為'/b',因?yàn)槁窂绞且?..'開始的路徑在部署描述中是無效的。
    .調(diào)用資源的URI與WAR的根目錄關(guān)聯(lián),以‘/’開頭
    .在一個(gè)元素中,如果它的顯示值是一個(gè)列表,則這個(gè)列表將可能會(huì)報(bào)錯(cuò)
    13.2.1 DOCTYPE
    所有2.3版本的部屬描述文件的DOCTYPE必須是:
    <!DOCTYPE web-app PUBLIC "-//sun Microsystems, inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    13.3 DTD
    web應(yīng)用的部署描述文件DTD如下:
    <!--
     web-app 元素是部署描述的根元素
    -->
    <!ELEMENT web-app(icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)>
    <!--
    Auth-constraint 元素定義了可以訪問資源列表的用戶角色。Role-name可以作為security-role元素的子元素出現(xiàn)也可以以role-name"*"出現(xiàn)表示所有的角色,如果*和role-name都出現(xiàn)了,引擎將解釋這個(gè)資源可以被所有角色使用。如果沒有定義角色,用戶就不能夠訪問定義的資源。
    Used in :security-constraint
    -->
    <!ELEMENT auth-constraint (description?,role-name*)>
    <!--
    Auth-method 元素是配置web應(yīng)用的安全機(jī)制的,是訪問被保護(hù)資源的先決條件。用戶必須用這個(gè)驗(yàn)證機(jī)制驗(yàn)證。這個(gè)元素Value值有“BASIC”,“DIGEST”,“FORM”或“CLIENT-CERT”
    Userd in : login-config
    -->
    <!ELEMENT auth-method(#PCDATA)>
    <!--
    Context-param元素包含了servlet context初始化的參數(shù)
    Used in :web-app
    -->
    <!ELEMENT context-param(param-name,param-value,description?)>
    <!--
    description元素用于對(duì)父元素進(jìn)行說明,description元素可以包含任何說明信息。當(dāng)父元素被工具訪問時(shí)這些說明就會(huì)顯示。
    Used in :auth-contraint,context-param,ejb-local-ref,ejb-ref,env-entry,filter,init-param,resource-env-ref,resource-ref,ren-as,security-role,security-role-ref,servlet,user-data-constraint,web-app,web-resource-collection
    -->
    <!ELEMENT description(#PCDATA)>
    <!--
    Display-name元素是一個(gè)簡稱,被調(diào)用的工具顯示,這個(gè)簡稱不必是唯一的
    Used in: filter,security-constraint,sevlet,web-app
    例如:
    <display-name>Employee self Service </display-name>
    -->
    <!ELEMENT display-name(#PCDATA)>
    <!--
    Distributable 元素,這個(gè)元素出現(xiàn)在部署描述中,說明該應(yīng)用可以部署在分布式servlet引擎中。
    Used in :web-app
    -->
    <!ELEMENT distributable EMPTY>
    <!--
    Ejb-link 元素用在ejb-ref 或ejb-local-ref元素中,去指定EJB關(guān)聯(lián)的一個(gè)enterprise bean.
    Ejb-link中的名字是一個(gè)關(guān)聯(lián)著enterprise bean的路徑 或者是目標(biāo)bean+一個(gè)以“#”開頭的路徑。一個(gè)ejb-name可以對(duì)應(yīng)多個(gè)enterprise beans。
    Used in : ejb-local-ref,ejb-ref
    例如:
    <ejb-link>EmployeeRecord</ejb-link>
    <ejb-link>../products/product.jar#ProductEJB</ejb-link>
    -->
    <!ELEMENT ejb-link (#PCDAATA)>
    <!--
     ejb-local-ref 元素用于描述本地enterprise bean的home接口,描述由下面的部分組成:
    一個(gè)可選的描述
    enterprise bean 相關(guān)的EJB名稱
    Enterprise bean 的類型
    Enterprise bean 的本地接口
    可選的ejb-link信息
    Used in: web-app
    -->
    <!ELEMENT ejb-local-ref (description?,ejb-ref-name,ejb-ref-type,local-home,local,ejb-link?)>
    <!--
    Ejb-ref 元素用于描述enterprise bean的home接口。描述由下面組成:
    一個(gè)可選描述
    enterprise bean 相關(guān)的EJB名稱
    Enterprise bean 的類型
    Enterprise bean 的本地接口
    可選的ejb-link信息
    Used in:web-app
    -->
    <!ELEMENT ejb-ref(description?,ejb-ref-name,ejb-ref,type,home,remote,ejb-link?)>
    <!--
    Ejb-ref-name 元素包含一個(gè)EJB的名字,這個(gè)名字必須是唯一的;這個(gè)EJB是web應(yīng)用環(huán)境和關(guān)聯(lián)的java:comp/env context的入口。建議名字以“ejb/”開頭。
    Used in : ejb-local-ref,ejb-ref
    例如:
    <ejb-ref-name>ejb/Payroll</ejb-ref-name>
    -->
    <!ELEMENT ejb-ref-name(#PCDATA)>
    <!--
    Ejb-ref-type 元素包含enterprise bean的類型。Ejb-ref-type元素必須是下面的一種:
    <ejb-ref-type>Entity</ejb-ref-type>
    <ejb-ref-type>Session</ejb-ref-type>
    Used in :ejb-local-ref,ejb-ref
    -->
    <!ELEMENT ejb-ref-type(#PCDATA)>
    <!--
    Env-entry 元素包含了web應(yīng)用的環(huán)境入口的描述。描述包含一個(gè)可選的描述,一個(gè)環(huán)境入口的名稱,一個(gè)可選的value,如果value沒有被指定,在部署中必須提供。
    -->
    <!ELEMENT env-entry (description?,env-entry-name,env-entry-value?,env-entry-type)>
    <!--
     env-entry-name元素包含了web應(yīng)用環(huán)境入口的名稱,這個(gè)名稱是一個(gè)java:comp/env context關(guān)聯(lián)的JNDI名稱。名字必須是唯一的。
    例如:
    <env-entry-name>minAmount</env-entry-name>
    Used in: env-entry
    -->
    <!ELEMENT env-entry-name(#PCDATA)>
    <!--
    Env-entry-type 元素包含環(huán)境入口值的fully-qualified java類型,這是web應(yīng)用程序期望有的。
    Env-enry-type合法的類型如下:
    Java.lang.Boolean
    Java.lang.Byte
    Java.lang.Character
    Java.lang.String
    Java.lang.Short
    Java.lang.Integer
    Java.lang.Long
    Java.lang.Float
    Java.lang.Double
    Used in : env-entry
    -->
    <!ELEMENT env-entry-type(#PCDATA)>
    <!--
    Env-entry-value元素包含了web應(yīng)用環(huán)境入口的值,值必須是一個(gè)字符串。
    例如:
    <env-entry-value>100.00</env-entry-value>
    Used in : env-entry
    <!ELEMENT env-entry-value(#PCDATA)>
     
    <!--
    Error-code元素包含HTTP的一個(gè)錯(cuò)誤代碼,如:404
    Used in : error-page
    -->
    <!ELEMENT error-code(#PCDATA)>
    <!--
     error-page 元素包含一個(gè)錯(cuò)誤代碼映射或錯(cuò)誤類型資源的一個(gè)路徑
    Used in : web-app
    -->
    <!ELEMENT error-page((error-code | exception-type),location)>
    <!--
     exception-type 包含一個(gè)java exception 類型的類名稱
    Used in : error-page
    -->
    <!ELEMENT exception-type(#PCDATA)>
    <!--
     extension元素包含一個(gè)擴(kuò)展名。如“txt”
    Used in : mine-mapping
    -->
    <!ELEMENT extension (#PCDATA)>
    <!--
     filter被filter-mapping中的一個(gè)servlet或一個(gè)URL通過filter-name映射。filter在運(yùn)行時(shí)能夠通過FilterConfig接口訪問初始化的參數(shù)。
    Used in : web-app
    -->
    <!ELEMENT filter (icon?,filter-name,display-name?,description?,filter-class,init-param*)>
     
    <!--
     filter-class元素指明filter類.
    Used in :filter
    -->
    <!ELEMENT filtere-class(#PCDATA)>
    <!--
     引擎用filter-mapping去匹配請(qǐng)求的URI以及匹配的順序,引擎在把匹配的URI匹配一個(gè)servlet。
    Used in : web-app
    -->
    <!ELEMENT filter-mapping (Filter-name,(url-pattern | servlet-name))>
    <!--
     filtere-name元素表明了一個(gè)filter的邏輯名稱用于匹配用的。邏輯名稱必須唯一
    Used in : filter,filere-mapping
    -->
    <!ELEMENT filter-name (#PCDATA)>
    <!--
     form-error-page元素定義了當(dāng)?shù)顷懯∈钦{(diào)用的頁面。這個(gè)路徑以“/”開始
    Used in: form-login-config
    -->
    <!ELEMENT form-error-page (#PCDATA)>
    <!--
     form-login-config元素指定了登陸的錯(cuò)誤頁面,如果form不需要驗(yàn)證,這個(gè)元素將被忽略。
    Used in : login-config
    -->
    <!ELEMENT form-login-cofig (form-login-page,form-error-page)>
    <!--
     form-login-page 元素定義了登陸的頁面。路徑以“/”開頭
     used in :form-login-config
    -->
    <!ELEMENT form-login-page (#PCDATA)>
    <!--
     home元素包含了enterprise bean的home接口的名稱
    Used in :ejb-ref
    例如:
    <home>com.aardvark.payroll.PayrollHome</home>
    <!ELEMENT home (#PCDATA)>
    <!--
     http-method 包含了HTTP 方法(GET | POST |...)
    Used in:web-resource-collection
    -->
    <!ELEMENT http-method (#PCDATA)>
     
    <!--
     icon 元素包含small-icon 和large-icon元素,指明一個(gè)gif或jpeg的圖標(biāo)名稱
    Used in : filter,servlet,web-app
    -->
    <!ELEMENT icon (small-icon?,large-icon?)>
     
    <!--
     init-param元素包含了name/value的servlet的初始化參數(shù)
    Used in : filter,servlet
    -->
    <!ELEMETN init-param (param-name,param-value,description?)>
    <!--
     jsp-file 元素 包含了一個(gè)以“/”開頭JSP文件的全名。
    Used in : servlet
    -->
    <!ELEMENT jsp-file (#PCDATA)>
    <!--
     large-icon 元素包含一個(gè)32*32的圖標(biāo)文件名稱。圖片可以是jpeg或gif。
     used in :icon
    例如:
    <large-icon>employee-service-icon32*32.jsp</large-icon>
    -->
    <!ELEMENT large-icon (#PCDATA)>
     
    <!--
     listener 元素對(duì)應(yīng)著listener bean
    Used in : web-app
    -->
    <!ELEMENT listener (listener-class)>
    <!--
     listener-class 元素,元素值是監(jiān)聽類的類名。
    Used in : listener
    -->
    <!ELEMENT listener-class (#PCDATA)>
    <!--
     load-on-startup 元素指明了這個(gè)servlet在web啟動(dòng)時(shí)是否必須裝入(調(diào)用servlet的init()方法)。這個(gè)內(nèi)容是可選的,但有值時(shí)必須是個(gè)整數(shù),如果是負(fù)數(shù),引擎可以選擇在任何時(shí)候裝載該servlet,如果是整數(shù)或0,引擎就必須在web應(yīng)用啟動(dòng)時(shí)裝入該servlet。數(shù)字越小越被優(yōu)先裝入。如果值一樣,引擎可以自由選擇裝入的順序。
    Used in : servlet
    -->
    <!ELEMENT load-on-startup (#PCDATA)>
    <!--
     local元素包含了enterprise bean的local接口
    Used in : ejb-local-ref
    -->
    <!ELEMENT local (#PCDATA)>
    <!--
     local-home元素包含了enterprise bean的本地home接口
    Used in : ejb-local-ref
    -->
    <!ELEMENT local-home (#PCDATA)>
     
    <!--
     location 元素包含與web應(yīng)用根目錄關(guān)聯(lián)的資源,值必須以‘/’開頭
    Used in : error-page
    -->
    <!ELEMENT location (#PCDATA)>
    <!--
     login-config 元素用于配置驗(yàn)證的方法的。
    Used in :web-app
    -->
    <!ELEMENT login-conifg (auth-method?,realm-name?,form-login-config?)>
     
    <!--
     mime-mapping 元素定義了擴(kuò)展名和mime類型的映射關(guān)系。
    Used in :web-app
    -->
    <!ELEMENT mime-mapping (extension,mime-type)>
     
    <!--
     mime-type 元素包含了mime類型,如“text/plain”
    Used in : mime-mapping
    -->
    <!ELEMENT mime-type (#PCDATA)>
    <!--
     param-name 元素包含參數(shù)的名稱,參數(shù)名必須唯一。
    Used in : context-param,init-param
    -->
    <!ELEMENT param-name (#PCDATA)>
     
    <!--
     param-value元素包含了參數(shù)的值
    Used in : context-param,init-param
    -->
    <!ELEMENT param-value (#PCDATA)>
     
    <!--
     realm-name 元素用于HTTP Basic 驗(yàn)證中
    Used in : login-config
    -->
    <!ELEMENT realm-name (#PCDATA)>
     
    <!--
     remote 元素包含了enterprise bean 的remote接口
    Used in : ejb-ref
    例如:
     <remote>com.wombat.empl.EmployeeService</remote>
    -->
    <!ELEMENT remote (#PCDATA)>
     
    <!--
     res-auth 元素表明是web應(yīng)用代碼控制資源,還是引擎控制資源。該元素的值只能是以下的一種
        <res-auth>Application</res-auth>
        <res-auth>Container</res-auth>
    Used in : resource-ref
    -->
    <!ELEMENT res-auth (#PCDATA)>
     
    <!--
     res-ref-name 元素指明了資源管理器(連接工廠)的名稱,這個(gè)名稱是和java:comp/env cocntext關(guān)聯(lián)的JNDI名稱。該名稱必須是唯一的。
    Used in:resource-ref
    -->
    <!ELEMENT res-ref-name (#PCDATA)>
     
    <!--
     res-sharing-scope 元素表明了從資源管理器連接工廠獲得的連接是否可以被共享。值必須是下面的一種:
     <res-sharing-scope>Shareable</res-sharing-scope>
     <res-sharing-scope>Unshareable</res-sharing-scope>
    默認(rèn)的值是Shareable
    Used in : resource-ref
    <!ELEMENT ref-sharing-scope (#PCDATA)>
     
    <!--
     res-type 元素描述了資源的數(shù)據(jù)類型。
    Used in : resource-ref
    -->
    <!ELEMENT res-type (#PCDATA)>
     
    <!--
     resource-env-ref 元素描述了與web應(yīng)用管理對(duì)象相關(guān)的資源。包含一個(gè)可選的描述,一個(gè)資源環(huán)境名稱,一個(gè)環(huán)境資源類型。
    Used in :web-app
    例如:
    <resource-env-ref>
     <resource-env-ref-name>jms/StockQueue</resource-env-ref-name>
     <resource-env-type>javax.jms/Queue</resource-env-ref-type>
    </resource-env-ref>
    -->
    <!ELEMENT resource-env-ref (description?,resource-env-ref-name,resource-env-ref-type)>
     
    <!--
     resource-env-ref-name元素一定一個(gè)環(huán)境資源名稱,這個(gè)名字是與java:comp/env context關(guān)聯(lián)的JNDI名稱,必須以唯一的。
    Used in : resource-env-ref
    -->
    <!ELEMENT resource-env-ref-name (#PCDATA)>
     
    <!--
     resource-env-ref-type元素定義了環(huán)境資源的類型,是一個(gè)java類或接口的全名。
    Used in: resource-env-ref
    -->
    <!ELEMENT resource-env-ref-type (#PCDATA)>
     
    <!--
       resource-ref 元素包含web應(yīng)用涉及的外部資源的描述。它有一個(gè)可選的描述,一個(gè)資源管理連接工廠的名稱,一個(gè)資源管理連接工廠的類型id,一個(gè)驗(yàn)證類型(Application 或 Container),和一個(gè)可選的連接共享的選項(xiàng)(Shareale 或 Unshareable)
    Used in : web-app
    例如:
    <resource-ref>
    <res-ref-name>jdbc/EmployeeApppDB</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>
    -->
    <!ELEMENT resource-ref (description?,res-ref-name,res-type,res-auth,res-sharing-scope?)>
     
    <!--
     role-link 元素是與安全角色相關(guān)的。Role-link元素必須包含一個(gè)在security-role元素中定義的安全角色的名稱。
    Used in: security-role-ref
    -->
    <!ELEMENT role-link (#PCDATA)>
     
    <!--
     role-name 元素包含一個(gè)安全角色的名稱,名稱必須遵守NMTOKEN規(guī)則。
    Used in : auth-constraint,run-as,security-role,security-role-ref
    -->
    <!ELEMENT role-name (#PCDATA)>
     
    <!--
     run-as 元素包含一個(gè)可選的描述,和一個(gè)安全角色的名稱。
    Used in : servlet
    -->
    <!ELEMENT run-as (description?,role-name)>
     
    <!--
     security-constraint元素用于安全約束與一個(gè)或多個(gè)web資源相關(guān)聯(lián)。
    Used in :web-app
    -->
    <!ELEMENT security-constraint (display-name?,web-resource-collection+,auth-constraint?,user-data-constraint?)>
     
    <!--
     security-role元素包含安全角色的定義,它由一個(gè)可選的安全角色的描述,一個(gè)安全角色名稱組成。
    Used in : web-app
    例如:
    <security-role>
    <description>
       this role includes all employees who are authorized to access the employee service application.
    </description>
    <role-name>employee</role-name>
    </security-role>
    -->
    <!ELEMENT security-role (description?,role-name)>
     
    <!--
     security-role-ref 元素包含一個(gè)可選的描述,一個(gè)調(diào)用代碼中的安全角色名稱,一個(gè)可選的安全角色連接。如果安全角色沒有被指定,開發(fā)者必須選擇一個(gè)適當(dāng)?shù)陌踩巧_@個(gè)role-name元素的值必須是EJBConteext.isCallerInRole(String roleName)或HttpServletRequest.isUserInRole(String role)中的參數(shù)。
    Used in :servlet
    -->
    <!ELEMENT security-role-ref (description?,role-name,role-link?)>
     
    <!--
     servlet 元素包含一個(gè)servlet的數(shù)據(jù)描述。如果load-on-startup元素中指定了一個(gè)jsp文件,該JSP將被裝入。
    Used in : web-app
    <!ELEMENT servlet (icon?,servlet-name,display-name?,description?,(servlet-class|jsp-file),init-param*,load-on-startup?,run-as?,security-role-ref*)>
     
    <!--
     servlet-class元素包含一個(gè)全名的servlet類名稱。
    Used in : servlet
    -->
    <!ELEMENT servlet-class (#PCDATA)>
     
    <!--
     servlet-mapping元素定義了一個(gè)servlet和url的關(guān)聯(lián)
    Used in : web-app
    -->
    <!ELEMENT servlet-mapping (servlet-name,url-pattern)>
     
    <!--
     servlet-name元素包含servlet的名稱,名稱是唯一的。
    Used in : filter-mapping,servlet,servlet-mapping
    -->
    <!ELEMENT servlet-name (#PCDATA)>
     
    <!--
     session-config 元素定義了session參數(shù)
    Used in : web-app
    -->
    <!ELEMENT session-config (session-timeout?)>
     
    <!--
     session-timeout 元素定義了一個(gè)默認(rèn)的會(huì)話超時(shí)的時(shí)間,使用于web應(yīng)用中的所有會(huì)話。時(shí)間必須是用分鐘的數(shù)值表示。
    如果timeout是0或負(fù)數(shù),引擎將確保會(huì)話永遠(yuǎn)不會(huì)超時(shí)。
    Used in : session-config
    -->
    <!ELEMENT session-timeout (#PCDATA)>
     
    <!--
     small-icon 元素包含一個(gè)16*16圖標(biāo)文件的名稱。
    Used in : icon
    例如:
     <small-icon>employee-service-icon16*16.jpg</small-icon>
    -->
    <!ELEMENT small-icon (#pCDATA)>
     
     taglib 元素用于描述JSP tag 庫。
    Used in : web-app
    -->
    <!ELEMENT taglib (taglib-uri,taglib-location)>
     
    <!--
     taglib-location 元素包含一個(gè)資源定位,為tag庫找到tag描述文件
    Used in:taglib
    -->
    <!ELEMENT taglib-location (#PCDATA)>
     
    <!--
     taglib-uri元素描述了一個(gè)URI
    Used in: taglib
    -->
    <!ELEMENT taglib-uri (#PCDATA)>
     
    <!--
     transport-guarantee元素指定了客戶端和服務(wù)端的通信關(guān)系,有NONE,INTEGRAL,CONFIDENTIAL。NONE表示著應(yīng)用不需要任何傳輸保障。INTEGRAL表示著在數(shù)據(jù)在客戶端到服務(wù)端的過程中不能有任何改變。CONFIDENTIAL表示在傳輸過程中防止其他傳輸內(nèi)容的干擾。在使用SSl時(shí)常用的就INTEGRAL或CONFIDENTIL。
    Used in : user-data-constraint
    <!ELEMENT transport-guarantee (#PCDATA)>
     
    <!--
     url-pattern 元素包含映射的url。必須符合11.2章中servlet API描述的規(guī)則。
    Used in:filter-mapping,servlet-mapping,web-resource-collection
    -->
    <!ELEMENT url-pattern (#PCDATA)>
     
    <!--
     user-data-constraint元素用于表明數(shù)據(jù)在客戶端到服務(wù)器端是怎么保護(hù)的。
    Used in :security-constraint
    -->
    <!ELEMENT user-data-constraint (description?,transport-guarantee)>
     
    <!--
     web-resource-collection元素用于web應(yīng)用中安全限制的資源被那些方法使用,如果沒有指定,就可以被web用的所有方法調(diào)用。
    Used in:security-constraint
    -->
    <!ELEMENT web-resource-collection (web-resource-name,description?,url-pattern*,http-method*)>
     
    <!--
     web-resource-name 包含一個(gè)web資源集合的名稱
    Used in:web-resource-collection
    -->
    <!ELEMENT web-resource-name (#PCDATA)>
     
    <!--
     welcome-file元素包含了web應(yīng)用中默認(rèn)的訪問文件,如index.html
    Used in:welcome-file-list
    -->
    <!ELEMENT welcome-file (#PCDATA)>
     
    <!--
     welcome-file-list包含welcome-file的列表
    Used in:web-app
    -->
    <!ELEMENT welcome-file-list (welcome-file+)>
    <!--
     ID機(jī)制可以增加額外的部署信息,不允許加一個(gè)非標(biāo)準(zhǔn)的元素到標(biāo)準(zhǔn)的部署描述中
    -->
    <!ATTLIST auth-constraint id ID #IMPLIED>
    <!ATTLIST auth-method id ID #IMPLIED>
    <!ATTLIST context-param id ID #IMPLIED>
    <!ATTLIST description id ID #IMPLIED>
    <!ATTLIST display-name id ID #IMPLIED>
    <!ATTLIST ejb-link id ID #IMPLIED>
    <!ATTLIST ejb-local-ref id ID #IMPLIED>
    <!ATTLIST ejb-ref  id ID #IMPLIED>
    <!ATTLIST ejb-ref-name id ID #IMPLIED>
    <!ATTLIST ejb-ref-type id ID #IMPLIED>
    <!ATTLIST env-entry id ID #IMPLIED>
    <!ATTLIST env-entry-name id ID #IMPLIED>
    <!ATTLIST env-entry-type id ID #IMPLIED>
    <!ATTLIST env-enry-value id ID #IMPLIED>
    <!ATTLIST error-code id ID #IMPLIED>
    <!ATTLIST error-page id ID #IMPLIED>
    <!ATTLIST exception-type id ID #IMPLIED>
    <!ATTLIST extension id ID #IMPLIED>
    <!ATTLIST filter id ID #IMPLIED>
    <!ATTLIST filter-class id ID #IMPLIED>
    <!ATTLIST filtere-mapping id ID #IMPLIED>
    <!ATTLIST filter-name id ID #IMPLIED>
    <!ATTLIST form-error-page id ID #IMPLIED>
    <!ATTLIST form-login-config id ID #IMPLIED>
    <!ATTLIST form-login-page id ID #IMPLIED>
    <!ATTLIST home id ID #IMPLIED>
    <!ATTLIST http-method id ID #IMPLIED>
    <!ATTLIST icon id ID #IMPLIED>
    <!ATTLIST init-param id ID #IMPLIED>
    <!ATTLIST jsp-file id ID #IMPLIED>
    <!ATTLIST large-icon id ID #IMPLIED>
    <!ATTLIST listener id ID #IMPLIED>
    <!ATTLIST listener-class id ID #IMPLIED>
    <!ATTLIST load-on-startup id ID #IMPLIED>
    <!ATTLIST local id ID #IMPLIED>
    <!ATTLIST local-home id ID #IMPLIED>
    <!ATTLIST location id ID #IMPLIED>
    <!ATTLIST login-config id ID #IMPLIED>
    <!ATTLIST mime-mapping id ID #IMPLIED>
    <!ATTLIST mime-type id ID #IMPLIED>
    <!ATTLIST param-name id ID #IMPLIED>
    <!ATTLIST param-value id ID #IMPLIED>
    <!ATTLIST realm-name id ID #IMPLIED>
    <!ATTLIST remote id ID #IMPLIED>
    <!ATTLIST res-auth id ID #IMPLIED>
    <!ATTLIST res-ref-name id ID #IMPLIED>
    <!ATTLIST res-sharing-scope id ID #IMPLIED>
    <!ATTLIST res-type id ID #IMPLIED>
    <!ATTLIST resource-env-ref id ID #IMPLIED>
    <!ATTLIST resource-env-ref-name id ID #IMPLIED>
    <!ATTLIST resource-env-ref-type id ID #IMPLIED>
    <!ATTLIST resource-ref id ID #IMPLIED>
    <!ATTLIST role-link id ID #IMPLIED>
    <!ATTLIST role-name id ID #IMPLIED>
    <!ATTLIST run-as id ID #IMPLIED>
    <!ATTLIST security-constraint id ID #IMPLIED>
    <!ATTLIST security-role id ID #IMPLIED>
    <!ATTLIST security-role-ref id ID #IMPLIED>
    <!ATTLIST sevlet id ID #IMPLIED>
    <!ATTLIST servlet-class id ID #IMPLIED>
    <!ATTLIST servlet-mapping id ID #IMPLIED>
    <!ATTLIST servlet-name id ID #IMPLIED>
    <!ATTLIST session-config id ID #IMPLIED>
    <!ATTLIST session-timeout id ID #IMPLIED>
    <!ATTLIST small-icon id ID #IMPLIED>
    <!ATTLIST taglib id ID #IMPLIED>
    <!ATTLIST taglib-location id ID #IMPLIED>
    <!ATTLIST taglib-uri id ID #IMPLIED>
    <!ATTLIST transport-guarantee id ID #IMPLIED>
    <!ATTLIST rul-pattern id ID #IMPLIED>
    <!ATTLIST user-data-constraint id ID #IMPLIED>
    <!ATTLIST web-app id ID #IMPLIED>
    <!ATTLIST web-resource-collection id ID #IMPLIED>
    <!ATTLIST web-resource-name id ID #IMPLIED>
    <!ATTLIST welcome-file id ID #IMPLIED>
    <!ATTLIST welcome-file-list id ID #IMPLIED>
     
    13.4 例子
    13.4.1 基本的例子
    <!DOCTYPE web-app PUBLIC "-//Sun Mmicrosystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
    <web-app>
        <display-name>A Simple Application</display-name>
        <context-param>
            <param-name>Webmaster</param-name>
            <param-value>webmaster@mycorp.com</param-value>
       </context-param>
        <servlet>
            <servlet-name>catalog</servlet-name>
            <serrvlet-class>com.mycorp.Catalogservlet</servlet-class>
            <init-param>
                <param-name>catalog</param-name>
                <param-value>Spring</param-value>
            </init-param>
        </servlet>
        <servlet-mapping>
            <servlet-name>catalog</servlet-name>
            <url-pattern>/catalog/*</url-pattern>
        </servlet-mapping>
        <session-config>
            <session-timeout>30</session-timeout>
        </session-config>
        <mime-mapping>
            <extension>pdf</extension>
            <mime-type>application/pdf</mime-type>
        </mime-mapping>
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
            <welcome-file>index.html</welcome-file>
            <welcome-file>index.htm</welcome-file>
        </welcome-file-list>
        <error-page>
            <error-code>404</error-code>
            <location>/404.html</location>
        <error-page>
    </web-app>
     
    13.4.2 一個(gè)安全的例子
    <!DOCTYPE web-app PUBLIC "-//Sun Mmicrosystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">
    <web-app>
        <display-name>A Secure Application</display-name>
        <security-role>
            <role-name>manager</role-name>
        </security-role>
        <servlet>
            <servlet-name>catalog</servlet-name>
            <servlet-class>com.mycorp.CatalogServlet</servlet-class>
            <init-param>
                <param-name>catalog</param-name>
                <param-value>Spring</param-value>
            </init-param>
            <security-role-ref>
                 <role-name>MGR</role-name>
                 <!-- 在代碼中用的角色名稱-->
                 <role-link>manager</role-link>
            </security-role-ref>
        </servlet>
        <servlet-mapping>
             <servlet-name>catalog</servlet-name>
             <url-pattern>/catalog/*</url-pattern>
        </servlet-mapping>
        <security-constraint>
            <web-resource-collection>
                <web-resource-name>SalesInfo</web-resource-name>
                <url-pattern>/salesinfo/*</url-pattern>
                <http-method>GET</http-method>
                <http-method>POST</http-method>
            </web-resource-collection>
            <auth-constraint>
                <role-name>manager</role-name>
            </auth-constraint>
            <user-data-constraint>
                <transport-guarantee>CONFIDENTIAL</transport-guarantee>
            </user-data-constraint>
        </security-constraint>
    </web-app>
     
    結(jié)尾:
    servlet2.3到此就結(jié)束了,至于對(duì)接口類的解釋。這里就不給與了。有興趣的朋友可以down一個(gè)servlet2.3的源碼包自己研究研究。

    posted on 2007-08-20 17:52 朱巖 閱讀(374) 評(píng)論(0)  編輯  收藏 所屬分類: servlet文章

    主站蜘蛛池模板: 校园亚洲春色另类小说合集| 亚洲va久久久噜噜噜久久天堂| 女人18毛片水真多免费看| 91av免费观看| **一级毛片免费完整视| 亚洲免费闲人蜜桃| 四虎1515hh永久久免费| 24小时免费直播在线观看| 免费观看美女裸体网站| 四虎影在线永久免费四虎地址8848aa | 国产大片免费观看中文字幕| 日本免费人成黄页网观看视频| 国产高清免费的视频| 亚洲国产91精品无码专区| 亚洲毛片不卡av在线播放一区| 国产亚洲精品拍拍拍拍拍| 亚洲国产精品一区第二页| 亚洲激情在线视频| 综合自拍亚洲综合图不卡区| 亚洲免费福利视频| 亚洲国产成人精品无码区花野真一 | 亚洲国产婷婷六月丁香| 亚洲精品成人av在线| 亚洲av产在线精品亚洲第一站| 亚洲第一第二第三第四第五第六| 黄色一级视频免费| 国产拍拍拍无码视频免费| 在线观看永久免费| 性做久久久久免费看| 国产成人亚洲影院在线观看| 亚洲AV日韩AV永久无码久久| 亚洲人成免费网站| 一本久久免费视频| 久久99国产乱子伦精品免费| 成年女人毛片免费播放视频m| 亚洲福利中文字幕在线网址| 亚洲综合无码一区二区| 亚洲AⅤ男人的天堂在线观看| 国产成人自产拍免费视频| 亚洲一级毛片免费看| 免费一级毛片在播放视频|