반응형
스프링 부트에서 웹 자원들을 실행하기 위한 규약
스프링 부트는 기본적으로 Runnable jar로 실행되므로 WAR 규격에 맞춰서 WEB-INF 폴더를 만들거나 webapp 폴더를 만들지 않고 웹 자원들을 사용하기 위한 몇가지 규약을 제공한다.
- 정적 파일 - src/main/resources/static
- 웹 페이지 대표 아이콘 - src/main/resources/favicon.ico
- 템플릿 - src/main/resources/templates
웹 자원들을 해당 규약에 맞는 곳에 두면, 웹을 위한 별도의 폴더를 만들지 않고 사용할수 있다.
웹 리소스 폴더 설정
스프링 부트의 기본 설정 대신 javaConfig 클래스파일을 만들어서 설정을 추가할수 있다.
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourcesHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/asserts/**")
.addResourceLocations("classpath:/asserts/","/asserts/");
}
}
정적페이지로 이동 설정
페이지에 데이터를 추가로 전달하지 않고 페이지와 URL 연결만 필요한 경우에는 addViewControllers 메서드를 이용한다.
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("home");
}
interceptor 사용
public class ExecuteTimeInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandler(HttpServletRequest request, HttpServletResponse response,
Object handler) throws Exception{
long startTime = System.currentTimeMillis();
request.setAttribute("startTime", startTime);
String reqUri = request.getRequestURI();
return ture;
}
@Override
public void postHandler(HttpServletRequest request, HttpServletResponse response,
Object handler, ModelAndView modelAndView) throws Exception{
long startTime = (Long)request.getAttribute("startTime");
long endTime = System.currentTimeMillis();
long executeTime = endTime - startTime;
request.setAttribute("executeTime", executeTime);
}
}
interceptor 등록
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Bean
public ExecuteTimeInterceptor executeTimeInterceptor() {
return new ExecuteTimeInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(executeTimeInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/");
}
}
출저 - 스프링 부트로 배우는 자바 웹 개발
저자 - 윤석진
반응형
'JAVA > Spring Boot' 카테고리의 다른 글
Spring Data JPA 사용 및 설정 (0) | 2020.08.22 |
---|---|
REST API (0) | 2020.08.21 |
스프링부트 보안 OAuth2 (0) | 2018.04.12 |
스프링 부트 보안 (예제) (0) | 2018.04.07 |
스프링부트 웹 개발 (샘플) (0) | 2018.04.06 |