# spring 中 / 和 /* 和 /** 的区别
# / 和 /* 区别
1 | / 拦截所有请求 包括静态资源和动态请求 但是不拦截jsp |
# /* 和 /** 区别
1 | /** 的意思是所有文件夹及里面的子文件夹 |
# 注意点案例
理解下面的案例有助于理解如何使用
场景:当我在客户端调用 URL : /user/list 然后返回 user.jsp 视图,
- 当配置的是
/:DispathcherServlet拿到这个请求然后返回对应的controller,然后依据Dispather Type为Forward类型转发到user.jsp视图,即就是请求user.jsp视图 (/user/user.jsp),此时Dispather没有拦截/user/user.jsp, 因为此时你配置的是默认的/,就顺利的交给ModleAndView去处理显示了。 - 当配置的是
/*:DispathcherServlet拿到这个请求然后返回对应的controller,然后通过Dispather Type通过Forward转发到user.jsp视图,即就是请求user.jsp视图 (/user/user.jsp),此时Dispather已经拦截/user/user.jsp,Dispatcher会把他当作Controller去匹配,没有匹配到就会报404错误。
在 springboot 中建了一个过滤器,测试
当请求为 /user/login 的时候可以被拦截,当为 /page/login.html 页面的时候不拦截
当请求为 /user/login 的时候可以被拦截,当为 /page/login.html 页面的时候也会被拦截
-
/不会拦截页面,只会拦截路径。 -
/*会路径和页面
结论:在配置视图的时候尽量用 / 这种方式。