/与/*的区别
/:
servlet的url-pattern设置为/时, 它仅替换servlet容器的默认内置servlet,用于处理所有与其他注册的servlet不匹配的请求。直白点说就是,所有静态资源(js,css,image,html等)的访问都将交给该servlet处理,而jsp页面则交给servlet容器内置的JSP servlet处理。
/*:
servlet的url-pattern设置为/时,它会覆盖其他所有的servlet,包括servlet容器提供的所有servlet,如缺省servlet和JSP servlet。 无论你发出什么请求,都会在该servlet拦截处理。通常我们不会这么做。如果你只是想使用/,那么你可以在Filter中使用,它处理完后会将url交给servlet处理。
实例说明
直接解释/与/*的区别,可能不是那么直观,我们用实验来说话吧。
有一个SpringMVC项目中,已开启静态资源访问,所有编码均为UTF-8:
有一个Controller,处理/hello请求,返回/index.jsp页面
有一个hello.html文件
有一个hello.jsp文件
有一个index.html文件
有一个index.jsp文件
DispatcherServlet的url-pattern设置为/时:
我们可以看到结果
/hello.html没有访问到自己本该访问到的页面说明静态