spring 17

Spring boot실습 {RestFullAPI}

RestFullAPI 웹을만들때 서버를 만드는 사람이 자원의 주소를 설정할때 서버를 만드는사람이 자기 마음대로 해 버리면 통일성이 없어서 작업하는데 소통의 문제가 있었다 그래서 이 문제를 해결하기위해 주소를 설정할 때 약속을 정했다. 데이터를 리턴하는 주소를 설정할땐 규칙이 있고 그것을 지켜줘야 통일성있는 협업을 할 수 있다 1. 소문자를 사용한다. 주소에서 대소문자를 구분하므로, 카멜방식이 아닌 소문자를 사용하여 작성한다. 2. 언더바를 대신 하이픈을 사용한다. 가급적 하이픈의 사용도 최소화하며, 정확한 의미나 표현을 위해 단어의 결합이 불가피한 경우에 사용한다. 3. 마지막에 슬래시를 포함하지 않는다. 슬래시는 계층을 구분하는 것으로, 마지막에는 사용하지 않는다. 4. 행위는 포함하지 않는다. 행위는..

Springboot 2021.06.29

Spring boot / DB {CRUD} 실습 해보기

저번 포스팅에서 이어서 갑니다. jap라이브러리의 사용법 저번 포스팅에서 yml파일의 라이브러리를 위와같이 수정합니다 수정하는 이유는 ddl-auto에 create라는 값이 들어있으면 디비가 실행될때마다 테이블이 만들어져서 초기화된다 show-sql 속성을 true로 해놓으면 위와같이 쿼리문이 콘솔에 출력되는것을 볼 수 있다 yml을 수정하고 주석내용은 중요하니 꼭 본다 package를 만들어 주는데 web이란 폴더를 만들어줘서 거기서 db를 핸들링하는게 규칙이다 INSERT insert하는 함수를 실행한 후에 postman을 이용해서 데이터를 insert해본다 오브젝트로 보내는 방식이니 x-www-form-urlencoded방식으로 mime타입을 설정한뒤 양식에 맞게 데이터를 보낸다 DB에 보낸 데이터..

Springboot 2021.06.28

Spring boot실습 DBMS연결

프로토콜: 약속 프로토콜에서의 약속은 대등한 관계에서 성립된다. http의 모든 것들은 프로토콜로 만들어져 있다. RFC문서라고 있다 서로 다른 프로토콜로 떨어져 있던 프로토콜을 폭넓은 통신을 위해서 서로 협의하에 프로토콜을 제정의해서 프로토콜을 합친 것임 이것이 모든 인터넷의 시작이다. 이 프로토콜들이 모이고 모여서 만들어진 게 WWW이다. 월드와이드 웹. 프로토콜로 만들어진 세상 인터페이스와 다른 점은 인터페이스는 누군가가 클라이언트가 어떠한 것을 사용하기 편하게끔 만들어주는 것(상하관계의 약속 ex) 리모콘, 자판기 버튼) 통신이 필요한 모든 데이터는 프로토콜이 없으면 쓰레기 데이터가 된다. 즉 서로 프로그램끼리 이해할 수 없어진다 그래서 상호간에 통신을 위해서는 프로토콜을 맞춰주는 작업이 바로 드..

Springboot 2021.06.25

Spring boot실습 톰켓의 내부

톰켓에 url 요청을 할 때 요청정보에 들어가는 정보는 누가 요청을 했는지 어떤 프로그램으로 요청했는지 등등에 대한 많은 정보들이 byte스트림으로 String타입이 들어온다. 이때 문자열 그대로 있으면 활용하기 어려우니까 변수에 담아주는 것이 효율적이다. 이때 많은 변수가 담겨있기 때문에 자바 변수를 클래스에 담아둔다 위와 같은 작업을 톰캣이 해준다. request객체와 response객채를 톰캣이 만들어서 자바에게 전달해준다. 그럼 자바 servelet에서 받아서 처리하는 것이다. 그래서 위 두 객체들에 접근하는 방법이 필요하다 의존성 주입 DI, 의존성 주입은 필요한 객체를 직접 생성하는 것이 아닌 외부로부터 필요한 객체를 받아서 사용하는 것이다. 이를 통해 객체 간의 결합도를 줄이고 코드의 재활용..

Springboot 2021.06.24

Spring boot/실습 response의 이해

컨포넌트 스캔 기준 이유: IOC컨테이너에 객체 등록 위치:com.cos.secondapp 스프링에서 IOC컨테이너는 어노테이션을 가지고 있는 java파일을 찾아내고 그 어노테이션의 주소가 있는 함수를 실행한다. POST방식으로 자원요청->디스패쳐가 실행돼서 요청을 가로챈다. -> IOC 스캔-> 해당 자원(View)을 가지고 있는 함수 호출 이때 함수에 매개변수가 있다고 한다면 이때 디스패처가 해당 요청 시 받은 요청 해더에 있는 컨텐트 타입과 데이터를 가지고 와서 해당 매개변수에 파싱 해서 주입시켜준다 함수가 실행되면서 매개변수를 주입시켜 주는 것이다 진짜 마법 같은 일이 스프링을 해내는 것이다. 만약에 해당 자원을 찾지 못했다면 null을 반환하는 것이다. response 응답할 때 관여하는 기능이..

Springboot 2021.06.23

Spring boot/ 실습(2) 데이터 요청의 기본 개념

저번 포스팅에서 이어가 보겠습니다. raw데이터는 일종에 원시 데이터를 전송한다고 생각하면 된다. 그리고 text타입을 줘서 hello를 put 할 것입니다. 저번 포스팅에서 post를 했을 때처럼 스프링에서 시도해봤지만 null이 뜨는 것을 볼 수 있다 application/x-www-form-urlencoded 타입은 오브젝트로 받는다. 그래서 key와 value값이 아니기 때문에 스프링이 자체적으로 파싱 해주지 않는 것이다. 결국 원형데이터를 받으려면 버퍼드 리더로 읽어야 하는데 스프링에선 어노테이션 하나만 알면 된다 이렇게 원시 데이터를 버퍼드 리더로 받을 수 있도록 어노테이션으로 jvm에게 알려주는 것이다. json으로 데이터를 보내보자 위와 같이 원형 그대로 나오는 것을 볼 수 있다. 위 데이..

Springboot 2021.06.22

Spring boot/실습 (1)데이터 요청의 기본 개념

저번 포스팅에 썼던 코드를 조금 변형해서 브라우저에서 호출을 한 뒤에 F12를 누르면 이런 화면이 나옵니다. Remote Address는 접속한 클라이언트의 주소입니다. Referrer Policy 내서버는 크로스 오리진 접근을 막고 있다.라고 말하고 있습니다. 크로스 오리진 = 서버는 자바스크립트 요청을 싫어한다 자바스크립트가 서버를 공격할 수 있기 때문이죠. 그래서 다 막아야 한다. 그래서 크로스 오리진은 외부에서 들어오는 자바스크립트를 막으려고 하는 정책의 일부분. Requste Method : GET get요청은 무조권 셀랙트용도. 일반적으로 서버 주소창에 자원을 요청할 때는 무적권 get타입으로 요청된다. 데이 터전 송시에 get요청을 한다고 할 때는 해더만 있다(바디가 없다) 하지만 응답해줄때..

Springboot 2021.06.22