servlet-mapping元素及其子元素的使用方法

< servlet-mapping >元素的作用:用在Servlet和URL样式之间定义一个映射。
它包含了两个子元素< servlet- name >< url-pattern >
< servlet-name >元素给出的Servlet名字必须是在< servlet >元素中声明过的Servlet的名字,
< url-pattern>元素指定对应于Servlet的URL路径,该路径是相对于Web应用程序上下文根的路径。
例如:

<servlet>
    <description>spring mvc servlet</description>
    <servlet-name>wecard</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>
                classpath:spring-mvc.xml
            </param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>wecard</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>wecard</servlet-name>
    <url-pattern>*.html</url-pattern>
  </servlet-mapping>

在配置了Servlet与URL样式之间的映射后,当Servlet容器接收到一个请求,它首先确定该请求应该由哪一个Web应用程序来响应。这是通过比较请求URI的开始部分与Web应用程序的上下文路径来确定的。映射到Servlet的路径是请求URI减去上下文的路径,Web应用程序的Context对象在去掉请求URI的上下文路径后,将按照下面的路径映射规则的顺序对剩余部分的路径进行处理,并且在找到第一个成功的匹配后,不再进行下一个匹配,
大概意思只这样的,
例子:

register.html部分代码

<div class="mt30 center">
    <a href="wechatOAuth.html">忘记密码</a> 
    <a href="#springUrl('/register.do')">点我注册</a>
</div>

同过SpringURL路径解析,servlet接到register.do 请求它,确定web程序响应,然后做出反应:

  • 容器试着对请求的路径和Servlet映射的路径进行精确匹配,如果匹配成功,则调用这个Servlet来处理请求,
    容器试着匹配最长的路径前缀,以斜杠(/)为路径分隔符,按照路径树逐级递减匹配,选择最长匹配的Servlet来处理请求,

  • 如果请求的URL路径最后有扩展名,如.jsp,Servlet容器会试着匹配处理这个扩展名的Servlet,

  • 如果按照前面3条规则没有找到匹配的Servlet,容器会调用Web应用程序默认的Servlet来对请求进行处理,如果没有定义默认的Servlet,容器将向客户端发送HTTP 404错误信息(请求资源不存在),

你可能感兴趣的:(servlet-mapping元素及其子元素的使用方法)