코딩 공부/Spirngboot 11

[RESTAPI] 따라하기

1. REST API- 서버 자원을 클라이언트에 구애받지 않고 사용할 수 있게 하는 설계 방식.- 클라이언트에서 정보를 요청하면 서버는 특정 기기에 종속되지 않고 모든 기기에서 통용할 수 있는 JSON 데이터를 응답 보냄.서버는 클라이언트의 요청에 대한 응답으로 View가 아닌 Data를 전송함. 이때 사용하는 응답데이터가 JSON임.2. RestController- RestController는 HTTP 요청을 처리하고 JSON과 같은 데이터 형식으로 응답을 반환함.- 클라이언트가 요청 > 매핑된 메서드로 전달 > 서비스 로직 처리 > 응답 반환  여기서 의문이 생긴다. Controller와는 무슨 차이가 있느냐? 이다.그래서 Rest Controller 와 Controller 에 대한 차이를 알아보겠다..

[회원가입 실습] 회원 정보 삭제

- 시작 전, 잠깐! 왜 GetMapping을 사용했나? 간단한 코드를 위해 사용함.스프링에서는 @GetMapping을 사용하여 데이터를 조회할 때 주로 사용한다.GET 요청으로 삭제를 처리하는 것은 웹의 RESTful 설계 규칙에 맞지 않지만, 종종 간단한 삭제 처리에서는 GET을 사용한다.실제로 URL에 대한 접근으로 삭제 작업을 처리하는 경우도 있고, 클라이언트에서 링크 클릭만으로 삭제할 수 있기 때문이라 한다.간단한 삭제 작업을 위해 GetMapping을 사용할 것이다.알고리즘 생각하기- 먼저 사용자가 해당 게시물을 클릭하고, 해당 게시물에 '삭제'버튼을 통해 삭제를 하게끔 할것이다.- 해당 게시물은 그러면 조회가 된 상태에서 진행되는 것. - 버튼을 누를시, 해당 데이터 조회()POST: 데이터..

[회원가입 실습] 회원 수정

회원 수정 실습 - 코드생각하기Edit 파일 생성 > HTML 에서는 기본적으로 POST와 DELETE 만 지원함. / 다른 방식으로 유도하거나 JS 사용해야함. / Mustache 사용중이기에 POST 사용할 예정Contorller 에서는 Id 값으로 접근해야함 > 기존 Entity 파일의 ID 어노테이션 수정. DTO id 값 null 인것도 수정.두가지 부분에 대해서 생각해야 한다. 먼저 해당 회원을 클릭시 해당 Edit view가 조회되어야 하고. (Get)두번째는 Submit 눌렀을 때 Post가 되어야 한다는 것이다.(필자는 mustache 실습환경이라 Post로 Update 를 코드하겠다) 1. Edit 파일 생성{{>layouts/header}} 이메일 비밀..

[Redirect 실습]

redirect 실습은 쉽다.회원가입을 하는 메서드의 return 값에 redirect를 넣어주면 끝이다MemberController.java @PostMapping("/join") public String createMember(MemberForm form){ log.info(form.toString()); // 1. DTO를 엔티티로 변환 Member member = form.toEntity(); log.info(member.toString()); // 2. 레퍼지토리로 Entity를 DB에 저장 Member saved = memberRepository.save(member); log.info(saved.toString()); return "redirec..

[단일, 리스트 데이터 조회] 회원가입 조회

단일 조회는 url을 "members/1" 이런식으로 하나의 회원가입을 조회하는 식으로 할거다.01. 단일조회controller 의 흐름은 1. 데이터를 조회한다. 2. 모델에 데이터를 등록한다. 3. 페이지에 반환한다. 이 순서이다.데이터 조회> 모델 데이터 등록> 페이지 반환 순으로 어떻게 작성해야할지 생각해보자.1. 데이터 조회하기 위해서는 Repository에 있는 데이터를 가져와야 한다.- Repository에 있는 데이터를 가져올 때는 findById를 사용한다. (단일 아이디 조회이기 때문에 findAll이아니다.)- findById는 다음과 같은 시그니처를 가지고 있다.Optional findById(Id id);- Optional이라는 건 특정 ID 에 해당하는 Entity가 있을 수도,..

[Data조회과정과 생성과정]

1. DATA 조회 과정1. 사용자가 Data를 조회해달라고 웹 페이지에 URL 요청2. 서버의 컨트롤러가 요청을 받아 해당 URL에서 찾으려는 DATA정보를 Repository에 전달3. Repository는 정보를 가지고 DB에 데이터 조회 요청4. DB는 해당 데이터를 찾아 이를 Entity로 반환5. 반환된 Entity는 모델을 통해 뷰 템플릿으로 전달6. 최종적으로 결과 뷰 페이지가 완성돼 화면에 출력 2. DATA 생성과정 ** 여기서는 서비스 로직은 담아내지 않았습니다. **데이터의 흐름을 코드 하나하나 보면서 이해해보자.1. html의 submit를 누르면 form 요소에 있는 name 속성들이 데이터로 전송된다.- name 속성이 Key 역할을 하여 폼에서 데이터를 서버로 전송해준다.2...

[JPA] 개념

DB에 데이터를 기록하기 위해서는 자바언어로는 이해하지 못한다.DB는 SQL이라는 언어를 사용하기 때문이다. DB에 어떻게 자바 언어를 내릴 수 있나? 바로 JPA(JAVA PERSISTENCE API) - 자바언어로 DB명령을 내리는 도구가 필요하다.데이터를 객체 지향적으로 관리할 수 있게 해준다.JPA 의 핵심 도구는 Entity와 Repository가 있다.Entity는 자바객체를 DB가 이해할 수 있게 만든 것으로, 이를 기반으로 테이블이 만들어진다.Repository는 엔티티가 DB 속 테이블에 저장 및 관리될 수 있게 하는 인터페이스이다.그리하여, 과정을 얘기하자면 DTO를 Entity로 변환하고 이를 Repository를 이용해 Entity를 DB에 저장하게 하여야한다.항상 내 것으로 만들기..

[DTO 실습]

컨트롤러에서 폼 데이터를 받기 위해서는 DTO(Data Transfer Object)에 담아 받는다. 웹페이지 만드는 순서에 대해서 얘기를 해보겠다. 1. 뷰 페이지를 만든다.- Form 태그의 action 속성으로 데이터를 어디보낼지 결정하고- method 설정으로 어떻게 보낼지 정의할 수 있다. (get or post)2. 컨트롤러를 만든다.- PostMapping 방식으로 URL 주소를 연결한다.3. 전송받은 데이터를 담아둘 객체인 DTO를 생성한다.4. 컨트롤러에서 폼 데이터를 전송받아서 해당 데이터를 DTO에 담는다.   1. 뷰페이지를 만든다.{{>layouts/header}} 제목 게시물 작성 submit {{>l..

[MVC패턴] 기본 개념

뷰 템플릿과 MVC 패턴 뷰 템플릿은 여러사용자를 위해서 여러개의 View를 만드는 것이 아닌, View를 하나의 Template로 만들고 여기에 변수를 삽입하는 식으로 보여주기 위한 기술이다.즉, 웹페이지(View)를 하나의 틀(Templete)로 만들고 여기에 변수를 삽입해 서로 다른 페이지를 보여주기 위함이다.  Spirng Boot에서는 뷰 템플릿을 만드는 도구로 Mustache(머스테치)라는 도구가 있다.뷰 템플릿을 실행하기 위해서는 역할을 분담하기 위한 동작 기법인 MVC 패턴을 알아야한다.화면을 담당하는 View 에는 컨트롤러와 모델이라는 두 개념이 있다.Controller는 클라이언트의 요청에 따라 서버를 처리하는 역할.Model은 데이터를 관리하는 역할이다.화면을 보여주고(View) 클라..

[spring initializr] 시작 세팅

이전 게시물에서 알려줬다시피,스프링 부트는 스프링스타터 라는 개념을 통하여 기본적인 의존성들을 미리 설정해 놓고, 선택만 하면 되게 만들어줌. 그리하여 Spring initializr 를 통해 웹 브라우저에서 쉽게 프로젝트가 생성 가능함. 1. Project- Maven project : Java 빌드 도구인 Maven을 사용하여 프로젝트 빌드 + Maven이란 의존성 관리와 빌드 자동화 도구- Gradle project: Java 빌드 도구인 Gradle 사용하여 프로젝트 빌드 + gradle은 더 유연하고 강력한 빌드 시스템 제공 2. Language - java: 기본적으로 지원하는 언어- kotlin: JVM 기반 언어, java와 호환됨. Spring이 코틀린 공식적으로 지원함- Groovy: ..