package com.smartmap.sample.ch1.conf; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.context.annotation.Configuration; import org.springframework.format.FormatterRegistry; import org.springframework.format.datetime.DateFormatter; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.validation.MessageCodesResolver; import org.springframework.validation.Validator; import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.method.support.HandlerMethodReturnValueHandler; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.config.annotation.AsyncSupportConfigurer; import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.PathMatchConfigurer; 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.WebMvcConfigurer; import com.smartmap.sample.ch1.entity.User; @Configuration public class MvcConfiguration implements WebMvcConfigurer { @Override public void configurePathMatch(PathMatchConfigurer configurer) { // TODO Auto-generated method stub WebMvcConfigurer.super.configurePathMatch(configurer); } @Override public void configureContentNegotiation(ContentNegotiationConfigurer configurer) { // TODO Auto-generated method stub WebMvcConfigurer.super.configureContentNegotiation(configurer); } @Override public void configureAsyncSupport(AsyncSupportConfigurer configurer) { // TODO Auto-generated method stub WebMvcConfigurer.super.configureAsyncSupport(configurer); } @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { // TODO Auto-generated method stub WebMvcConfigurer.super.configureDefaultServletHandling(configurer); } @Override public void addFormatters(FormatterRegistry registry) { // TODO Auto-generated method stub registry.addFormatter(new DateFormatter("YYYY-MM-dd HH:mm:ss")); WebMvcConfigurer.super.addFormatters(registry); } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new SessionHandlerInteceptor()).addPathPatterns("/admin/**"); WebMvcConfigurer.super.addInterceptors(registry); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { // TODO Auto-generated method stub WebMvcConfigurer.super.addResourceHandlers(registry); } @Override public void addCorsMappings(CorsRegistry registry) { // TODO Auto-generated method stub registry.addMapping("/**"); WebMvcConfigurer.super.addCorsMappings(registry); } @Override public void addViewControllers(ViewControllerRegistry registry) { // TODO Auto-generated method stub registry.addViewController("/index.html").setViewName("login"); registry.addRedirectViewController("/system/index.html", "/system"); WebMvcConfigurer.super.addViewControllers(registry); } @Override public void configureViewResolvers(ViewResolverRegistry registry) { // TODO Auto-generated method stub WebMvcConfigurer.super.configureViewResolvers(registry); } @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) { // TODO Auto-generated method stub WebMvcConfigurer.super.addArgumentResolvers(resolvers); } @Override public void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> handlers) { // TODO Auto-generated method stub WebMvcConfigurer.super.addReturnValueHandlers(handlers); } @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { // TODO Auto-generated method stub WebMvcConfigurer.super.configureMessageConverters(converters); } @Override public void extendMessageConverters(List<HttpMessageConverter<?>> converters) { // TODO Auto-generated method stub WebMvcConfigurer.super.extendMessageConverters(converters); } @Override public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) { // TODO Auto-generated method stub WebMvcConfigurer.super.configureHandlerExceptionResolvers(resolvers); } @Override public void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) { // TODO Auto-generated method stub WebMvcConfigurer.super.extendHandlerExceptionResolvers(resolvers); } @Override public Validator getValidator() { // TODO Auto-generated method stub return WebMvcConfigurer.super.getValidator(); } @Override public MessageCodesResolver getMessageCodesResolver() { // TODO Auto-generated method stub return WebMvcConfigurer.super.getMessageCodesResolver(); } class SessionHandlerInteceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { User user = (User) request.getSession().getAttribute("user"); if (user == null) { response.sendRedirect("/login.html"); return false; } return HandlerInterceptor.super.preHandle(request, response, handler); } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // TODO Auto-generated method stub HandlerInterceptor.super.postHandle(request, response, handler, modelAndView); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // TODO Auto-generated method stub HandlerInterceptor.super.afterCompletion(request, response, handler, ex); } } }