当前位置: 代码迷 >> Web前端 >> JavaWeb之Servlet(2)
  详细解决方案

JavaWeb之Servlet(2)

热度:250   发布时间:2012-08-29 08:40:14.0
JavaWeb之Servlet(二)

一、映射Servlet的URL

?

? ? ? ? ?1、同一个Servlet可以被映射到多个URL上,即多个<servlet-mapping>元素

? ? ? ??的<servlet-name>可以被注册到同一个Servlet上面。

?

? ? ? ? ?2、映射Servlet的URL只能有两种写法:

2.1、*.扩展名

2.2、以正斜线(/)开头,并以(/*)结尾。

?

? ? ? ? ?3、对于如下一些映射关系:

?

? ?3.1、Servlet1 映射到 /abc/*

?

? ?3.2、Servlet2 映射到 /*

?

? ?3.3、Servlet3 映射到 /abc

?

?3.4、Servlet4 映射到 *.do

?

?

? ? ? ? ? ? ? ? ?有以下几种请求的URL时,Servlet引擎的调用:

?

? ? ? ? ? ? ? ? ? ?1>、当请求的URL为:"/abc/a.html"时,"/abc/*"和"/*"都匹配的

? ? ? ? ? ? ? ? ? ? 情况下,Servlet引擎会调用那个最为匹配的URL对应的Servlet

? ? ? ? ? ? ? ? ? ? 类,即为Servlet1

?

? ? ?2>、当请求的URL为:"/abc"时,"/abc"和"/abc/*"都匹配的情况下

? ? ? ?Servlet引擎会调用Servlet3

?

? ? ? ?3>、当请求的URL为:"/abc/a.do"时,"/abc/*"和"*.do"都匹配

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?的情况下,Servlet引擎将调用Servlet1

?

l

?

?

? ? ? ? ? ? ?4>、当请求的URL为:"/a.do"时,"/*"和"*.do"都匹配,Servlet引擎

? ? ? ?将调用Servlet2 ? ?

?

? ? ? ? ? ? ?5>、当请求的URL为:"/aaa/bbb/c.do"时,"/*"和"*.do"都匹配,

? ? ? ? ? ? ? ? ? ? Servlet引擎会调用Servlet2

?

二、DefaultServlet(默认Servlet)

?

? ? ? ? ? ? 这个默认的Servlet位于:$CATALINA_HOME/conf/web.xml

?

?

 <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>
          org.apache.catalina.servlets.DefaultServlet
        </servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

...

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

?

? ? ? ? ?1、如果一个Servlet的映射路径为正斜杠(/),那么这个Servlet就为当前

? ? ? ? ? ? ? ? ? ?web应用的缺省Servlet。 ? ???

?

? ? ? ? ? ?2、凡是在web.xml文件中找不到匹配的<servlet-mapping>元素的URL

? ? ? ? ? ? ? ? ? 他们的访问请求都将被交给这个默认的Servlet处理,即缺省的Servlet

? ? ? ? ? ? 用于处理其他Servlet都不处理的请求

?

? ? ? ? ? ?3、当访问Tomcat服务器中得某个静态资源(如:html页面、图片等)的时候

? ? ? ? ? ? ? ? ? 就是有这个默认的Servlet进行处理的

?

?

?

?

  相关解决方案