WebConfig.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. package net.mingsoft.config;
  2. import java.io.File;
  3. import java.util.regex.Matcher;
  4. import java.util.regex.Pattern;
  5. import org.springframework.aop.Advisor;
  6. import net.mingsoft.basic.filter.XSSEscapeFilter;
  7. import org.springframework.aop.support.DefaultPointcutAdvisor;
  8. import org.springframework.aop.support.JdkRegexpMethodPointcut;
  9. import org.springframework.beans.factory.annotation.Value;
  10. import org.springframework.boot.web.servlet.FilterRegistrationBean;
  11. import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
  12. import org.springframework.boot.web.servlet.ServletRegistrationBean;
  13. import org.springframework.context.annotation.Bean;
  14. import org.springframework.context.annotation.Configuration;
  15. import org.springframework.core.Ordered;
  16. import org.springframework.web.context.request.RequestContextListener;
  17. import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
  18. import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
  19. import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
  20. import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
  21. import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
  22. import com.alibaba.druid.pool.DruidDataSource;
  23. import com.alibaba.druid.support.http.StatViewServlet;
  24. import com.alibaba.druid.support.http.WebStatFilter;
  25. import com.alibaba.druid.support.spring.stat.BeanTypeAutoProxyCreator;
  26. import com.alibaba.druid.support.spring.stat.DruidStatInterceptor;
  27. import net.mingsoft.basic.interceptor.ActionInterceptor;
  28. import net.mingsoft.basic.util.BasicUtil;
  29. @Configuration
  30. public class WebConfig implements WebMvcConfigurer {
  31. /**
  32. * 上传路径
  33. */
  34. @Value("${ms.upload.path}")
  35. private String uploadFloderPath;
  36. /**
  37. * 上传路径映射
  38. */
  39. @Value("${ms.upload.mapping}")
  40. private String uploadMapping;
  41. @Bean
  42. public ActionInterceptor actionInterceptor() {
  43. return new ActionInterceptor();
  44. }
  45. /**
  46. * 增加对rest api鉴权的spring mvc拦截器
  47. */
  48. @Override
  49. public void addInterceptors(InterceptorRegistry registry) {
  50. // 排除配置
  51. registry.addInterceptor(actionInterceptor()).excludePathPatterns("/static/**", "/app/**", "/webjars/**",
  52. "/*.html", "/*.htm");
  53. }
  54. @Override
  55. public void addResourceHandlers(ResourceHandlerRegistry registry) {
  56. registry.addResourceHandler("/upload/**").addResourceLocations("/upload/","file:upload/");
  57. registry.addResourceHandler("/templets/**").addResourceLocations("/templets/","file:templets/");
  58. registry.addResourceHandler("/html/**").addResourceLocations("/html/","file:html/");
  59. //三种映射方式 webapp下、当前目录下、jar内
  60. registry.addResourceHandler("/app/**").addResourceLocations("/app/","file:app/", "classpath:/app/");
  61. registry.addResourceHandler("/static/**","/**").addResourceLocations("/static/","file:static/","classpath:/static/","classpath:/META-INF/resources/");
  62. registry.addResourceHandler("/api/**").addResourceLocations("/api/","file:api/", "classpath:/api/");
  63. if(new File(uploadFloderPath).isAbsolute()){
  64. //如果指定了绝对路径,上传的文件都映射到uploadMapping下
  65. registry.addResourceHandler(uploadMapping).addResourceLocations("file:"+uploadFloderPath+ File.separator
  66. //映射其他路径文件
  67. //,file:F://images
  68. );
  69. }
  70. }
  71. /**
  72. * druid数据库连接池监控
  73. */
  74. @Bean
  75. public BeanTypeAutoProxyCreator beanTypeAutoProxyCreator() {
  76. BeanTypeAutoProxyCreator beanTypeAutoProxyCreator = new BeanTypeAutoProxyCreator();
  77. beanTypeAutoProxyCreator.setTargetBeanType(DruidDataSource.class);
  78. beanTypeAutoProxyCreator.setInterceptorNames("druidStatInterceptor");
  79. return beanTypeAutoProxyCreator;
  80. }
  81. // XSS过滤器
  82. // @Bean
  83. // public FilterRegistrationBean xssFilterRegistration() {
  84. // XSSEscapeFilter xssFilter = new XSSEscapeFilter();
  85. // FilterRegistrationBean registration = new FilterRegistrationBean(xssFilter);
  86. // xssFilter.excludes.add(".*file/upload.do");
  87. // xssFilter.excludes.add(".*/jsp/editor.do");
  88. // xssFilter.excludes.add(".*/?(jpg|js|css|gif|png|ico)$");
  89. // xssFilter.excludes.add("/");
  90. // registration.addUrlPatterns("/*");
  91. // return registration;
  92. // }
  93. /**
  94. * RequestContextListener注册
  95. */
  96. @Bean
  97. public ServletListenerRegistrationBean<RequestContextListener> requestContextListenerRegistration() {
  98. return new ServletListenerRegistrationBean<>(new RequestContextListener());
  99. }
  100. /**
  101. * 设置默认首页
  102. */
  103. @Override
  104. public void addViewControllers(ViewControllerRegistry registry) {
  105. registry.addViewController("/").setViewName("forward:/index");
  106. registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
  107. WebMvcConfigurer.super.addViewControllers(registry);
  108. }
  109. }