WebAppConfiguration.java 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package com.uas.kanban;
  2. import java.nio.charset.Charset;
  3. import java.util.Arrays;
  4. import java.util.List;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.boot.web.servlet.FilterRegistrationBean;
  7. import org.springframework.boot.web.servlet.ServletRegistrationBean;
  8. import org.springframework.context.annotation.Bean;
  9. import org.springframework.context.annotation.ComponentScan;
  10. import org.springframework.context.annotation.Configuration;
  11. import org.springframework.http.MediaType;
  12. import org.springframework.http.converter.HttpMessageConverter;
  13. import org.springframework.http.converter.StringHttpMessageConverter;
  14. import org.springframework.web.servlet.config.annotation.CorsRegistry;
  15. import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
  16. import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
  17. import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
  18. import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
  19. import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
  20. import org.springframework.web.servlet.view.InternalResourceViewResolver;
  21. import com.alibaba.druid.support.http.StatViewServlet;
  22. import com.alibaba.druid.support.http.WebStatFilter;
  23. import com.alibaba.fastjson.serializer.SerializerFeature;
  24. import com.alibaba.fastjson.support.config.FastJsonConfig;
  25. import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
  26. import com.uas.kanban.filter.SecurityInterceptor;
  27. /**
  28. * Web相关配置
  29. *
  30. * @author sunyj
  31. * @since 2017年2月17日 下午5:45:38
  32. */
  33. @Configuration
  34. @ComponentScan(basePackages = "com.uas.kanban.controller")
  35. public class WebAppConfiguration extends WebMvcConfigurerAdapter {
  36. @Override
  37. public void addResourceHandlers(ResourceHandlerRegistry registry) {
  38. // Spring boot默认资源路径在src/main/resources下,而非/src/main/webapp
  39. // 使用/src/main/webapp下资源均需在此添加
  40. registry.addResourceHandler("/static/**").addResourceLocations("/resources/");
  41. registry.addResourceHandler("/WEB-INF/**").addResourceLocations("/WEB-INF/");
  42. registry.addResourceHandler("/app/**").addResourceLocations("/app/");
  43. super.addResourceHandlers(registry);
  44. }
  45. @Override
  46. public void configureViewResolvers(ViewResolverRegistry registry) {
  47. InternalResourceViewResolver viewResolver = new InternalResourceViewResolver("/WEB-INF/views/", ".html");
  48. viewResolver.setContentType("text/html;charset=UTF-8");
  49. registry.viewResolver(viewResolver);
  50. super.configureViewResolvers(registry);
  51. }
  52. @Override
  53. public void addViewControllers(ViewControllerRegistry registry) {
  54. registry.addViewController("/").setViewName("desktop");
  55. registry.addViewController("/index").setViewName("desktop");
  56. registry.addViewController("/desktop").setViewName("desktop");
  57. registry.addViewController("/board").setViewName("board");
  58. registry.addViewController("/boardshow").setViewName("boardshow");
  59. registry.addViewController("/login").setViewName("login");
  60. registry.addViewController("/console").setViewName("console");
  61. registry.addViewController("/fileUpload").setViewName("fileUpload");
  62. super.addViewControllers(registry);
  63. }
  64. @Override
  65. public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
  66. FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
  67. fastJsonHttpMessageConverter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON_UTF8));
  68. FastJsonConfig fastJsonConfig = new FastJsonConfig();
  69. fastJsonConfig.setSerializerFeatures(SerializerFeature.DisableCircularReferenceDetect);
  70. fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
  71. converters.add(fastJsonHttpMessageConverter);
  72. StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter(
  73. Charset.forName("UTF-8"));
  74. stringHttpMessageConverter.setSupportedMediaTypes(Arrays.asList(MediaType.TEXT_HTML));
  75. converters.add(stringHttpMessageConverter);
  76. super.configureMessageConverters(converters);
  77. }
  78. /*
  79. * 允许跨域访问
  80. */
  81. @Override
  82. public void addCorsMappings(CorsRegistry registry) {
  83. registry.addMapping("/**").allowedOrigins("*");
  84. }
  85. @Bean
  86. public ServletRegistrationBean servletRegistrationBean() {
  87. return new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
  88. }
  89. @Bean
  90. public FilterRegistrationBean filterRegistrationBean() {
  91. FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
  92. filterRegistrationBean.setFilter(new WebStatFilter());
  93. filterRegistrationBean.addUrlPatterns("/*");
  94. filterRegistrationBean.addInitParameter("exclusions",
  95. "*.js,*.gif,*.jpg,*.png,*.bmp,*.css,*.ico,*.html,/druid/*");
  96. return filterRegistrationBean;
  97. }
  98. @Autowired
  99. private SecurityInterceptor securityInterceptor;
  100. @Override
  101. public void addInterceptors(InterceptorRegistry registry) {
  102. registry.addInterceptor(securityInterceptor).addPathPatterns("/*").excludePathPatterns("/WEB-INF/*","/login","/error");
  103. }
  104. }