web.xml中servlet配置及其含义

这里其实最想说的是配置中各节点的含义:html

<!-- 配置一个servlet -->
<!-- servlet的配置 -->
<servlet>
    <!-- servlet的内部名称,自定义。尽可能有意义 -->
    <servlet-name>ServletDemo</servlet-name>
    <!-- servlet的类全名: 包名+简单类名 -->
    <servlet-class>lm.practice.ServletDemo</servlet-class>
</servlet>
<!-- servlet的映射配置 -->
<servlet-mapping>
    <!-- servlet的内部名称,必定要和上面的内部名称保持一致!! -->
    <servlet-name>ServletDemo</servlet-name>
    <!-- servlet的映射路径(访问servlet的名称) -->
    <url-pattern>/servlet</url-pattern>
</servlet-mapping>

能够看到,在配置Servlet时,有两个地方须要配置,一个是<servlet>,另外一个是<servlet-Mapping>,这两个一个是配置Servlet,一个是配置其映射信息,其中<servlet>中的<servlet-name>能够随意指定,但要有必定的意义,通常取为类的名称,例如个人类名为ServletDemo,这里取名为ServletDemo,下面的<servlet-class>是类的全路径,package+calssname,必定要是全路径!浏览器

<servlet-Mapping>是映射信息,它也有一个<servlet-name>,里面的名字是对应的Servlet名,也就是咱们上面配置的Servlet名字,这里是ServletDemo,下面的是映射路径,也就是访问Servlet的名称,这里也是以方便和有意义为前提的,是咱们在访问Servlet在浏览器地址栏后面输入的那个信息,例如个人映射路径命名为/servlet,在地址栏中输入http://localhost/20170323/servlet
app

注意:这里的映射路径必定不是丢掉/,不然就会出错了,必定要写成/servlet,不能是servleturl



这里说一下在配置映射路径的时候,有如下两种:

                    url-pattern                         浏览器输入spa

精确匹配             /servlet                   http://localhost:8080/day10/servlethtm

                                                   

 

模糊匹配             /*                   http://localhost:8080/20170323/任意路径blog

                         /lm/*                http://localhost:8080/20170323/lm/任意路径servlet

                     *.后缀名              http://localhost:8080/20170323/任意路径.doio

                     *.doclass

                     *.action

                     *.html(伪静态)

 

注意:

                   1url-pattern要么以 / 开头,要么以*开头。  绝对不能漏掉斜杠!!!!!!!!!

                   2)不能同时使用两种模糊匹配,例如 /lm/*.do是非法路径

                   3)当有输入的URL有多个servlet同时被匹配的状况下:

                                     3.1 精确匹配优先。(长的最像优先被匹配)

                                     3.2 之后缀名结尾的模糊匹配先级最低!!!