匹配方式 | servlet映射路径 | 浏览器访问 |
精确匹配 | /first /first/abc | http://localhost:8080/myshop/first http://localhost:8080/myshop/first/abc |
模糊匹配 | /* /test/* *.后缀名 | http://localhost:8080/myshop/任意路径 http://localhost:8080/myshop/test/任意路径 http://localhost:8080/myshop/任意路径后缀名 |
注意:
1)servlet的路径映射必须以 / 开头或者*开头。例如直接写first服务器会报错
2)servlet的路径映射中,不能同时存在两种"模糊匹配"的规则。例如 /test/*.do 会报错。
3)当浏览器的路径同时匹配多个servlet的时候
a)精确度越高的URL(最像url的)优先被匹配。
b)以后缀名结尾的URl优先级最低。
Tomcat服务器下默认的Servlet(%tomcat%/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>false</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>
例如浏览器如何访问一个资源: http://localhost:8080/myshop/test.html
1)加载当前web应用(myshop项目)下的web.xml文件,看是否存在对应匹配的url-pattern.如果匹配到就会执行对应的servlet
2)如果匹配不到,那么就会去%tomcat%/conf/web.xml中匹配缺省的Servlet (url-pattern : /)。这个缺省的Servlet的作用,读取当前web应用(myshop项目)根目录下的静态资源,把静态资源的内容输出到浏览器。(这个缺省的Servlet的作用主要处理静态资源的!!!!!)
3)如果当前web应用下读取不到静态资源,就返回404错误。
浏览器访问 —> 找web应用中的动态资源(servlet)-web.xml -> 找静态资源(html)