2월, 2022의 게시물 표시

[spring] 섹션 3. 회원 관리 예제 - 백엔드 개발 > 회원 서비스 개발

[spring] 섹션 3. 회원 관리 예제 - 백엔드 개발 > 비즈니스 요구사항 정리 및 테스트 케이스 작성

이미지
implements      option + enter 비즈니스 요구사항 정리 *클래스 생성 주의사항을 꼭 잃어보시라 MemberService : 서비스 로직을 처리하는 클래스  MemberRopository : 데이터베이스에 접근하여 데이터를 컨트롤 하는 클래스(인터페이스) MemoryMemberRopository : MemberRopository(인터페이스)을 구체화 한 클래스 *프로젝트 트리 controller,domain,repository package src > main > java  >hello.hellospring 경로 밑에 존재해야합니다. *controller : view에서 호출하고자하는 함수를 정의합니다. *service :  *domain :  service에서 데이터베이스에게 데이터를 넘길때(혹은 받아올때) 사용하는 클래스 *repository : 데이터베이스와 연결하는 클래스 테스트 케이스 작성 *junit 생성한 기능을 테스트을 하기 위해선 "실행"해봐야하는데 "실행"해보려면 main함수에서 해당 함수를 호출해보거나, url을 통해 특정 페이지으로  이동해서 button을 클릭해봐야하는게 아닌가 ... 이게 얼마나 번거로운 일인가  그래서 spring-boot에는 테스트할 수 있는 기능을 제공한다. test 파일의 위치를 확인하자 MemoryMemberRepositioy클래스의 함수기능을 테스트하기 위해 테스트용 클래스를 만들어야 한다. 이때 "(테스트 대상 클래스의)이름 + Test"의 방식으로 클래스 이름을 설정한다. 그리고 (당연하게도?) 테스트 하고자하는 클래스의 인스턴스를 생성한다. 테스트 하고자 하는 함수에 "@Test"어노테이션을 붙힌다. 그리고 테스트 함수가 모두 작성 완료 되었다면  함수의 플레이 버튼을 클릭하여 "Run 'MemoryMemberRepositi....' 을 실행시키면 된다. 테스트를 진행하는데...

[spring] 섹션 2. 스프링 웹 개발 기초 > API

이미지
 *정적컨텐츠만 제외한다면 다음 두가지 경우만 고려하면된다. 1. html을 렌더링 하여 보여줄 것인가???     //view 2. 데이터만 넘겨줄 것인가???                      //api *@RequestBody  html을 렌더링하지않고, 데이터만 넘기고자할 경우 사용하는 어노테이션 입니다. http는 header, body 부분으로 나뉘어져 있는데, 해당 어노테이션을 사용할 경우, body부분을 개발자가 직접 설정할 것을 명시합니다. 데이터를 뷰에게 넘기기 위해선 객체를 넘겨야 합니다. 그전에 넘기고자하는 클래스를 생성하여 사용해야 합니다. command + n을 누르면, getter and setter을 선택할 수 있다. 객체에 넘기고자하는 데이터를 setting한 뒤 리턴하면 된다. json converter가 객체의 데이터를 json형식으로 변환해 준다. 스프링 내부에서 동작하는 원리는 아래와 같다. ㅁResolver대신 httpMessageConverter가 있음을 명심하자. 

[spring] 섹션 2. 스프링 웹 개발 기초 > MVC와 템플릿 엔진

이미지
*인텔리제이에서 내가 사용하고자하는 함수의 option을 보고자할 때 사용하는 단축키 command + p  *url을 통해 파라미터를 넘기고자할때엔 다음과 같이 한다. @RequestParam( value = "", required = true / false ) required는 반드시 파라미터를 넘거야할지 말지 설정하는 옵션인데, 디폴트는 true이다. (true = 반드시 파라미터를 넘거야한다. false = 파라미터를 넘기지 않아도 된다.) 옵션을 설정하는게 번거롭다면 "@RequestParam( "..." )" 으로만 사용해도 된다.

[spring] 섹션 2. 스프링 웹 개발 기초 > 정적 컨텐츠

이미지
*정적 컨텐츠  특정 로직을 수행하지 않는 ".html"파일을 뜻한다.  서버(tomcat)에게 파일 그대로 전달한다.  스타트 페이지는 반드시 index.html으로 설정해야한다. 그 외 정적컨텐츠를 호출하고자할 경우, url에 반드시 .html을 붙여야 한다. 스프링 부트가 ".html"파일을 찾아가는 로직은 다음과 같다. 여기서 알아두어야할 점은, 반드시 "Contorller"에서 요청한 url이 존재하는지 우선 찾는다. "controller"에서 없다면 그제서야 "resources > static"에서 ".html"을 찾는다.

[spring] 섹션 1. 프로젝트 환경설정 > View 환경설정

이미지
*static 스타트 페이지를 설정하기 위해선 "resources > static" 폴더에 ".html"파일을 생성해놓는다. (위와같이)aaaaa1.html, aaaaa2.html파일이 존재하여도 무조건 "index"이름으로 된 html을 스타트 페이지으로 사용한다. "index"파일이 존재하지 않을 경우 error페이지를 출력한다. *controller contorller를 만들기 위해선 (관리를 위한)Package을 하나 생성해야하는데, Package생성 위치는 "src > main > java > 프로젝트 패키지 > contorller"이다. controller package을 생성할때 주의 할 점은  "src > main > java" 가 아니라, "src > main > java > hello.hellospring"에 생성해야한다는 점이다. 컨트롤러를 호출하여 이동하고자 하는 "html"파일은 "src > main > resources > templates"에 위치시키면 된다.

[spring] 섹션 1. 프로젝트 환경설정 > 프로젝트 생성

이미지
 *스프링부트 프로젝트를 생성하기 위해서 아래의 링크에 접속한다. https://start.spring.io/ Group : 기명업 artpact : 프로젝트명 Name, Description, Package name은 변경하지 않는다. 추가로 Dependencies항목에 "Spring Web, Thymeleaf"을 추가한다. 추가가 완료되었다면 (아래)"GENERATE"버튼을 클릭하여 프로젝트를 다운로드 받는다. 그럼 위와 같이 프로젝트 파일이 다운로드 된다. inteliJ > open > 프로젝트 폴더 > build.gradle을 선택한다. "Open as Project"을 클릭한다. "Trust Project"버튼을 클릭한다. src > main > java > hello.hellospring > HelloSpringApplication 에서 main() 함수를 실행한다. localhost:8080 으로 접속하였을때 위 같은 에러 페이지가 나온다면 정상적으로 프로젝트 실행된 것 이다. ------------------------------------------------------------------------------------------------ *스프링 부트에서 가장 중요한 파일은 "build-gradle"이다. *본인이 gradle을 이용하여 프로젝트를 빌드하기로 설정했으므로 아래와 같은 파일이 생성된 것 이다. *gradle은 프로젝트를 실행을 도와주는 도구이다. *(프로젝트의)환경설정, 의존성, 플러그인 설정 등등을 관리하는 파일(빌드 구성 스크립트)이다.

[sql]case when then / union all

 https://gent.tistory.com/311 https://gent.tistory.com/383?category=360526 union : 중복제거 union all : 중복제거 하지 않음

임시저장

이미지
*sql editer의 font을 수정합니다. *쿼리 결과의 한글이 깨질 때 아래 옵션을 해제 합니다. 이미 정해진 JSON 포멧을 service에서 어떻게 해석하느야에 따라 요청하는 json포멧도 달라진다.