介绍
SSM是Spring + Spring MVC + MyBatis,把 Spring MVC 配置的xml换成配置类。
SSM整合是后面大部分项目的标配
MyBatis整合
web.xml 对应的配置类
web配置类,用于取代 web.xml。在继承的父类中已经帮我们创建了 DispatcherServlet 并初始化,只需要在重写的 getServletMappings方法 中指定映射的地址即可,相当于 web.xml 中的<url-paffern>/</url-paffern>
public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
/**
* 加载主配置类
* 父容器
* @return
*/
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[0];
}
/**
* 加载 mvc 的配置类
* 子容器
* @return
*/
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{配置类.class};
}
/**
* 给 DispatcherServlet 配置 url-pattern
* 捕获的路径
* @return
*/
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
}
AbstractAnnotationConfigDispatcherServletInitializer
抽象类
dispatcher-servlet.xml 对应的配置类
WebMvcConfigurer
接口
@Configuration
// 启动mvc注解驱动
@EnableWebMvc
// 实现 WebMvcConfigurer接口 用于覆盖默认的配置
public class MvcConfig implements WebMvcConfigurer {
/** 配置类同样支持依赖注入(配置类同样也是受容器管理的)
@Autowired
private LoginInterceptor loginInterceptor;
**/
/**
* 静态资源处理方式一:使用容器的默认Servlet来处理
* 注意:重写 WebMvcConfigurer接口 方法时不要使用 @Bean 注解来装配
*/
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
// enable():启用容器默认servlet处理静态资源
configurer.enable();
}
/**
* 静态资源处理方式二:由SpringMVC处理静态资源
* 注意:重写 WebMvcConfigurer接口 方法时不要使用 @Bean 注解来装配
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/映射路径/**").addResourceLocations("/被映射的路径/");
}
/**
* 装配Bean验证器1
*/
@Override
public Validator getValidator() {
LocalValidatorFactoryBean factoryBean = new LocalValidatorFactoryBean();
// 使用Hibernate框架提供的Bean验证器
factoryBean.setProviderClass(HibernateValidator.class);
// 指定资源文件
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:message");
messageSource.setDefaultEncoding("UTF-8");
// 装配给 factoryBean
factoryBean.setValidationMessageSource(messageSource);
return factoryBean;
}
/**
* 如果使用Servlet文件上传就不需要配置,如果使用第三方的就需要配置 commons-upload上传解析器
*/
@Bean
public CommonsMultipartResolver multipartResolver(){
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
// 设置文件上传大小限制(可以不设置)
// resolver.setMaxUploadSize(1024);
// 设置编码
resolver.setDefaultEncoding("UTF-8");
return resolver;
}
/**
* 装配拦截器
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor())
// 拦截的请求
.addPathPatterns("/*.html")
// 排除的请求
.excludePathPatterns("/*/*.js","/login");
}
/**
* 跨域配置
* @param registry
*/
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("*")
.allowedHeaders("*")
.exposedHeaders("*")
// 跨域时是否允许传递 cookie,默认是不允许的
.allowCredentials(true);
}
/**
* 配置内部资源视图解析器(内部资源视图的转发)
* 可选项
*/
@Bean
public InternalResourceViewResolver viewResolver(){
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/jsp/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}