当前位置:   article > 正文

JAVA-WEB资源配置

JAVA-WEB资源配置

用JAVA进行编写WEB项目时,我们一般需要对WEB进行统一配置,例如制定拦截路径、页面解析器、跨域配置、fastjson报文解析、文件上传大小配置等。

  1. @Getter
  2. @Setter
  3. @Configuration
  4. public class WebConfiguration extends WebMvcConfigurationSupport {
  5. private static final String MATCH_ALL = "/**";
  6. @Override
  7. public void addInterceptors(InterceptorRegistry registry) {
  8. registry.addInterceptor(new RequestIdInterceptor()).addPathPatterns(MATCH_ALL);
  9. registry.addInterceptor(new MockRequestEntityInterceptor()).addPathPatterns(MATCH_ALL);
  10. }
  11. @Override
  12. public void addViewControllers(ViewControllerRegistry registry) {
  13. registry.addViewController("/").setViewName("index");
  14. registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
  15. super.addViewControllers(registry);
  16. }
  17. /*
  18. * Spring mvc 的页面解析器配置
  19. */
  20. @Bean
  21. public InternalResourceViewResolver viewResolver(){
  22. InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
  23. viewResolver.setPrefix("/");
  24. viewResolver.setSuffix(".html");
  25. return viewResolver;
  26. }
  27. /**
  28. * 跨域配置
  29. */
  30. public CorsFilter corsFilter() {
  31. UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
  32. source.registerCorsConfiguration("/**", corsConfig());
  33. return new CorsFilter(source);
  34. }
  35. /*
  36. * Spring mvc 的静态资源路径配置
  37. */
  38. @Override
  39. public void addResourceHandlers(ResourceHandlerRegistry registry) {
  40. registry.addResourceHandler("/resource/**")
  41. .addResourceLocations("classpath:/static/resource/");
  42. registry.addResourceHandler("/*.html")
  43. .addResourceLocations("classpath:/static/");
  44. }
  45. /*
  46. * 项目序列化使用fastjson,因序列化解析器执行是列表由前至后的优先级,故把fastjson加入到序列0的位置
  47. */
  48. @Override
  49. public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
  50. converters.set(0,fastJsonHttpMessageConverter());
  51. }
  52. /*
  53. * 生成FastJsonHttpMessageConverter返回值解析器
  54. */
  55. public FastJsonHttpMessageConverter fastJsonHttpMessageConverter() {
  56. FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
  57. converter.setFastJsonConfig(fastJsonConfig());
  58. converter.setSupportedMediaTypes(mediaTypes());
  59. return converter;
  60. }
  61. /*
  62. * 生成FastJsonHttpMessageConverter返回值解析器 - 解析详细配置
  63. */
  64. public FastJsonConfig fastJsonConfig() {
  65. FastJsonConfig fastJsonConfig = new FastJsonConfig();
  66. fastJsonConfig.setSerializerFeatures(
  67. SerializerFeature.PrettyFormat,
  68. SerializerFeature.WriteEnumUsingToString
  69. );
  70. // 日期时间格式及字符集配置
  71. fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");
  72. fastJsonConfig.setCharset(Charset.forName("utf-8"));
  73. // 防止Long类型转json丢失精度的问题
  74. SerializeConfig serializeConfig = SerializeConfig.globalInstance;
  75. serializeConfig.put(Long.class, ToStringSerializer.instance);
  76. serializeConfig.put(Long.TYPE, ToStringSerializer.instance);
  77. fastJsonConfig.setSerializeConfig(serializeConfig);
  78. return fastJsonConfig;
  79. }
  80. /*
  81. * 生成FastJsonHttpMessageConverter返回值解析器 - 解析格式组件 支持的mediaType的类型
  82. * 1.application/json;charset=UTF-8
  83. * 2.application/json
  84. */
  85. public List<MediaType> mediaTypes() {
  86. List<MediaType> mediaTypeList = new ArrayList<>();
  87. mediaTypeList.add(MediaType.APPLICATION_JSON_UTF8);
  88. mediaTypeList.add(MediaType.APPLICATION_JSON);
  89. return mediaTypeList;
  90. }
  91. @Bean
  92. public CommonsMultipartResolver multipartResolver() {
  93. CommonsMultipartResolver resolver = new CommonsMultipartResolver();
  94. resolver.setDefaultEncoding("UTF-8");
  95. //resolveLazily属性启用是为了推迟文件解析,以在在UploadAction中捕获文件大小异常
  96. resolver.setResolveLazily(true);
  97. resolver.setMaxInMemorySize(40960);
  98. //上传文件大小 5M 5*1024*1024
  99. resolver.setMaxUploadSize(5 * 1024 * 1024);
  100. return resolver;
  101. }
  102. private CorsConfiguration corsConfig() {
  103. CorsConfiguration corsConfiguration = new CorsConfiguration();
  104. corsConfiguration.addAllowedOrigin("*");
  105. corsConfiguration.addAllowedHeader("*");
  106. corsConfiguration.addAllowedMethod("*");
  107. corsConfiguration.setAllowCredentials(true);
  108. corsConfiguration.setMaxAge(3600L);
  109. return corsConfiguration;
  110. }
  111. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/990022
推荐阅读
相关标签
  

闽ICP备14008679号