配置中各节点的含义:
-
<!-- 配置一个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/2/servlet
注意:映射路径一定不是丢掉/,否则就会出错了,一定要写成/servlet,不能是servlet
url-pattern 浏览器输入
精确匹配 /servlet http://localhost:8080/day10/servlet
模糊匹配 /* http://localhost:8080/20170323/任意路径
/lm/* http://localhost:8080/20170323/lm/任意路径
*.后缀名 http://localhost:8080/20170323/任意路径.do
*.do
*.action
*.html(伪静态)
注意:
1)url-pattern要么以 / 开头,要么以*开头。 绝对不能漏掉斜杠!!!!!!!!!
2)不能同时使用两种模糊匹配,例如 /lm/*.do是非法路径
3)当有输入的URL有多个servlet同时被匹配的情况下:
3.1 精确匹配优先。(长的最像优先被匹配)
3.2 以后缀名结尾的模糊匹配先级最低!!!