SpringMVC前端控制器中拦截请求时的'/'和'/*'的区别和原理

在SpringMVC中我们在web.xml中配置前端控制器用来分发请求。如下:

  
	
		springDispatcherServlet
		org.springframework.web.servlet.DispatcherServlet
		
			contextConfigLocation
			classpath:springmvc.xml
		
		1
	

	
		springDispatcherServlet
		/
	

这里讲解一下为啥将拦截路径配置这个/而不是/*

  1. /:拦截所有请求,不拦截jsp页面,即*.jsp请求
  2. /:拦截所有请求,拦截jsp页面,即.jsp请求

处理*.jsp是tomcat做的事;所有项目的小web.xml都是继承于大web.xml
DefaultServlet是Tomcat中处理静态资源的,除jsp和servlet外的所有都是静态资源。
Index.html:静态资源,tomcat就会在服务器下找到这个资源并返回;我们前端控制器的/禁用了tomcat服务器中的DefaultServlet
1)服务器的文件中web.xml中有一个DefaultServlet是url-pattern=/
2)我们的配置中前端控制器url-pattern=/,静态资源会来到DispatchServlet(前端控制器),看哪个方法的RequestMapping是这个index.html
3)为啥jsp又能访问,因为我们没有覆盖服务器中的JspServlet的配置
4)/*直接就是拦截了所有请求;我们写/;也是为了迎合后来的Rest风格的URL地址。Rest风格的url我们后续博客会讲。

你可能感兴趣的:(SpringMVC)