1. 程式人生 > >SpringMVC之配置(註解版)

SpringMVC之配置(註解版)

在這裡插入圖片描述

//web容器啟動的時候建立物件,呼叫方法來初始化容器以及前端控制器
public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

	//獲取根容器的配置類(Spring的配置檔案) 父容器
	@Override
	protected Class<?>[] getRootConfigClasses() {
		return new Class<?>[]{RootConfig.class};
	}

	//獲取web容器的配置類(SpringMVC配置檔案) 子容器
	@Override
	protected Class<?>[] getServletConfigClasses() {
		return new Class<?>[]{AppConfig.class};
	}

	//獲取DispatcherServlet的對映資訊
	//  /:攔截所有請求(包括靜態資源(xx.js,xx.png)),但是不包括*.jsp
	//  /*:攔截所有請求,連*.jsp頁面都攔截,jsp頁面是tomcat的jsp引擎解析的
	@Override
	protected String[] getServletMappings() {
		return new String[]{"/"};
	}
}
//Spring的容器不掃描controller,父容器
@ComponentScan(value="com.atguigu",excludeFilters={
		@Filter(type=FilterType.ANNOTATION,classes={Controller.class})
})
public class RootConfig {

}
//SpringMVC只掃描Controller,子容器
//useDefaultFilters=false,禁用預設的過濾規則
@ComponentScan(value="com.atguigu",includeFilters={
		@Filter(type=FilterType.ANNOTATION,classes={Controller.class})
},useDefaultFilters=false)
@EnableWebMvc	// 開啟自定義MVC配置
public class AppConfig implements WebMvcConfigurer {

	//檢視解析器
	@Override
	public void configureViewResolvers(ViewResolverRegistry registry) {
		//預設所有的頁面都從 /WEB-INF/ xxx .jsp
		//registry.jsp();
		registry.jsp("/WEB-INF/views/", ".jsp");
	}
	
	//靜態資源訪問
	@Override
	public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
		configurer.enable();
	}
	
	//攔截器
	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		//super.addInterceptors(registry);
		registry.addInterceptor(new MyFirstInterceptor()).addPathPatterns("/**");
	}
}

更多配置請參考官方文件:《MVC Config》