#230926 수업 복습
HttpServletRequest, HttpServletResponse를 거의 사용할 필요 없이 구현
다양한 타입의 파라미터 처리, 다양한 타입의 리턴 타입 사용 가능
GET 방식, POST 방식 등 전송 방식에 대한 처리를 어노테이션으로 처리 가능
상속/인터페이스 방식 대신 어노테이션으로 간단하게 매핑 처리 가능
package com.kh.demo.controller;
import java.util.ArrayList;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import com.kh.demo.dto.SampleDTO;
@Controller
@RequestMapping("/sample/*")
public class SampleController {
// @GetMapping("")
// public String empty() {
// System.out.println("======== ========");
// return "a";
// }
@RequestMapping("basic")
public void asklgjsalekgjsalkg() {
System.out.println("========basic========");
}
@GetMapping("basic1")
public void basicGet(int age) {
System.out.println("========get 방식으로 요청========");
System.out.println("age : "+age);
}
@PostMapping("basic1")
public void basicPost(int age) {
System.out.println("========post 방식으로 요청========");
System.out.println("age : "+age);
}
@RequestMapping(value = "basic2", method = {RequestMethod.GET,RequestMethod.POST}) //여러개를 한번에 매핑 가능(어떤 방식이든 basic2로 요청하면 여기로 매핑) <- 지양
public void basic2() {
System.out.println("========get, post 방식으로 요청========");
}
//DTO 객체로 수집하기
@GetMapping("test01")
public void test01(SampleDTO dto) {
System.out.println(dto);
}
//파라미터 명과 담을 변수명이 다른 경우 수집방법
@GetMapping("test02")
public void test02(@RequestParam("data1") String name, @RequestParam("data2") int age) {
System.out.println(name+" / "+age);
}
//파라미터가 같은 이름으로 여러개 날라오는 경우 수집방법
@GetMapping("test03")
public void test03(@RequestParam("data") String[] datas, Model model) {
model.addAttribute("datas",datas);
}
@GetMapping("test04")
public void test04(@RequestParam("data") ArrayList<Integer> datas, Model model) {
model.addAttribute("datas",datas);
}
@GetMapping("test05")
public void test05() {
String str = null;
str.charAt(10);
}
}
https://www.postman.com/downloads > 다운로드 버튼 클릭
> 설치파일 실행 > 계정 로그인
여러 방식의 요청을 외부에서 보낼 수 있도록 도와주는 개발 툴
GET, POST 외에도 PUT, DELETE 등의 요청도 가능하다.
Params 선택 > Query Params에 요청사항(Key, value) 작성 > Send

Body 선택 > x-www-form-urlencoded > 요청사항(Key, value) 작성 > Send

웹 애플리케이션의 뷰(화면)를 생성하기 위한 자바 템플릿 엔진
HTML, XML, JavaScript, CSS 등의 마크업 언어를 지원하며,
다른 템플릿 엔진들과 달리 뷰 템플릿 파일 자체도 유효한 마크업 문서이다.
템플릿 파일이 개발자와 디자이너 모두에게 친숙한 문법으로 작성될 수 있도록 하는 장점이 있다.
또한 Thymeleaf는 서버 측에서 렌더링되므로
클라이언트 측에서 추가적인 로딩 없이 바로 렌더링 결과를 확인할 수 있다.
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"> <!-- xmlns : xml에서 참고할 문서 / th="http://www.thymeleaf.org"를 적어주면 타임리프 문법을 사용할 수 있고 타임리프 문법으로 해석함->
<head>
<title>test03</title>
</head>
<body>
<h2>test03</h2>
<th:block th:each="data : ${datas}"> <!-- th:each = 타임리프에서의 for문 ->
[[${data}]]<br> <!-- 텍스트로 표현할때는 [[ ]]로 묶어야 됨 ->
</th:block>
</body>
</html>
application.properties 파일에 예외처리에 대한 설정들을 작성
templates 폴더 내에 설정해둔 경로로 오류코드.html 을 생성
#브라우저 요청에 대해 서버 오류시 기본으로 제공되는 페이지를 사용할지 여부 설정(true, false)
server.error.whitelabel.enabled=false
#false => 오류시 404 에러 페이지
#오류 응답을 처리할 핸들러의 PATH
server.error.path=/error
#404 에러시, src/main/resources/templates/error 폴더를 찾아 '404.html'을 찾아 보여줌
#500 서버 에러시, src/main/resources/templates/error 폴더를 찾아 '500.html'을 찾아 보여줌
#오류 응답에 exception을 포함할지 여부(true, false)
server.error.include-exception=true
#오류 응답에 stacktrace 내용을 포함할지 여부(always, never, on_trace_param)
server.error.include-stacktrace=always