8월의 마지막 TIL
구현방법-----
1. 웹 application initializer 할때 Dispatcher Servlet을 등록하여 사용
핸들러 매핑
Handler Mapping: 요청의 URL 기준으로 어떤 핸들러에게 위임할지 결정
핸들러 호출 시 파라미터 매핑
Handler adapter: 핸들러의 메서드 파라미터에 맞는 정보로 변환해준다.
① Dispatcher Servlet이 모든 HTTP서블릿 리퀘스트 오브젝트를 받고
② 어댑터로 변환해서 적절한 파라미터를 핸들러에게 전달.
ViewResolver
뷰는 어떻게 처리되는가
4번을 제외한 과정을 스프링부트가 대신 해준다.
JSP 거의 쓰지 않는다..! 백엔드 공부할때 JSP에 너무 시간을 쏟지 않기
@EnableWebMvc : 스프링 mvc가 필요한 빈들이 자동으로 등록됨
@EnableWebMvc
@Configuration
@ComponentScan(basePackages = "org.prgrms.kdt.customer")
@EnableTransactionManagement
static class AppConfig implements WebMvcConfigurer {
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp(); //리퀘스트.jsp 로 연결!
}
}
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext();
applicationContext.register(AppConfig.class);
var dispatcherServlet= new DispatcherServlet(applicationContext);
logger.info("Starting Server...");
ServletRegistration.Dynamic servletRegistration = servletContext.addServlet("test", dispatcherServlet);
servletRegistration.addMapping("/*");
servletRegistration.setLoadOnStartup(1);
}
<c:forEach var="i" begin="1" end="10" step="1">${i}<br></c:forEach>
<c:forEach var="customer" items="${customers}">${customer.customerId}<br></c:forEach>
<table class="table">
<thead>
<tr>
<th scope="col">ID</th>
<th scope="col">Name</th>
<th scope="col">Email</th>
<th scope="col">CreatedAt</th>
<th scope="col">LastLoginAt</th>
</tr>
</thead>
<tbody>
<c:forEach var="customer" items="${customers}">${customer.customerId}
<tr>
<th scope="row">${customer.customerId}</th>
<td>${customer.name}</td>
<td>${customer.email}</td>
<td>${customer.createdAt}</td>
<td>${customer.lastLoginAt}</td>
</tr>
</c:forEach>
</tbody>
</table>
톰캣의 web.xml에 있는디폴트 서블릿을 통해 리소스를 가져오게 된다.
static class AppConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// ' /resources/** ' 에 관한 리소스에 대한 요청이 오면
registry.addResourceHandler("/resources/**")
.addResourceLocations("/resources/");
// ' /resources/ ' 의 위치에서 리소스를 찾는다.
.setCachePeriod(60) //캐시설정
.resourceChain(true) //리소스 체인 걸기
.addResolver(new EncodedResourceResolver());//gzip으로 압축된 리소스 먼저 찾음
}
}
<img src="<c:url value="/resources/bg.jpg"/>" class="img-fluid">
자바 템플릿 엔진이다. HTML로 작성된 파일을 파싱해서 뷰를 제공.
1. 타임 리프추가
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
java
2.사용하기 전에