一、全注解开发
创建web工程配置注解类
@Configuration
public class WebInit extends AbstractAnnotationConfigDispatcherServletInitializer {
// spring的配置类
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{SpringConfig.class};
}
// springmvc的配置类
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{WebConfig.class};
}
// 设置DispatcherServlet访问路径
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
}
创建Spring配置注解类
@Configuration
public class SpringConfig {
}
创建SpringMVC配置注解类
/**
* springmvc 组件 :
*
* 1. 扫描器
* 2. 拦截器
* 3. 异常处理器
* 4. 默认servlet处理器
* 5. 文件上传
* 6. 开启mvc注解
* 7. mvc:view-controller
*/
@Configuration
// 开启扫描器
@ComponentScan(basePackages = "com.xin")
// 开启mvc
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
// 开启默认servlet处理器
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
// 开启mvc:view-controller
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
}
// 开启异常处理器
@Override
public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {
SimpleMappingExceptionResolver exceptionResolver = new SimpleMappingExceptionResolver();
Properties properties = new Properties();
properties.setProperty("java.lang.NullPointerException","error");
exceptionResolver.setExceptionMappings(properties);
resolvers.add(exceptionResolver);
}
// 开启拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
WebMvcConfigurer.super.addInterceptors(registry);
}
// 文件上传
@Bean
public MultipartResolver getMultipartResolver() {
return new CommonsMultipartResolver();
}
}
二、SpringMVC 流程图