* 当一个请求发送到servlet容器的时候,容器先会将请求的url减去当前应用上下文的路径作为servlet的映射url,比如我访问的是http://localhost/demo/hello.html,我的应用上下文是test,容器会将http://localhost/demo去掉,剩下的/hello.html部分拿来做servlet的映射匹配。
* 容器会首先查找完全匹配,如果找不到,再查找目录匹配,如果也找不到,就查找扩展名匹配。如果还没有找到一个servlet,器将尝试为请求的资源使用内容服务,如果应用定义了一个默认servlet,则容器会将请求丢给默认servlet。
* 如果一个请求匹配多个“目录匹配”,容器会选择最长的匹配。如:servletA的url-pattern为/user/*,而servletB的url-pattern为/user/hello/*,此时访问http://localhost/demo/user/hello时,容器会选择路径最长的servlet来匹配,也就是这里的servletB。
路径精确匹配方式:
<url-pattern>/hello</url-pattern> 精确匹配
<url-pattern>/system/hello</url-pattern> 精确匹配<url-pattern>/system/testPath/welcome</url-pattern> 精确匹配
<url-pattern>/system/testPath/welcome.do</url-pattern> 精确匹配
<url-pattern>/system/testPath/welcome.action</url-pattern> 精确匹配
<servlet>
<servlet-name>demo</servlet-name>
<servlet-class>com.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo</servlet-name>
<url-pattern>/hello</url-pattern>
<url-pattern>/system/hello</url-pattern>
<url-pattern>/system/testPath/welcome</url-pattern>
<url-pattern>/system/testPath/welcome.do</url-pattern>
<url-pattern>/system/testPath/welcome.action</url-pattern>
</servlet-mapping>
路径扩展匹配方式:
<url-pattern>/user/*</url-pattern> 扩展匹配
<url-pattern>/*</url-pattern> 扩展匹配
<url-pattern>/</url-pattern> 扩展匹配
<servlet-mapping>
<servlet-name>demo</servlet-name>
<url-pattern>/user/*</url-pattern>
</servlet-mapping>
<url-pattern>/</url-pattern> 会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url
<url-pattern>/*</url-pattern> 会匹配所有url:路径型的和后缀型的url(包括/login,*.jsp,*.js和*.html等)
<url-pattern>/</url-pattern> 不会匹配到*.jsp,不会进入spring的DispatcherServlet类
<url-pattern>/*</url-pattern> 会匹配*.jsp,导致进入spring的DispatcherServlet类,然后去寻找controller,接着找不到对应的controller所以报错。
所以要在spring-servlet.xml文件中配置如下:
<!--让spring前端控制器跳过静态的资源请求 location路径, /resources/**这个文件夹下所有资源全部跳过 -->
<mvc:resources mapping="/resources/**" location="/resources/" />
<url-pattern>*.do</url-pattern> 后缀匹配
<url-pattern>*.action</url-pattern> 后缀匹配
<servlet-mapping>
<servlet-name>demo</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
希望对你有帮助,祝你有一个好心情,加油!
转载请注明出处,谢谢。