servlet-mapping元素及其子元素

          <servlet-mapping>元素在Servlet和URL樣式之間定義一個映射。它包含了兩個子元素<servlet- name>和<url-pattern>,<servlet-name>元素給出的Servlet名字必須是在<servlet>元素中聲明過的Servlet的名字。<url-pattern>元素指定對應(yīng)于Servlet的URL路徑,該路徑是相對于Web應(yīng)用程序上下文根的路徑。例如:

          <servlet-mapping>
          <servlet-name>helloworld</servlet-name>
          <url-pattern>/hello</url-pattern>
          </servlet-mapping>

           

                  Servlet 2.5規(guī)范允許<servlet-mapping>的<url-pattern>子元素出現(xiàn)多次,之前的規(guī)范只允許一個<servlet-mapping>元素包含一個<url-pattern>子元素。我們看下面的例子:
          <servlet-mapping>
          <servlet-name>welcome</servlet-name>
          <url-pattern>/en/welcome</url-pattern>
          <url-pattern>/zh/welcome</url-pattern>
          </servlet-mapping>

                 在配置了Servlet與URL樣式之間的映射后,當(dāng)Servlet容器接收到一個請求,它首先確定該請求應(yīng)該由哪一個Web應(yīng)用程序來響應(yīng)。這是通過比較請求URI的開始部分與Web應(yīng)用程序的上下文路徑來確定的。映射到Servlet的路徑是請求URI減去上下文的路徑,Web應(yīng)用程序的Context對象在去掉請求URI的上下文路徑后,將按照下面的路徑映射規(guī)則的順序?qū)κS嗖糠值穆窂竭M(jìn)行處理,并且在找到第一個成功的匹配后,不再進(jìn)行下一個匹配。

                容器試著對請求的路徑和Servlet映射的路徑進(jìn)行精確匹配,如果匹配成功,則調(diào)用這個Servlet來處理請求。

                容器試著匹配最長的路徑前綴,以斜杠(/)為路徑分隔符,按照路徑樹逐級遞減匹配,選擇最長匹配的Servlet來處理請求。

                如果請求的URL路徑最后有擴(kuò)展名,如.jsp,Servlet容器會試著匹配處理這個擴(kuò)展名的Servlet。

                 如果按照前面3條規(guī)則沒有找到匹配的Servlet,容器會調(diào)用Web應(yīng)用程序默認(rèn)的Servlet來對請求進(jìn)行處理,如果沒有定義默認(rèn)的Servlet,容器將向客戶端發(fā)送HTTP 404錯誤信息(請求資源不存在)。

                 在部署描述符中,可以使用下面的語法來定義映射。

                以/開始并且以 /* 結(jié)束的字符串用來映射路徑,例如:

          <url-pattern>/admin/*</url-pattern>

                  如果沒有精確匹配,那么對/admin/路徑下的資源的所有請求將由映射了上述URL樣式的Servlet來處理。

                  以 *. 為前綴的字符串用來映射擴(kuò)展名,例如:

          <url-pattern>*.do</url-pattern>

              如果沒有精確匹配和路徑匹配,那么對具有.do擴(kuò)展名的資源的請求將由映射了上述URL樣式的Servlet來處理。

                   以一個單獨(dú)的/指示這個Web應(yīng)用程序是默認(rèn)的Servlet,例如:

          <url-pattern>/</url-pattern>

                  如果對某個請求沒有找到匹配的Servlet,那么將使用Web應(yīng)用程序的默認(rèn)Servlet來處理。

                   所有其他的字符被用于精確匹配,例如:

          <url-pattern>/login</url-pattern>

                    如果請求/login,那么將由映射了URL樣式/login的Servlet來處理。

          posted on 2012-05-22 20:32 youngturk 閱讀(18509) 評論(1)  編輯  收藏 所屬分類: web.xml解析

          <2012年5月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導(dǎo)航

          統(tǒng)計(jì)

          公告

          this year :
          1 jQuery
          2 freemarker
          3 框架結(jié)構(gòu)
          4 口語英語

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          EJB學(xué)習(xí)

          Flex學(xué)習(xí)

          learn English

          oracle

          spring MVC web service

          SQL

          Struts

          生活保健

          解析文件

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 广宁县| 资兴市| 台州市| 永兴县| 卢氏县| 镇原县| 平舆县| 得荣县| 喜德县| 仪征市| 阳谷县| 基隆市| 景宁| 玉龙| 甘孜| 石河子市| 杭锦旗| 和林格尔县| 左云县| 建湖县| 陵川县| 航空| 包头市| 泊头市| 行唐县| 遵义县| 大宁县| 甘德县| 南京市| 延长县| 安丘市| 蓬安县| 武清区| 茂名市| 通道| 融水| 桃园县| 临潭县| 长春市| 景洪市| 双江|