开发者社区 问答 正文

Spring mvc 的 requestmapping value问题

spring mvc的访问地址:

    例:  localhost:8080/hello 

    如果在访问后面加个斜线仍然可以访问:localhost:8080/hello/ 

    怎么禁止这种情况

展开
收起
爵霸 2016-05-31 14:34:04 2524 分享 版权
1 条回答
写回答
取消 提交回答
  • 首先看spring mvc在取handler的时候如何取到的,debug到框架代码看到,当取handler时,已经有这几个url作为key和所要找的handler对应,/hello, /hello.*, /hello/

    screenshot

    这个map在AbstractUrlHandlerMapping中,所以顺势就在这个类的map是怎么加载的,最后找到这个类的方法 DefaultAnnotationHandlerMapping.addUrlsForPath
    screenshot
    可以看到根据三个条件判断是否要加默认的后缀匹配,后面两个条件没法搞了,只有看第一个条件,它是DefaultAnnotationHandlerMapping的一个属性,默认true

    screenshot
    所以只要配置一下这个属性为false就可以了,在servlet的配置文件中增加一个配置改成false就可以啦

    screenshot

    这次再次启动,访问/hello/就报404啦

    2019-07-17 19:21:54
    赞同 展开评论