package com.example.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; 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.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver; import org.springframework.web.servlet.view.InternalResourceViewResolver; import org.springframework.web.servlet.view.JstlView; @ComponentScan(basePackages = { "com.example.controller" }) @Configuration @EnableWebMvc public class SpringMVCContext extends WebMvcConfigurerAdapter { private static final String VIEW_RESOLVER_PREFIX = "/WEB-INF/views/"; private static final String VIEW_RESOLVER_SUFFIX = ".jsp"; // 정적 자원 관리하게 해줌 @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/assets/**").addResourceLocations("/assets/"); } // 뷰 설정( jsp 이용한다 ) @Bean public ViewResolver viewResolver() { //jsp뷰 페이지 설정 InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); viewResolver.setViewClass(JstlView.class); viewResolver.setPrefix(VIEW_RESOLVER_PREFIX); viewResolver.setSuffix(VIEW_RESOLVER_SUFFIX); return viewResolver; } // 기본 서블릿핸들링 @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); } //에러 처리 @Bean public SimpleMappingExceptionResolver exceptionResolver() { SimpleMappingExceptionResolver exceptionResolver = new SimpleMappingExceptionResolver(); // Properties exceptionMappings = new Properties(); // exceptionMappings.put("java.lang.Exception", "error/error"); // exceptionMappings.put("java.lang.RuntimeException", "error/error"); // exceptionResolver.setExceptionMappings(exceptionMappings); // Properties statusCodes = new Properties(); // statusCodes.put("error/404", "404"); // statusCodes.put("error/error", "500"); // exceptionResolver.setStatusCodes(statusCodes); return exceptionResolver; } }