STS 14

MessageConverter란?(Jackson)

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

Springboot 2021.08.22

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

Spring boot/JPA 사용해서 이미지 업로드 구현

툴 : vscode spring프레임워크로 이미지 업로드를 구현해보자. 이미지 기본이론 일단 기본적인 이미지 요청 응답의 메커니즘을 생각해보자. 이미지 업로드를 요청했다고 생각하면 결국 통신 중에는 이미지가 문자열 데이터로 전송된다. 이때 content타입이 text/plain이라고 가정해보면 역직렬 화할 때 문자열로 출력이 될 것이다 그래서 요청 content타입을 먼저 맞춰줘야 한다. 그리고 io가 일어나서 이미지가 저장될 때 db에 바이너리 데이터가 그대로 들어가면 사진을 관리할 수 없다. 그래서 이미지는 원래 파일이기때문에 파일로 관리해야 한다. 즉 db에 주소 번지가 저장되야하는 것이다. 위 데이터를 컨트롤러에서 받기 위해선 먼저 name값이 전송되니 그 전송되는 name값으로 매개변수를 받으면..

Springboot 2021.07.28

JPA Paging 구현 연습

게시글이 많아졌을 때 스클 롤이 길어지는 게 아니라 페이지로 넘어가도록 구현해보자 PageRequest객체 위오버로딩된 자료를 보면 page와 size를 적으면 된다라고 나와있는데 위 객체만 사용한다고 되지 않는다.. 이럴 땐 requestBody로 json데이터를 받아서 디버깅해 봐야 한다. 위 json데이터를 보면 어떻게 해야 할지 답이 보인다. 1.requestBody로 내부적으로 어떻게 데이터가 들어오는지 체크한다. 2. 데이터를 보고 어떻게 처리할지 정한다. 3.PageRequest객체 사용한다.

Springboot 2021.07.27

인터셉터 처리

톰켓은 필터를 가지고 있다. 인증처리를 할 때는 필터를 만들면 된다 스프링이란는 성이 만들어지려면 조건이 필요하다 바로 톰캣(서버)이라는 더 큰 범위 안에 스프링이라는 성이 들어갈 수 있는 것이다. 그래서 1차 필터는 톰캣이 들고 있다. 외부에 접근이 들어오면 톰켓이 1차적으로 검열을 할 수 있다(톰캣은 전처리밖에 못함 EX) 중국에서 오는 IP를 다 막고 싶다거나 하는 공통적인 로직). 톰캣 파일 중에 WEB.XML 파일이 1차 검열하는 필터 파일이라고 생각하면 된다. 이 톰캣을 통과해야 스프링 안으로 들어오는데 스프링의 첫 번째 관문에서 디스페처를 만난다. 이 디스페처가 요청을 받으면 IOC컨테이너를 뒤져서 요청받은 URI를 응답할 수 있는 컨트롤러 함수를 실행시킨다. 이때 이 함수가 실행되기 직전에..

Springboot 2021.07.26

Exception처리(기본개념)

try라는 스택과 catch스택이 있는 이유는 프로그램은 컴파일 시 오류와 런타임 오류(클라이언트와 통신)가 있다. 기본적으로 웹서버는 웹서버 시 오류가 발생할 수 있다. 통신을 하는 코드는 전부다 try/catch로 묶어야 한다. 클라이언트랑 하는 것도 통신 db에 있는 데이터를 가져오는 것도 통신이다. 메모리에 있는 데이터를 하드에 저장하는 것도 통신이다. 위와 같이 통신이 있는 코드는 전부 try/catch로 묶어야 한다. 근데 스프링에선 파일을 리턴하는 컨트롤러와 데이터를 리턴하는 컨트롤러가 있는데 try/catch는 string데이터를 리턴한다. 결국 구조적으로 컨트롤러에서 Exception 처리를 할 수 없다. 프레임워크의 규칙 때문에 Exception처리를 할 수 없는 것이다. 그래서 스프링..

Springboot 2021.07.20