|
匹配方式 |
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)
本文详细介绍了Servlet的精确与模糊路径映射规则,包括不同匹配方式的特点与使用场景,并解释了Tomcat服务器如何处理静态资源请求。
1049

被折叠的 条评论
为什么被折叠?



