mvcConfig.class
/**
* <context:component-scan />
* <mvc:annotation-driven />
* <mvc:default-servlet-handler />
* <mvc:resources mapping="" location="" />
* 视图解析器
* 文件上传解析器
* 拦截器
*/
@Configuration
@ComponentScan(basePackages = {"com.etoak.**.controller", "com.etoak.interceptor"})
@EnableWebMvc // <mvc:annotation-driven />
public class MvcConfig implements WebMvcConfigurer {
@Autowired
TestInterceptor testInterceptor;
/** <mvc:default-servlet-handler /> */
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
/**
* <mvc:resources mapping="" location="" />
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/pics/**") // mapping属性
.addResourceLocations("file:d:/upload/et2203/"); // location属性
}
/** 视图解析器 */
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/pages/");
resolver.setSuffix(".jsp");
return resolver;
}
/** 文件上传时使用的解析器 */
@Bean
public MultipartResolver multipartResolver() {
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
// 1MB
resolver.setMaxUploadSize(1048576);
return resolver;
}
/**
* 拦截器
* @param registry
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(this.testInterceptor)
.addPathPatterns("/**")
.excludePathPatterns("/login/**")
.excludePathPatterns("/toLogin/**", "/pics/**");
}
}
rootConfig.class
/**
* <context:component-scan base-package="com.etoak.**.service" />
* 导入配置文件
* 配置数据源
* 配置SqlSessionFactoryBean
* 配置MapperScannerConfigurer => @MapperScan(basePackages="com.etoak.**.mapper")
* 事务管理器
* 注解事务 => @EnableTransactionManagement
* <aop:aspectj-autoproxy />
*/
@Configuration
@ComponentScan(basePackages = "com.etoak.**.service")
@PropertySource("classpath:db.properties")
@MapperScan(basePackages = "com.etoak.**.mapper")
@EnableTransactionManagement // 注解事务
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class RootConfig {
@Value("${m.driver}")
private String driverClassName;
@Value("${m.url}")
private String url;
@Value("${m.user}")
private String username;
@Value("${m.pwd}")
private String password;
/** 数据源 */
@Bean
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(this.driverClassName);
dataSource.setUrl(this.url);
dataSource.setUsername(this.username);
dataSource.setPassword(this.password);
// 初始化连接数
dataSource.setInitialSize(20);
// 最大连接数
dataSource.setMaxActive(60);
return dataSource;
}
@Bean
public SqlSessionFactoryBean sqlSessionFactory(@Qualifier("dataSource") DataSource dataSource) throws IOException {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
// 数据源、Bean别名、mapper映射文件、分页插件
factoryBean.setDataSource(dataSource);
factoryBean.setTypeAliasesPackage("com.etoak.**.entity");
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource[] resources = resolver.getResources("classpath:mapper/**/*.xml");
factoryBean.setMapperLocations(resources);
PageInterceptor interceptor = new PageInterceptor();
Properties properties = new Properties();
properties.setProperty("helperDialect", "mysql");
interceptor.setProperties(properties);
factoryBean.setPlugins(interceptor);
return factoryBean;
}
@Bean
public DataSourceTransactionManager transactionManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}
MyInitializer = web.xml
/**
* 相当于 web.xml
*/
public class MyInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
/**
* 配置spring-root 容器
*/
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] {RootConfig.class};
}
/**
* 配置spring-mvc容器
*/
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] {MvcConfig.class};
}
/**
配置DispatcherServlet拦截请求路径
*/
@Override
protected String[] getServletMappings() {
return new String[] {"/"};
}
/**
* 配置过滤器
* @return
*/
@Override
protected Filter[] getServletFilters() {
CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter();
encodingFilter.setEncoding("utf-8");
return new Filter[] {encodingFilter};
}
}
拦截器 Interceptor
@Component
public class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception {
System.out.println("拦截器拦截了 ...");
//放行
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}