분류 전체보기 439

node.js 설치

https://nodejs.org/ko/download/ 다운로드 | Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 현재 버전을 설치하지 않고 LTS를 받아준다. LTS(Long Term Support) : 일반적인 경우보다 장기간에 걸쳐 지원하도록 특별히 고안된 소프트웨어의 버전 오랫동안 사용되어 안정화 되어있는 버전을 말한다. next만 눌러 설치해준다. 커맨드 창을 열어 node -v라고 입력해본다. 제대로 버전이 뜬다면 자동으로 환경변수 설정이 된 것이다. 원래 자바스크립트는 브라우저가 해석기이기 때문에 html 파일에서 그림을 그리는데 node.js를 사용하면 독립적으로 실행이 ..

JavaScript 2022.03.24

스프링 48강. API(Application Programming Interface)

데이터를 리턴하는 컨트롤러 주소 앞에는 /api를 붙인다. 개발자들끼리의 약속과도 같다. 여기서 api는 뭘까? API(Application-Programming Interface) : 컴퓨터나 컴퓨터 프로그램 사이의 연결 일종의 소프트웨어 인터페이스이며 다른 종류의 소프트웨어에 서비스를 제공 Application-Programming(AP) 갑이 프로그램을 만들었음 API의 주체가 갑이다. 잘 만들어놓은 프로그램을 공유하는 것 Interface(I) 이 프로그램을 을에게 공유하고 싶을 때 인터페이스를 만든다. API는 갑이 잘 만든 프로그램을 을에게 공유하고 싶을 때 만든다. 여기서 스프링으로 봤을 때는 AP까지는 서비스, 레파지토리, DB와 같은 모든 내부가 AP이고, 컨트롤러가 인터페이스이다. 컨트..

Spring/Blog-V2 2022.03.24

스프링 47강. 와일드카드

자바 1.7 이후부터 우항 제네릭은 타입 생략이 가능하다. List lists = new ArrayList(); 그리고 어차피 메서드에는 리턴타입이 정해져 있으니까 그 타입만 리턴할 수 있는데 이때 와일드 카드 사용하면 정해진 타입이 아닌 동적으로 리턴이 가능하다. 무엇이든 리턴가능! @RestController public class BoardTblApiController { private BoardTblRepository boardTblRepository; public BoardTblApiController(BoardTblRepository boardTblRepository) { this.boardTblRepository = boardTblRepository; } @GetMapping("/search..

Spring/Blog-V2 2022.03.24

스프링 46강. SSR CSR

홍길동이 액자 하나를 가지고 있고 공장에 그림을 그려달라고 요청했다. 어떤 그림을 요청하는지 구체적으로 요구하기 위해서는 쿼리 스트링으로 요청해야 한다. 홍길동은 오늘 하늘의 그림을 GET 요청했고 공장에서는 그림을 그리기 위해 하늘을 보고 도화지에 그림을 그린다. 그리고 홍길동에게 그림을 전달하는 것을 SSR이라고 한다. 서버 쪽에서 그림을 다 그려서 파일을 전해주는 것이다. SSR(Server Side Rendering) 서버 사이드 렌더링 : 서버쪽에서 랜더링 준비를 끝마친 상태로 클라이언트에 전달하는 방식 공장에서 그림을 그려주지 않고 "상단에 구름 두 개, 구름 위에 태양 하나" 라고 데이터를 응답해주면 홍길동이 데이터를 받아서 직접 그림을 그리는 방식을 CSR이라고 한다. CSR(Client ..

Spring/Blog-V2 2022.03.24

스프링 45강. 쿠키, 세션관리

리멤버에 id를 주자 리멤버는 체크하면 on이라는 String타입 value가 넘어간다. { "username":"ssar", "password":"1234", "remember":"on" } 1. LoginDto에 remember 필드 추가 2. user.js 가서 제이쿼리로 remember 자바스크립트 오브젝트 loginDto에 추가 3. UserApiController(/api/loginForm)에서 remember가 on이면 응답의 Set-Cookie 헤더에 유저 이름 전달 response.addHeader("Set-Cookie", "remember=" + loginDto.getUsername()) 4. UserController - loginForm Model에 쿠키값 담기 키값이 Set-Coo..

Spring/Blog-V2 2022.03.24

스프링 44강. filter, map, collect

이때까지 우리가 말했던 ByteStream은 전류선 자체를 말한 것이 아니다. 전류가 흐르고 있는 선을 Stream이라고 한다. 물고기들이 흐르고 있는 강물이 물고기 Stream이고, Byte가 흐르는 전기선을 ByteStream이라고 한다. 강물에서 어부가 연어만 잡았다. 필터(filter) 처리를 한 것이다. 연어 두마리를 백화점으로 보내기 위해 어부가 상자에 담아서 보낸다. 상자에 담는 행위를 맵(map)이라고 한다. 상자에 들어있는 물고기를 백화점에서 팔기 위해 예쁘게 전시해놓은 것을 수집(collect)이라고 한다. header 데이터와 같은 각종 데이터가 요청이 들어오면 web.xml 파일이 {"username":"ssar", "password":"1234} 데이터를 필터 처리를 해주고 아파치..

Spring/Blog-V2 2022.03.24

스프링 43강. 자바스크립트 분리

세션 유지시간 설정 가능! server: session: timeout: 30 1. 로그인 페이지 주세요 GET /loginForm 2. 프론트앤드 유효성 검사 -> required, maxLength 3. button에 이벤트 리스너 달기 4. username, password 자바스크립트에서 찾기 5. json으로 변환해서 fetch 요청 POST /login 6. 백엔드 -> LoginDto로 받아야 함 INSERT가 아니라서 toEntity 필요 없음 7. 네이티브 쿼리 SELECT * FROM user WHERE username=:username AND password=:password 8. 후처리? 세션 저장 등등 쿠키는 따로 담에 할 거임 회원가입과 로그인의 다른 점은 두 가지뿐이다. SEL..

Spring/Blog-V2 2022.03.24

스프링 42강. ErrorHandler

오류가 나서 터지면 code를 1이 아닌 -1을 전송해야 한다 캐치를 타게 만들어서 원하는 데이터를 응답하는 방법을 알아보자. 서비스에서 save 하다가 터지는 것인데 이때는 캐치에서 return을 -1을 해줘야 한다. 근데 save 메서드 내부에 트라이 캐치가 걸려있어서 내가 걸어준 트라이 캐치까지 도달하지 않는다. 내가 제어할 수 없는 것이다. 이를 잡기 위해 방법을 제공해준다. handler 폴더를 만들어주고 파일을 생성하자. @RestControllerAdvice 어노테이션을 걸어주면 모든 예외를 낚아채는 컨트롤러의 역할을 한다. @ExceptionHandler는 어떤 예외가 발생했을 때 낚아챌 것인지 정하는 것인데 여기 (value = Exception.class)라고 제일 부모를 잡아주면 모든..

Spring/Blog-V2 2022.03.23

스프링 41강. 회원가입 코드 리팩토링

회원가입은 INSERT라서 post 요청을 해야 한다. post요청은 form태그로도 가능한데 PUT, DELETE 요청은 fetch로 하고, GET, POST 요청은 form으로 하면 일관성이 없으니까 전부 다 fetch 요청으로 통일하자. form태그는 페이지를 응답받기 때문에 전체 새로고침이 일어나고 fetch는 AJAX로 부분 리로드 된다. User 엔티티에서 만든 제약조건을 참고하여 프론트에서 막아주자!! @AllArgsConstructor @NoArgsConstructor @Data @EntityListeners(AuditingEntityListener.class) @Entity public class User { @Id // PK @GeneratedValue(strategy = Generat..

Spring/Blog-V2 2022.03.23