Java tutorial
/* * Copyright 2016-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.wiiyaya.consumer.web.initializer.config; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonGenerator.Feature; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializerProvider; import com.wiiyaya.consumer.web.login.constant.ConfigConstant; import com.wiiyaya.framework.common.utils.StringUtils; import com.wiiyaya.framework.consumer.support.easyui.EasyuiSortHandlerMethodArgumentResolver; import org.hibernate.validator.HibernateValidator; import org.springframework.context.MessageSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.support.ResourceBundleMessageSource; import org.springframework.data.domain.PageRequest; import org.springframework.data.web.PageableHandlerMethodArgumentResolver; import org.springframework.data.web.SortHandlerMethodArgumentResolver; import org.springframework.http.MediaType; import org.springframework.http.converter.ByteArrayHttpMessageConverter; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.ResourceHttpMessageConverter; import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter; import org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter; import org.springframework.http.converter.xml.SourceHttpMessageConverter; import org.springframework.validation.Validator; import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.servlet.ViewResolver; import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.view.InternalResourceViewResolver; import javax.xml.transform.Source; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.TimeZone; /** * * <p>web?</p> * * <p>??</p> * * <p></p> * * @author wiiyaya * */ @Configuration @ComponentScan(basePackages = { "com.wiiyaya.consumer.**.controller" }) @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter { /** * jsp??? */ @Bean public ViewResolver jspViewResolver() { InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); viewResolver.setOrder(100); viewResolver.setPrefix("/WEB-INF/views/"); viewResolver.setSuffix(".jsp"); return viewResolver; } /** * Controller?? */ @Override public Validator getValidator() { LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean(); validator.setProviderClass(HibernateValidator.class); validator.setValidationMessageSource(messageSource()); return validator; } /** * ?? */ @Bean public MessageSource messageSource() { ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();//?classpath messageSource.setBasenames("message", "main_cw_message", "main_p_message", "other_message");//??????? messageSource.setDefaultEncoding(ConfigConstant.SYSTEM_ENCODING); messageSource.setUseCodeAsDefaultMessage(false); return messageSource; } /** * springdispatch??default */ @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); } /** * url ?? */ @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) { argumentResolvers.add(sortResolver()); argumentResolvers.add(pageableResolver()); } @Bean public PageableHandlerMethodArgumentResolver pageableResolver() { PageableHandlerMethodArgumentResolver pageableResolver = new PageableHandlerMethodArgumentResolver( sortResolver()); pageableResolver.setPageParameterName("page"); pageableResolver.setSizeParameterName("rows"); pageableResolver.setFallbackPageable(new PageRequest(0, 10)); pageableResolver.setOneIndexedParameters(true); return pageableResolver; } @Bean public SortHandlerMethodArgumentResolver sortResolver() { return new EasyuiSortHandlerMethodArgumentResolver(); } /** * ??? */ @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { StringHttpMessageConverter stringConverter = new StringHttpMessageConverter(ConfigConstant.SYSTEM_CHARSET); stringConverter.setWriteAcceptCharset(false); converters.add(new ByteArrayHttpMessageConverter()); converters.add(stringConverter); converters.add(new ResourceHttpMessageConverter()); converters.add(new SourceHttpMessageConverter<Source>()); converters.add(new AllEncompassingFormHttpMessageConverter()); converters.add(new Jaxb2RootElementHttpMessageConverter()); MappingJackson2HttpMessageConverter jacksonConverter = new MappingJackson2HttpMessageConverter(); ObjectMapper om = jacksonConverter.getObjectMapper(); om.setDateFormat(new SimpleDateFormat(ConfigConstant.SYSTEM_DATE_FORMAT)); om.setLocale(ConfigConstant.SYSTEM_LOCALE); om.setTimeZone(TimeZone.getTimeZone(ConfigConstant.SYSTEM_TIME_ZONE)); om.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() { @Override public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException { gen.writeString(StringUtils.EMPTY); } }); om.configure(Feature.WRITE_NUMBERS_AS_STRINGS, true); om.configure(Feature.WRITE_BIGDECIMAL_AS_PLAIN, true); List<MediaType> mediaTypeList = new ArrayList<MediaType>(); mediaTypeList.add(new MediaType("text", "plain", ConfigConstant.SYSTEM_CHARSET)); jacksonConverter.setSupportedMediaTypes(mediaTypeList); converters.add(jacksonConverter); } }