231114 TIL - SpringBoot 기초(Controller, View, 인스턴스 변수)

jkeum·2023년 11월 14일
0

TECHIT-BackendSchool

목록 보기
12/50
post-thumbnail
@GetMapping("/calc18")
@ResponseBody
String showCalc18() {
	return """
			<div>
				<input type="text" placeholder="내용" value="반가워요.">
			</div>
			""";
}

Controller는 액션 메소드로 이루어져있음.
View는 따로 빼는 게 좋음.


@GetMapping("/calc20")
	String showCalc20() {
		return "calc20";
}
<div>
    <input type="text" placeholder="내용!!!!">
</div>

thymeleaf 추가하고, @ResponseBody 어노테이션 사용하지 않으면 src/main/java/resources/templates 에서 html 찾아서 띄워줌.


@GetMapping("/calc21")
String showCalc21(Model model) {
	model.addAttribute("v1", "안녕하세요");
	model.addAttribute("v2", "반가워요");
	return "calc21";
}
<div>
  <input type="text" placeholder="제목" th:value="${v1}">
</div>
<div>
  <input type="text" placeholder="내용" th:value="${v2}">
</div>

model.addAttribute()v1에 들어갈 데이터, v2에 들어갈 데이터임을 알려줌.
Model을 쓰면 알아서 처리됨


spring:
  thymeleaf:
    cache: false

더 빨리 처리됨. 개발모드에서 편함. 운영모드에서는 true로 변경해야 함.


private int num = 0;

@GetMapping("/calc22")
@ResponseBody
int showCalc22() {
	num++;
	return num;
}

num은 인스턴스 변수. Controller 클래스가 죽기 전까지 유지됨.
/calc22 로 들어가면 새로고침을 할 때마다 값이 증가함.
num은 요청할 때마다 만들어지는 게 아님.

싱글톤 → 객체의 개수가 한 개로 고정. 요청이 몇 개든 Controller의 객체는 하나임


class RsData<T> {
	private String resultCode;
	private String msg;
	private T data;
}

data에 어떤 타입이 들어올지 모를 때 사용할 수 있는 Generic 문법.

profile
It's me, jkeum!

0개의 댓글