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;
}
}