springmvc 下面url匹配与后缀匹配情况简述

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cdnight/article/details/87871451

前言

最近的项目需要用到无后缀匹配,譬如,要匹配 /index 到 一个控制器上面,所以找了些资料来实践。
下面是参考用的资料:
spring mvc url匹配禁用后缀访问

url-pattern中/与/*的区别
SpringMvc出现Jsp页面不能正常解析成html网页

原springmvc默认忽视后缀的映射规则

好了,下面针对三种不同的url匹配规则说明一下不同点。
注意,同时说明一下,在spring-mvc.xml中,
每一种情况下,默认:
在这里插入图片描述

path-matching suffix-pattern 不设置

default-servlet-handler 不设置

为了这个测试,特意写了一个测试用action,如下
在这里插入图片描述

下面开始

url-pattern="*.do"

先从最正常的情况说起来,设置为针对后缀为do的路径进行拦截。
如下:
在这里插入图片描述
分别访问mvc中的action,网站index.jsp首页,静态资源-404图片

### action输出json

在这里插入图片描述

### action带jsp模板
在这里插入图片描述

index.jsp

在这里插入图片描述

静态资源

在这里插入图片描述

url-pattern = “/*”

在这里插入图片描述

下面开始测试访问:

### action输出json
分别测试无后缀以及任意后缀,有:
在这里插入图片描述

在这里插入图片描述

可匹配。

### action带jsp模板

在这里插入图片描述
无法访问,同时后台报错:
在这里插入图片描述

找不到模板。。。

index.jsp

在这里插入图片描述

同时后台报错:
在这里插入图片描述
无法匹配到index.jsp

静态资源

在这里插入图片描述

同时:
在这里插入图片描述

/*的结论

url-pattern="/*"会托管一切请求,只有匹配到控制器中的action才返回返回结果,否则一切都是404,当然,如果action里面也要用到jsp等模板,那么也是会报404的。

url-pattern=/ 的场景

在这里插入图片描述

测试:

### action输出json
分别测试无后缀以及任意后缀,有:
在这里插入图片描述

在这里插入图片描述

可匹配。

### action带jsp模板
在这里插入图片描述

index.jsp

在这里插入图片描述

静态资源

在这里插入图片描述

同时:
在这里插入图片描述

url-pattern=/ 小结

可以看到,这种模式下面,不会托管所有路径,起码,jsp不会接过来托管,能够正常解释。
不过图片资源还是访问不到,正常,图片资源需要启用
在这里插入图片描述

默认的servlet处理器

下面开启默认的servlet处理器看看结果:

ps:为什么*.do里面不启用默认servlet处理静态资源也可以访问?因为那种情况下只拦截后缀为.do的路径,不拦截处理图片。

开启default-servlet-handler后额外注意问题。

开启以后,
在这里插入图片描述

注意,url-pattern="/*"情况下面对jsp的处理跟静态资源是一样的:

1/
在这里插入图片描述

然后:
在这里插入图片描述
在这里插入图片描述

结论

所以,最后的结论是,要开启无后缀访问,最佳的方法是:
在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/cdnight/article/details/87871451