开发者社区> 问答> 正文

关于SpringMVC中URL拦截的迷惑

大神看看如下Spring-mvc的web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">
    <display-name>AweekServer1.1</display-name>
    <servlet>
        <servlet-name>user</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>user</servlet-name>
<!-- 使用"/* "就不行,这是为什么呢?-->
        <url-pattern>/user/*</url-pattern>
 
    </servlet-mapping>
 
</web-app>

展开
收起
a123456678 2016-03-16 17:13:03 2311 0
1 条回答
写回答
取消 提交回答
  • 这是servlet 3之前版本的配置,servlet只接受3种url-pattern。

    1.以"/"开头并以"/"结尾的,也就是url-pattern里面至少出现两个"/"。比如"/user/"。

    2.以"."为开头的,也就是抓取后缀名。比如".user"。

    3.单独的一个"/",网站的默认处理servlet。

    所以你填写的"/*"并不符合servlet的抓取规则,就根本没有走到spring的配置里面去。
    从servlet3开始,多增加了两个url-pattern支持。

    4.空字符串("")格式,这个好像是特殊的映射,映射到整个访问根目录的请求,文档上说的是“application's context root”,不是当前的context根目录。

    5.不带有正则的精确匹配。

    具体的可以看servlet的标准文档。servlet-3_0-final-spec.pdf中的12.2 Specification of Mappings章节。

    2019-07-17 19:04:08
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载