Back-End/Spring

Spring Boot viewResolver 및 resource 접근 설정 추가 방법 (spring, controller, 페이지 이동)

개발자 DalBy 2024. 5. 14. 15:14
반응형

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가 들어있습니다.

따로 의존성을 부여하지 않아도 됩니다.

 

 

 

반응형