1. yaml이란?

    - 정리가 잘 된 주소 참조합니다.

https://www.inflearn.com/questions/16184

 

yaml파일 이란 무엇인가요 - 인프런 | 질문 & 답변

안녕하세요 강사님 너무 질문이 많아서 죄송합니다. yaml파일 이라는 단어를 요 근래 많이 듣고 있는데 정확인 무슨 파일인가요 검색해 보지도 않고 무조건 질문을 드리는것 같아서 죄송하지만

www.inflearn.com

 

server:
  port: 8000
  servlet:
    context-path: /blog

port는 8000이며, context-paht는 /blog입니다.

 

RestController 어노테이션은 문자 그대로를 return하는 반면,

Controller 어노테이션을 이용하게되면, file을 return하게 됩니다.

@Controller
public class TempControllerTest {

	// http://localhost:8000/blog/temp/home
	@GetMapping("/temp/home")
	public String tempHome() {
		System.out.println("tempHome()");
		// 파일리턴 기본경로 : src/main/resources/static
		// 리턴명 : /home.html
		// 풀경로 : src/main/resources/static/home.html
		return "/home.html";
	}
}

스프링 부트의 경우는 JSP파일을 인식하지 못합니다.

그래서, JSP 템플릿 엔진을 pom.xml에 추가해줘야합니다.

<!-- JSP 템플릿 엔진 -->
<dependency>
	<groupId>org.apache.tomcat.embed</groupId>
	<artifactId>tomcat-embed-jasper</artifactId>
</dependency>

또한 JSP파일은 정적 파일이 아니기 때문에, 위의 파일 리턴 기본 경로인 static 하위에 위치하여도 JSP파일은 읽히지 않습니다. 이유는 static하위에는 브라우저가 인식 할 수 있는 정적 파일만 있어야합니다.

	@GetMapping("/temp/jsp")
	public String tempJsp() {
		return "/test.jsp";
	}

이를 위해, src/main/webapp/WEB-INF/views라는 폴더를 생성하고,

application.yml에 아래와 같이 추가합니다.

spring:
  mvc:
    view:
      prefix: /WEB-INF/views/
      suffix: .jsp

또한 해당 jsp를 호출할때 메소드에서의 호출 방법은 아래와 같습니다.

	@GetMapping("/temp/jsp")
	public String tempJsp() {
		// prefix : /WEB-INF/views/
		// suffix : .jsp
		// 풀네임 : /WEB-INF/views/test.jsp
		
		return "test";
	}

 

static 하위의 파일에 접근하던것과 다르게 prefix, suffix가 존재하여 return시에 return하고자하는 파일명만 집어 넣으면 됩니다.

 

 

 

강의 주소 : https://youtu.be/U9OnYKiSf4g

 

롬복 설치 과정은 아래 강의를 참조하겠습니다.

 

@Getter
@Setter
public class Member {

	private int id;
	private String username;
	private String password;
	private String email;
	
}
@Data
public class Member {

	private int id;
	private String username;
	private String password;
	private String email;
	
}

위 두개의 내용은 서로 같은 내용입니다.

@Getter, @Setter를 두개 다 쓰고 싶다면 @Data라는 어노테이션을 쓰면 됩니다.

 

@NoArgsConstructor : 빈 생성자를 추가하는 어노테이션입니다.

@AllArgsConstructor : 전체 생성자를 추가하는 어노테이션입니다.

@RequiredArgsConstructor : final이 붙은 변수에 대해 생성자를 추가하는 어노테이션입니다.

package com.cos.blog.test;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Member {
	private int id;
	private String username;
	private String password;
	private String email;
}

 

@Builder : 해당 어노테이션 선언시 객체를 선언할때 아래와 같은 방식으로 선언하여 사용 할 수 있습니다.

    - builder의 장점

      1. 생성자의 순서를 지키지 않아도 됩니다.

      2. 필드의 값이 무엇이었는지 생각하지 않아도 됩니다.

Member m = Member.builder().username("ssar").password("1234").email("ssar@nate.com").build();
package com.cos.blog.test;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
public class Member {
	private int id;
	private String username;
	private String password;
	private String email;
	
	@Builder
	public Member(int id, String username, String password, String email) {
		this.id = id;
		this.username = username;
		this.password = password;
		this.email = email;
	}
}
@GetMapping("/http/lombok")
public String lombokTest() {
    Member m = Member.builder().username("ssar").password("1234").email("ssar@nate.com").build();
    System.out.println(TAG+"getter:"+m.getUsername());
    m.setUsername("cos");
    System.out.println(TAG+"setter:"+m.getUsername());
    return "lombok test 완료";
}
HttpController : getter:ssar
HttpController : setter:cos

 

 

강의 주소 : https://youtu.be/U3Bq4C-NEDU

 

MAVEN : 프로젝트 관리 툴입니다.

프로젝트 시작시 pom.xml 파일을 읽어들여 .m2 폴더에 필요한 라이브러리들을 다운로드 받아 빌드까지 해줍니다.

 

 

강의 주소 : https://youtu.be/jtur8oAAXYg

- Member class 생성

package com.cos.blog.test;

public class Member {

	private int id;
	private String username;
	private String password;
	private String email;
	
	public Member(int id, String username, String password, String email) {
		this.id = id;
		this.username = username;
		this.password = password;
		this.email = email;
	}
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
}

Java에서 변수는 Private로 선언해야합니다. 또한 이러한 변수들에 대한 값을 가져오고, 변경하려면 위와같이 getter, setter를 통해 접근해야 합니다.

 

- GET

- POST

  - FORM 방식

@PostMapping("/http/post")
public String postTest(Member m) {
	return "post 요청: " + m.getId() + ", " + m.getUsername() +", " + m.getPassword() +", "+ m.getEmail();
}

  - TEXT 방식

@PostMapping("/http/post")
public String postTest(@RequestBody String text) {
	return "post 요청: " + text;
}

@RequestBody 어노테이션을 선언해줘야합니다.

  - JSON 방식

@PostMapping("/http/post")
public String postTest(@RequestBody Member m) {
	return "post 요청: " + m.getId() + ", " + m.getUsername() +", " + m.getPassword() +", "+ m.getEmail();
}

 

위와같이 queryString, Member객체에 보내는 데이터들이 매핑되는데 이러한 역할을 스프링부트의 MessageConverter가 해준다.

 

 

 

강의 주소 : https://youtu.be/Fd5Rhz0j8QQ

- Controller를 생성합니다.

package com.cos.blog.test;

import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RestController;

// 사용자가 요청 -> 응답(HTML 파일)
// @Controller

// 사용자가 요청 -> 응답(Data)
@RestController
public class HttpControllerTest {

	// http://localhost:8080/http/get
	@GetMapping("/http/get")
	public String getTest() {
		return "get 요청" ;
	}
	
	// http://localhost:8080/http/post
	@PostMapping("/http/post")
	public String postTest() {
		return "post 요청";
	}
	
	// http://localhost:8080/http/put
	@PutMapping("/http/put")
	public String putTest() {
		return "put 요청";
	}
	
	// http://localhost:8080/http/delete
	@DeleteMapping("/http/delete")
	public String deleteTest() {
		return "delete  요청";
	}
}

get 요청
post 요청
put 요청
delete 요청

* 브라우저에서는 get요청만 보낼 수 있습니다. post, put, delete 요청시 405에러가 발생합니다.

 

 

 

강의 주소 : https://youtu.be/BNiDNAWZn-E

Header : Data에 대한 설명을 담고 있습니다.

Body : Data를 담고 있습니다.

 

Http 통신

 

- 패킷 스위칭

 

- 서킷 스위칭

 

 

- MIME 타입

 

https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types

 

MIME 타입의 전체 목록 - HTTP | MDN

다음은 일반적인 확장자로 정렬된, 문서 타입과 관련된 MIME 타입의 포괄적인 목록입니다.

developer.mozilla.org

 

 

 

강의 주소 : https://youtu.be/NVjnu4xBdpw

채팅과 같은 서비스에서는 stateful방식을 이용합니다.

채팅과 같이 계속 연결되어야 하는 경우에는 위와 같은 방식으로 연결

 

 

HTTP통신의 경우는 위와같은 방식의 연결을 사용하지 않습니다.

HTTP에서는 stateless 방식을 이용합니다.

 

 

 

강의 주소 : https://youtu.be/fLpmG5tIg1c

1. Postman 설치

https://www.postman.com/downloads/

 

Download Postman | Get Started for Free

Try Postman for free! Join 20 million developers who rely on Postman, the collaboration platform for API development. Create better APIs—faster.

www.postman.com

 

2. HTTP1.1

- get : 데이터를 줘 / Select

- post : 데이터를 추가해줘 / Insert

- put : 데이터를 수정해줘 / Update

- delete : 데이터를 삭제해줘 / Delete

 

 

 

강의 주소 : https://youtu.be/6lSMCAq-fYg

 

git의 3가지 영역 : 작업 영역, 인덱스, 헤드로 나뉩니다.

 

 

강의 주소 : https://youtu.be/pkR_ZeMjWGo

멋진 노을을 사진을 찍어 보관하는 것과 같이 소스코드를 사진을 찍어 보관하는 것(스냅샷)

 

강의 주소 : https://youtu.be/9Nk1a6UMAqo

+ Recent posts