스프링부트는 웹루트가 (마치) 3개인 것처럼 동작한다.
/static
/templates
/webapp
static : 정적 웹소스 , JS, css, html, 이미지 ...
템플릿 : Thymeleaf, Mustache ...
applicaiotn.properties : 스프링부트 설정파일
webapp(웹루트) : JSP들...
pom.xml : 메이븐 설정파일
src/main/resources 의 static 폴더
이미지, JS, css, html ← 이런 파일들을 위한 홈 디렉토리
static (정적) 이다 함은 서버입장에서 별도의 프로세스 없이 그대로 response만 하는 파일들
스프링 부트에선 홈 디렉토리가 3개라 보시면 됨
src/main/resource/static ← 정적인 파일들
src/main/resource/templates ← 템플릿 파일들
src/main/webapp ← 동적인 파일들 (jsp ..)
Jasper 라이브러리 추가하기 : 방법1
Mavern Reporitories view 에서
‘index build ’ 가 되어 있다면 다음과 같이 가능..
pom.xml 을 수정하면 꼭 Maven update 하자
* ViewResolver 설정
application.properties에서 설정
※단순 텍스트 파일이지만, 스프링에선 자동완성도 기능 지원한다.
handler의 리턴값 “home” -> prefix + “home” + suffix
뷰 (view) 완성 /WEB-INF/views/home.jsp <- /WEB-INF/views/ + home + .jsp
* spring-webmvc 라이브러리의 DispatcherServlet
MVC 모델에서 Controller 역할.
일단 모든 request 를 받아서 Java POJO Controller 에 매핑시키고
결과(model, view) 를 받아서 View 에 전달
Controller 의 앞에 있는 Controller 라 하여 이를 FrontController 라 한다.
View 에 전달할때, 다양한 View 에 전달할수 있도록 ViewResolver 개념을 둔다.
resource view resolver
HomeController.java
package com.lec.spring;
import java.time.LocalDateTime;
import java.util.Random;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
// Spring MVC 에서 'C' Controller 역할을 하는 클래스로 컨테이너에 생성
public class HomeController {
public HomeController() {
System.out.println("HomeController() 생성");
}
// Controller 안에는 request를 처리(handle) 하는 메소드들을 정의한다
// 이러한 메소드들을 'handler' 라 한다.
// handler 는
// - '어떠한 request' 를 받아서,
// - '어떠한 처리 (business logic)' 를 하고
// - '어떠한 response' 를 할지를 정의
@RequestMapping("/") // "/" 라는 url 로 request 라 오면 아래 메소드가 처리(handle) 한다
public String now(Model model) { // Model : 데이터를 실어나르는 객체, View 까지 전달된다
System.out.println("/ : now() 호출 ");
LocalDateTime t = LocalDateTime.now();
model.addAttribute("serverTime", t.toString()); // Model 에 데이터 담기 (name-value)
return "home"; // 리턴되는 "문자열" 은 -> View Resolver 로 전달
//prefix = /WEB-INF/views/
//suffix=.jsp
// "/WEB-INF/views/" + "home" + ".jsp" => /WEB-INF/views/home.jsp 로 포워딩
}
@RequestMapping("/aaa")
public String home(Model model) {
int a = new Random().nextInt(10);
int b = new Random().nextInt(5);
model.addAttribute("first", a);
model.addAttribute("second", b);
return "aaa/my";
// "/WEB-INF/views/" + "aaa/my" + ".jsp" => /WEB-INF/views/aaa/my.jsp 로 포워딩
}
@RequestMapping("/aaa/bbb")
public String aaabbb(Model model) { // 핸들러 '이름' 은 별로 중요하지 않다.
int a = new Random().nextInt(10);
int b = new Random().nextInt(5);
model.addAttribute("first", a);
model.addAttribute("second", b);
return "aaa/bbb/title"; // => /WEB-INF/views/aaa/bbb/title.jsp
}
} // end controller
my.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>my.jsp</title>
</head>
<body>
<h2>my.jsp - /aaa</h2>
${first } - ${second }<br>
<img src="cat.png"/><br>
</body>
</html>
'Spring' 카테고리의 다른 글
[Spring Boot] Validation (0) | 2022.05.12 |
---|---|
[SpringBoot] Request Parameter (0) | 2022.05.12 |
[SpringBoot] RequestMapping (0) | 2022.05.12 |
[SpringBoot] Dependency Injection 의존주입 (0) | 2022.05.12 |
[Spring] Spring이란 (0) | 2022.05.11 |