package com.uas.kanban; import java.nio.charset.Charset; import java.util.Arrays; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.ViewResolverRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.view.InternalResourceViewResolver; import com.alibaba.druid.support.http.StatViewServlet; import com.alibaba.druid.support.http.WebStatFilter; import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.support.config.FastJsonConfig; import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; import com.uas.kanban.filter.SecurityInterceptor; /** * Web相关配置 * * @author sunyj * @since 2017年2月17日 下午5:45:38 */ @Configuration @ComponentScan(basePackages = "com.uas.kanban.controller") public class WebAppConfiguration extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { // Spring boot默认资源路径在src/main/resources下,而非/src/main/webapp // 使用/src/main/webapp下资源均需在此添加 registry.addResourceHandler("/static/**").addResourceLocations("/resources/"); registry.addResourceHandler("/WEB-INF/**").addResourceLocations("/WEB-INF/"); registry.addResourceHandler("/app/**").addResourceLocations("/app/"); super.addResourceHandlers(registry); } @Override public void configureViewResolvers(ViewResolverRegistry registry) { InternalResourceViewResolver viewResolver = new InternalResourceViewResolver("/WEB-INF/views/", ".html"); viewResolver.setContentType("text/html;charset=UTF-8"); registry.viewResolver(viewResolver); super.configureViewResolvers(registry); } @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("desktop"); registry.addViewController("/index").setViewName("desktop"); registry.addViewController("/desktop").setViewName("desktop"); registry.addViewController("/board").setViewName("board"); registry.addViewController("/boardshow").setViewName("boardshow"); registry.addViewController("/login").setViewName("login"); registry.addViewController("/console").setViewName("console"); registry.addViewController("/fileUpload").setViewName("fileUpload"); super.addViewControllers(registry); } @Override public void configureMessageConverters(List> converters) { FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter(); fastJsonHttpMessageConverter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON_UTF8)); FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures(SerializerFeature.DisableCircularReferenceDetect); fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig); converters.add(fastJsonHttpMessageConverter); StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter( Charset.forName("UTF-8")); stringHttpMessageConverter.setSupportedMediaTypes(Arrays.asList(MediaType.TEXT_HTML)); converters.add(stringHttpMessageConverter); super.configureMessageConverters(converters); } /* * 允许跨域访问 */ @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**").allowedOrigins("*"); } @Bean public ServletRegistrationBean servletRegistrationBean() { return new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); } @Bean public FilterRegistrationBean filterRegistrationBean() { FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); filterRegistrationBean.setFilter(new WebStatFilter()); filterRegistrationBean.addUrlPatterns("/*"); filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.bmp,*.css,*.ico,*.html,/druid/*"); return filterRegistrationBean; } @Autowired private SecurityInterceptor securityInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(securityInterceptor).addPathPatterns("/*").excludePathPatterns("/WEB-INF/*","/login","/error"); } }