1.<context:component-scan />
是对包进行扫描,解决@Controller标识的类的bean的注入和使用.
2 <mvc:annotation-driven />
添加注解驱动,使注解标注的类生效。用来匹配请求的Controller
3.<mvc:default-servlet-handler />
开通访问静态资源 ,会在Spring MVC上下文中定义一个org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,对进入DispatcherServlet(web.xml转发器)的URL进行筛查,如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理,如果不是静态资源的请求,才由dispatcherServlet继续处理.
详细讲解:
1.当不需要对静态资源实现restful风格访问时,web.xml配置为:
springmvc.xml配置为1<context:component-scan base-package=“com” /> 的时候,就可以处理来自.do的url请求。
2. 当需要对静态资源实现restful风格访问时,(2.1)那么web.xml就要解析所有的请求,而不是之前1那样只对.do解析,web.xml配置为:
( 2.2)要对静态资源访问,就需要配置<mvc:default-servlet-handler /> ,但配置了<context:component-scan />和<mvc:default-servlet-handler /> 没有<mvc:annotation-driven />,那所有的请求.do或者静态资源的请求都会被<mvc:default-servlet-handler /> 的默认default servlet解析.此时,静态资源没有问题,但.do没办法转发到<context:component-scan />的那么注解扫描得到controller上,当然就报错404.当再加上<mvc:annotation-driven />的时候,所有请求经<mvc:annotation-driven />处理一遍,相应的do请求被Controller处理,而静态资源因为没有相应的Controller就会被default servlet处理.
mvc:default-servlet-handler,mvc:annotation-driven与context:component-scan
最新推荐文章于 2021-05-28 20:52:51 发布