Spring Boot viewResolver 및 resource 접근 설정 추가 방법
이번에는 Spring Boot에서 JSP에서 viewResolver와 resource 접근
설정에 관련하여 포스팅 하려고 합니다.
.properties에 설정하는 경우도 있지만, Java @Bean을 생성하여 추가하는 방법 또 한 많이 쓰이고 있습니다.
gradle 의존성 추가
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-web-services'
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
Spring Boot와 JSP 조합에서는 Spring Boot의 특정 버전에서는
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' 의존성을 추가 해 줘야
MVC Controller 화면 이동 시 에러가 발생하지 않습니다.
먼저 Config class에
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/jsp/view");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
viewResolver 빈을 추가합니다.
그리고 리소스 경로에 맞춰 추가합니다.
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("classpath:/resources/");
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
}
addResourceHandlers 메소드를 오버라이드 합니다.
위 메소드를 오버라이드 하기 위해선
@Configuration
@EnableWebMvc
@ComponentScan("com.yungame.*")
public class WebConfig implements WebMvcConfigurer
인터페이스를 상속 받아야 합니다.
설정에 추가적인 커스터 마이징을 원 한다면 @EnableWebMvc 제거하고 구현하도록 하면 됩니다.
그 외 추가 설정
필터 @Bean
@Bean
public FilterRegistrationBean encodingFilter(){
FilterRegistrationBean frb = new FilterRegistrationBean();
CharacterEncodingFilter charact = new CharacterEncodingFilter();
charact.setForceEncoding(true);
charact.setEncoding("UTF-8");
frb.setFilter(charact);
return frb;
}
필터 사용 이유
구체적으로 어떠한 정보가 servlet에 전달되기 이 전에 필터 클래스를 호출합니다.
또 한
-요청 및 응답 로깅
-로깅 요청 처리 시간
-요청 본문 또는 헤더 형식 지정
-인증 토큰 확인
-응답 압축
-이미지 변환 수행
등 여러가지 용도로 사용하고 있습니다.
파일 업로드 Request 처리 @Bean MultipartResolver
@Bean
public MultipartResolver multipartResolver() {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
multipartResolver.setDefaultEncoding("UTF-8");
multipartResolver.setMaxUploadSizePerFile(100 * 1024 * 1024);
return multipartResolver;
}
spring-web:web:5.3.23 lib지원 의존성 부여하지 않아도 됩니다.
Json view @Bean
@Bean
public MappingJackson2JsonView jsonView(){
return new MappingJackson2JsonView();
}
마찬가지로 SpringBoot springframework:sping-webmvc:5.3.23 lib에서 Jackson lib가 들어있습니다.
따로 의존성을 부여하지 않아도 됩니다.