Springboot 103

YML파일 이해하기

YML파일 이해하기 음료 공장을 만드는 기술자 1. 두 번째 공장 2. 공장 입구는 서쪽 3. 음료 요청은 전부 한글 문서로 변경해서 받는다. 4. 음료는 전부 콜라로 만들어서 출시된다. 5. 음료 총고는 컨테이너 박스를 사용한다. 6. 음료는 요청에 따라 페트병, 캔, 병으로 출시된다. 7. 공장이 재가동 될때 기존에 만들어졌던 음료는 버리지 않는다. 8. 음료 요청 시 A4용지 2장 이상의 문서는 받지 않는다. 9. 음료 요청은 아무나 할 수 없다. 암호를 아는 사람만 요청한다. 이런 문서와 규칙에따라서 기술자는 음료공장을 만들듯이 스프링 프레임워크에서 YML파일이란? 스프링 프레임워크로 공장을 만들 것인데 이 공장을 만들기 위한 문서다. 스프링 프레임워크 서버가 만들어질 때 스프링에서 이 YML파일..

Springboot 2021.12.09

MessageConverter란?(Jackson)

자바 오브젝트와 파이썬 오브젝트가 있을 때 이 둘의 오브젝트는 서로 생김새가 다를 수밖에 없다. 그럼 이 자바 오브젝트와 파이선 오브젝트가 직접적으로 소통을 하게 되면 서로 모르는 언어로 대화하는 것과 같은 현상이 일어난다. 그래서 서로 다른타입의 언어들을 이해하기 위해서 모든 언어가 해석할 수 있는 중간 언어를 만들게 되는데 그것이 바로 중간 데이터라고 불리는 녀석들이다. JSON, XML 같은 중간 데이터가 생기게 된 배경이다 MessageConverter라이브러리(Jackson) 자바프로그램을 누군가에게 전송할 때 json데이터로 바꿔주는 것이 MessageConverter라는 것이다. 그리고 이 MessageConverter가 비단 요청할 때만 작동하는 것이 아닌 응답을 받을 때도 JSON 데이터..

Springboot 2021.08.22

톰켓이란?

시스템 콜 HTTP는 운영체제가 들고 있는 소켓이라는 것을 이용해서 만들어졌는데 만약에 프로그램이 운영체제가 들고 있는 기능을 불러서 사용하는 것을 시스템 콜이라고 한다. HTTP 기반은 소켓이다. 웹 서버란? HTTP 웹 서버는 갑이다. 쉽게 말해서 하나의 영상을 공유할 때 그 영상을 받는 쪽이 갑이 아닌 영상을 주는 쪽이 갑이 되기 때문이다. 갑이라는 건 을이 필요한 데이터를 가지고 있다는 것이다. 그래서 항상 HTTP통신은 을이 갑한테 REQUEST를 한다. 이때 REQUEST 할 때 위치를 알아야 하기 때문에 IP주소를 알아야 한다. 그리고 두 번째는 REQUST 할 때 정확한 명시가 필요하기 때문에 URL을 사용한다 URL은 자원을 요청하는 주소 그래서 갑(웹서버)은 항상 가만히 있다가 URL을..

Springboot 2021.08.20

AOP 사용해서 sentry및 Log적용

log나 sentry 같은 공통기능들은 advice에서 처리를 해야 프로그램이 엄청 심플해진다. advice파일이 하나여야한다는 법칙은 없기 때문에 상황에 따라서 공통 관심사가 생기면 추가시켜주면 된다. log 남기기 info는 정상적일 때 실행되는 정보를 알려주는 log 문제가 생겼을 때는 log.warn이나 log.error를 남긴다. 개발을 할 때는 log.debug를 사용한다. debug는 debug모드에서만 실행된다. 로그에는 레벨이란 게 있다 1. error 2.warn 3.info 4.debug 이렇게 있는데 만약에 로그 레벨을 info로 해놓으면 info이상만 뜬다. 그럼 이 해당 로그가 뜰 때마다 파일로 남기고 싶을 때는 어떻게 할까? 위 파일을 만든다. 아래 코드는 그냥 복붙 해서 사용..

Springboot 2021.08.13

AOP실습해보기

aop 들어가기 전에 validation체크부터 먼저 해보겠다. jsp에서 만든 필터는 프로그래머 본인이 만든 필터라서 수정할 수 있는데 스프링에 필터는 이미 .class로 만들어진 jar파일이라 코드에 손을 될 수 없다. 그럼 스프링개발자들이 프로그래머들이 코드에 손댈 수 있게 필터를 수정하고 싶으면 해당 함수나 인터페이스를 찾아야한다. @Vaild BindingResult 위 코드를 보면 유효성 검사를 어노테이션으로 하고 있는 것을 볼 수 있다. 이게 무슨 뜻이냐면 스프링에서 리플렉션 해서 확인한다는 뜻. 그리고 공백(empty)과 null은 엄연히 다른 유효성 검사이다. 꼭 두 개를 다 구분해서 처리를 해 줘야 한다. 위 유효성 검사에 관한 어노테이션은 상황에 맞게 찾아서 보면 된다. @Valid ..

Springboot 2021.08.13

AOP개념

Validation체크 spring을 좀 하다 보면 유효성 검사를 하는 validation체크를 할 수밖에 없다. 사용자가 어떤 데이터를 던질지 모르고 혹시 모를 서버의 공격에 대비한 체크들을 해야 한다. 그럼 이때 예를 들어 request요청이 왔다고 했을 때 이데이 터가 쿼리 스트링이든 httpbody든 이 데이터를 filter에서 거르도록 해야 한다. 예를 들어서 post:/user에 username과 password요청이 왔다. 그럼 서버는 /user라는 http메서드와 uri를 디스페처가 감지를 하고 /user주소가 있는 함수를 찾는다. 그럼 자연스럽게 해당 함수의 매개변수를 확인한다. 이때 만약에 매개변수로 Strig username, String password, String Phone 이렇..

Springboot 2021.08.13

체크박스를 통해서 자바스크립트로 fetch요청하기

지금 하고 있는 쇼핑몰 만들기 프로젝트에서 체크된 항목들을 삭제해야 하는 기능이 있다. 그럼 하나의 값을 받아오는게 아니라 체크가 된 모든 값들을 받아와야 한다. 체크박스의 name값으로 자바스크립트에서 해당 체크박스의 체크 여부 등을 알 수 있는데 이때 체크박스의 벨류 값으로 찾아야 하는 db의 아이디 값을 value로 설정해줌으로써 위 checkNull의 값은 체크가 된 컨탠츠의 db데이터의 pk값이 들어가게 된다. 그리고 this.value로 값을 옮겨서 출력했다. 자바스크립트에서 반복해서 요청을 하도록 로직을 짜 놨기 때문에 봔환값없이(void)로 삭제만 하도록 기능을 설정했다.

Springboot 2021.08.11

지금 하는 프로젝트에서 상품평 기능 구현하기/이미지 업로드/상품평 수정/삭제 기능 구현

지금 쇼핑몰 프로젝트를 STS로 하고 있는데 상품평 기능을 구현하는 중에 블로그에 정리하면 좋을 것 같아서 정리합니다. 일단 상품평은 해당 상품의 상품평만 보여줘야 하고 상품평을 관리하는 페이지에서는 해당 유저가 작성한 상품평만 관리할 수 있도록 해야 하는 것이 관건이다. 상품평 DB생성 한 명의 유저가 여러 개의 코멘트를 가지고 있고 한 명의 유저가 여러 개의 상품을 가지고 있기 때문에 원자성 유지를 위해 여기서 폴인키를 다 가지고 있도록 설계해 줬다 상품평 작성하기 엉망이지만 대충 만들어 봤다 상품평 쓰기 버튼을 누르면 위와 같은 모달 창이 나와서 form타입으로 method는 post로 전송하게 된다. 여기서 보면 이미지 등록하기가 있다 상품 착용샷 같은 것을 올릴 수 있도록 ui를 제공하기 위해서..

Springboot 2021.08.08