Back-end 16

Spring Boot 가이드 (서버 정상 가동 여부 체크 포인트)

Flask나 FastAPI 위주로 사용하다 Spring boot를 학습하고 프로젝트를 진행하다보니 헷갈리는 부분이 많았다.서버 가동관련 확인할때 체크해야 할 부분은 다음과 같다. ✅ 서버 정상 기동 여부 체크 포인트1. Spring Boot 로고와 버전 출력 → Spring Boot가 제대로 시작됐다는 의미 2. 내장 Tomcat 서버 시작 로그 → Tomcat이 8080 포트에서 정상적으로 뜸 3. DB 연결 성공 (HikariCP) → MySQL 연결 완료 4. JPA 테이블 관련 쿼리 실행 → JPA가 Entity에 맞게 테이블 스키마를 자동으로 수정 5. 애플리케이션 시작 완료 → 최종적으로 Spring Boot 애플리케이션 실행 완료.

create data with JPA

DB에 데이터를 기록하려면, 서버에서 데이터베이스에 데이터를 저장해달라고 말해야하는데, 데이터베이스는 자바를 알지 못한다. 이를 위한 도구가 바로 JPA 이다. 즉 JPA는 자바언어를 디비가 이해할 수 있게하고, 데이터관리에 편리한 여러 기능을 제공한다. entity -> 자바 객체를 디비가 이해할 수 있게 규격이고, 엔티티는 리파지토리라는 일꾼을 통해 DB에 전달되고 처리된다( DB table에 처리). 이 과정은 우선, 1. dto를 entity로 변환한다. 기본 프로젝트 안에 entity패키지를 만들고, 그안에 Article이라는 클래스를 만들어준다. @Entity //DB 가 해당 객체를 인식 가능! 엔티티라는 어노테이션을 붙혀줘야 데이터베이스가 해당 객체를 인식가능하다. @Column priva..

Form data 주고받기, JPA로 데이터 생성하기 ( 게시판 만들기 시작 )

지금까지 배운것과 함께 CRUD 정도를 구현할 수 있는 게시판 만들기를 구현해보고자 한다. CREATE 를 위해서 폼 태그를 알아보아야 한다. 에서 어디로 어떻게 보낼지를 적어 전송되고 컨트롤러는 이를 객체에 담아 받는다. 이 때 폼 데이터를 받는 객체를 DTO 라고 한다. 사용자의 입력이 DB 라는 창고에 저장이 되야한다. 우선 데이터를 받아서 확인하는 것부터 연습해보자, templates 안에 article이라는 폴더를 만들어 그 안에 게시판 글을 입력 받는 new.mustache를 작성, 입력폼을 간단하게 만들고, 이를 제어할 수 있는 컨트롤러를 만든다. 부트스트랩으로 간단하게 받아와서 입력창을 만들어주었다. form 태그를 던질 때 두가지를 적어줘야하는데, 어디로 보낼지 / 어떻게 보낼지 이다. ..

MVC 역할과 실행흐름, 뷰 템플릿과 레이아웃

Server => Model / View / Controller 의 유기적 역할을 한다. Controller -> Client 로부터 요청을 받고, View -> 최종 페이지를 만들어주고, Model -> 최종 페이지에 쓰일 데이터들을 뷰에게 전달한다. 결국 요청을 컨트롤러가 받고(GetMapping 을 통해) 메서드를 수행하면서 보여줄 페이지를 리턴한다. 보여줄 페이지에서 사용할 변수는 모델을 통해서 등록한다. 뷰 템플릿은 보통 header / content / footer 로 이루어져있고, 스프링 부트에서는 이를 {{>layouts/header}} titles bodys... Submit {{>layouts/footer}} 이렇게 표현할 수 있다. 여기서 {{}} 안에 파일명을 채워주면 그 파일 전체..

Web service의 동작원리와 View template

웹서비스는 기본적으로 클라이언트(컴퓨터)와 서버(서비스 제공프로그램)의 요청(request)과 응답(response)으로 이루어진다. localhost:8080 여기서 localhost 는 주소를 의미한다.( 내 컴퓨터의 주소) 8080 은 port 번호인데, 방 정도로 해석하면 된다. 즉 우리집의 8080 방으로 연결하겠다는 것을 의미하고 Tomcat started on port 8080 은 이 스프링이 8080에서 실행된다는 것을 의미한다. 만약 localhost:8080/hello.html 이라고 작성하면 이 스프링은 기본적으로 src -> main -> resources -> static 에서 파일을 찾는다. 그 안에서 'hello.hmtl'의 파일을 찾아 응답해준다. View Templates ..

Spring boot, 개발환경 세팅

우선 자바 웹 프레임워크를 처음 써보는데, spring이 아닌 바로 spring boot를 하는게,, 맞는지는 모르겠지만,,,! 열심히 배워 base를 익혀나가고자 한다. 개발환경은 세팅에 있어 총 3가지가 필요했다. JDK / Intellij / Spring boot 모두 설치하여, 기본 프로젝트(?) 의 구조를 파악하였고, src -> main -> java -> project class(기본 패키지) 안에 controller 패키지를 만들어주었다. 이 패키지 안에 컨트롤러라는 자바 패키지를 만들어 mustache 페이지를 볼 수 있도록 연결해주는 코드를 작성해준다. @------ 는 식으로 작성을 하면 알아서 import 해주는 식으로 동작이 되고, 메서드에 리턴값으로 mustache파일의 이름만 ..

로그인 / 회원가입 구현해보기 (7) DB를 사용하여 로그인/회원가입 구현

이전까지 DB없이 JSON 파일형태로 로그인 / 회원가입을 구현해보았다. 여기까지도 나름대로 WAS에 속하고, 의미있는 작업이지만 매번 좀 더 제대로 된 시스템을 위해 AWS의 RDS를 이용하여 MYSQL 데이터베이스를 만들었고, 이를 연동해서 사용하고자 한다. 먼저 db.js를 통해 데이터베이스를 설정해줘야한다. npm i -s mysql 명령어를 통해 mysql을 설치해주고, db 변수를 만들어(mysql.create.Connection) 호스트와 유저 패스워드 데이터베이스명을 설정해준 뒤, 연결해주고 export 해주면 외부에서 이 데이터베이스를 사용할 수 있게 된다. const mysql = require("mysql"); const db = mysql.createConnection({ host:..

Back-end/Node.js 2022.06.13

로그인 / 회원가입 구현해보기 (6) AWS DB만들기(한글설정), RDS와 변동 및 워크벤치 이용하기

저번시간 까지 DB 없이 로그인 / 회원가입을 파일 형식으로 구현하였고, 이제는 AWS의 훌륭한 무료DB 서비스( 잘못하면 과금 ㅠ ) 를 이용하여, DB를 연동한 로그인 / 회원가입 기능구현을 준비하려고 한다. 먼저 적당한 RDS 인스턴스를 만들어주고, 파마리터 그룹 설정도 char 부분을 utf-8로 맞추어 준뒤 이 인스턴스의 디폴트 값으로 만들어준다. 그리고 커맨드 창을 열어 mysql -h 엔드포인트 -u 사용자이름 -p를 한 뒤, 비밀번호를 치고 들어가면 연결된 mysql이 시작되는데, 이게 뭔일인가,,, 2003 오류가 뜬다. 이때는 AWS에 보안그룹에 들어가 인바운드 규칙 편집을 통해 수정한 뒤 다시 들어가면 된다.. https://code4human.tistory.com/74 나는 여길 참..

Back-end/Node.js 2022.06.05

로그인 / 회원가입 구현해보기 (5) 회원가입화면 만들기, 요청, 라우팅 구현하기 (DB 없이 구현)

회원가입 (register) 구현은 그리 어렵지 않았다. 먼저 login.ejs와 비슷한 형태인 register.ejs를 만들어주고, input으로 이름과 비밀번호 확인까지 받아주는 형태의 html 파일을 생성해주었다. 그 후 register.js 파일을 login.js 파일 형태로 만들어주되, 이름(name)을 추가해주고, 회원가입 도중 아이디가 입력되지 않은 경우와 비밀번호 두개가 틀린 경우 바로 alert으로 return해주는 if문을 추가해준다. function register() { if (!id.value) return alert("아이디를 입력해주십시오."); if (psword !== confirmPsword) return alert("비밀번호가 일치하지 않습니다."); const req ..

Back-end/Node.js 2022.06.03

로그인 / 회원가입 구현해보기 (4) User data 모델링, 서버 응답 데이터처리, 로그인 화면 꾸미기

두번째 학습인데도, 사실 너무 어렵다... 이번엔 User data (회원정보 id, psword, name, 등)를 만들어주고, 이를 모델링하여 User.js 와 UserStorage.js 에 담아준다. 문자 그대로 UserStorage는 "use strict"; class UserStorage { static #users = { id: ["baaams", "bodymind", "starjieun"], psword: ["1234", "123456", "12345678"], name: ["박희범", "박우상", "이지은"], }; static getUsers(...fields) { const users = this.#users; const newUsers = fields.reduce((newUsers, ..

Back-end/Node.js 2022.06.01