[✍혼자서 스프링 공부하기] 3일차 - 웹 MVC 개발(회원 관리 예제)

    앞서 구성한 MVC 패턴에 맞게 회원 가입과 조회 기능을 개발하였다. https://github.com/jiholee0/hello-spring GitHub - jiholee0/hello-spring: SPRING 공부 레포지토리 SPRING 공부 레포지토리. Contribute to jiholee0/hello-spring development by creating an account on GitHub. github.com Controller (controller/MemberController.java) package hello.hellospring.controller; import hello.hellospring.domain.Member; import hello.hellospring.service.Mem..

    [✍혼자서 스프링 공부하기] 3일차 - 스프링 빈과 의존관계

    https://github.com/jiholee0/hello-spring GitHub - jiholee0/hello-spring: SPRING 공부 레포지토리 SPRING 공부 레포지토리. Contribute to jiholee0/hello-spring development by creating an account on GitHub. github.com [스프링 빈을 등록하는 2가지 방법] 1. 컴포넌트 스캔과 자동 의존관계 설정 2. 자바 코드로 직접 스프링 빈 등록 실무에서는 주로 정형화된 컨트롤러, 서비스, 리포지토리 같은 코드는 컴포넌트 스캔을 사용한다. 그리고 정형화 되지 않거나, 상황에 따라 구현 클래스를 변경해야 하면 설정을 통해 스프링 빈으로 등록한다. 1. 컴포넌트 스캔과 자동 의존관계 ..

    서블릿(Servlet)과 JSP(Java Server Pages)의 개념 및 차이

    Servlet과 JSP는 Java EE의 여러 기술 중 하나이다. Java EE(Enterprise Edition)란? 기업에서 사용하는 프로그램을 만드는 데 적합한 자바 개발 버전을 의미하며, Java EE의 스펙에는 Servlet, JSP, EJB(Enterprise Java Beans) 등이 있다. 참고 : https://doozi316.github.io/java/2020/07/01/WEB20/ 1. Servlet 서블릿은 서버에서 웹페이지 등을 동적으로 생성하거나 데이터 처리를 수행하기 위해 자바로 작성된 프로그램이다. 즉, 서버에서 동적으로 요청과 응답을 처리할 수 있는 API들이라고 할 수 있다. 가장 큰 특징은 Java 코드 안에 HTML 태그가 삽입되며, 자바 언어로 되어있다는 것이다. 예..

    [✍혼자서 스프링 공부하기] 2일차 - 회원 관리 예제로 백엔드 개발해보기

    https://github.com/jiholee0/hello-spring GitHub - jiholee0/hello-spring: SPRING 공부 레포지토리 SPRING 공부 레포지토리. Contribute to jiholee0/hello-spring development by creating an account on GitHub. github.com 1. 비즈니스 요구사항 정리 2. 회원 도메인과 리포지토리 만들기 3. 회원 리포지토리 테스트 케이스 작성 4. 회원 서비스 개발 5. 회원 서비스 테스트 1. 비즈니스 요구사항 정리 - 데이터 : 회원 ID, 이름 - 기능 : 회원 등록, 조회 웹 애플리케이션 계층 구조 - 컨트롤러 : 웹 MVC의 컨트롤러 역할 - 서비스 : 핵심 비즈니스 로직 구현 ..

    [✍혼자서 스프링 공부하기] 2일차 - 스프링 웹 개발 기초(정적 컨텐츠, MVC와 템플릿 엔진, API)

    1. 정적 컨텐츠 : Welcome Page처럼 서버에서 별도의 동작 없이 파일을 있는 그대로 전송 2. MVC와 템플릿 엔진 : 동적 컨텐츠를 전송 3. API : JSON 데이터 포맷으로 전송 1. 정적 컨텐츠 말 그대로 순수 HTML로 이루어진 파일을 서버가 따로 렌더링 없이 사용자에게 웹브라우저를 통해 보여주는 것이다. Spring에서는 정적 콘텐츠를 /static 폴더에서 다룬다. 1. 사용자가 정적 페이지(hello.html)를 요청 2. Spring Boot의 내장 톰켓 서버가 이를 Spring Container에게 전달 3. Spring Container는 페이지에 해당하는 Controller가 있는지 확인 4. 없다면 resources 폴더의 static/hello.html이 있는지 찾고..

    HTTP와 HTTPS

    브라우저의 요청과 서버의 응답 사이의 데이터 교환 규약을 '프로토콜(protocol)'이라고 합니다. 웹에서는 HTTP(Hyper Text Transfer Protocol), HTTPS의 방식으로 데이터를 주고받습니다. (HTTPS는 HTTP의 보안 강화 버전입니다.) 프로토콜에 대해 자세히 알고 싶다면? 프로토콜 정의, 기본 요소, 종류, 기능 📌 프로토콜이란? 프로토콜(Protocol)은 컴퓨터나 네트워크 장비가 서로 통신하기 위해 미리 정해 놓은 약속 또는 규약을 말한다. 🌟 프로토콜의 기본 요소 구문(Syntax) : 전송하고자 하는 데이터 easyhomputer.tistory.com 📌 HTTP(Hyper Text Transfer Protocol) HTTP(Hyper Text Transfer P..

    [✍혼자서 스프링 공부하기] 1일차 - 스프링 프로젝트를 윈도우 cmd 창에서 빌드하고 실행하기

    필자는 Window를 사용하므로 스프링 프로젝트를 빌드하고 실행해보기 위해서 Window PowerShell을 사용했다. 먼저 cd 명령어를 이용하여 프로젝트 디렉터리로 이동한다. 그리고 다음 명령어를 순차적으로 입력한다. ./gradlew build # 빌드 cd build/libs java -jar hello-spring-0.0.1-SNAPSHOT.jar # jar 파일 실행 그러면 쨔쟌~

    [✍혼자서 스프링 공부하기] 1일차 - View 설정

    스프링 프로젝트를 생성하고 난 직후에는 프로젝트를 실행한 후 localhost에 접속하면 Error 페이지만 뜬다. (이전 게시물 참고) 이번에는 에러 페이지가 아닌 실제 내가 작성한 페이지를 띄워보려고 한다. 스프링 부트에서는 Welcome Page 기능을 제공하는데, src/main/resources/static/index.html에 원하는 html 코드를 작성하면 된다. 공식 문서를 읽어보면, http://localhost:8080으로 접속할 때 static에서 자동으로 index.html을 찾아 띄워준다고 한다. (https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/spring-boot-features.html#boot-fea..

    [✍혼자서 스프링 공부하기] 1일차 - 스프링 프로젝트 생성

    스프링 공부를 위해서 스프링 부트 스타터를 활용하여 스프링 프로젝트를 생성했다. https://start.spring.io 사이트로 가서 본인에게 맞는 프로젝트 환경을 선택하고 원하는 dependencies를 추가한 후 "GENERATE" 버튼을 누르면 끝이다. 진짜 너무 간단하다.. > Project: Gradle - Groovy Project > Spring Boot: 2.7.10 > Language: Java > Packaging: Jar > Java: 8 > Dependencies: Spring Web, Thymeleaf 📌 필자는 빌드 도구로 Gradle을 선택했다. 기존에는 maven을 더 많이 사용했다고들 하는데, 필자가 spring을 공부할 때쯤에는 이미 gradle이 속도가 빠르다는 이유..

    브라우저와 서버의 관계 - 요청과 응답, GET/POST 방식, 정적/동적 데이터

    📌 Request(요청)와 Reponse(응답) 브라우저와 서버는 요청과 응답이라는 동작으로 서로 데이터를 주고 받는 관계입니다. Request : 브라우저에서 서버에게 특정한 방식으로 데이터를 요구하는 것. Reponse : 서버가 데이터를 만들어서 브라우저에게 보내는 것. 📌 GET/POST 방식 주로 브라우저는 GET/POST 방식을 이용하여 Request(요청)합니다. GET 방식 : 주소창에 직접 원하는 데이터를 적거나 링크를 클릭해서 호출 원하는 웹의 주소를 호출할 때 필요한 데이터를 "?"와 "&,="를 이용해서 같이 전송하는 방식을 말합니다. 주소와 데이터를 한 번에 같이 보내므로 단순 링크로 처리됩니다. 다시 말해, 주소 안에 데이터가 포함되어 있다는 의미입니다. GET방식은 주로 특정한..

    SpringBoot 프로젝트를 Docker로 EC2에 배포하기

    팀 프로젝트에서 SpringBoot, Docker, AWS EC2를 이용하여 서버 환경을 구성하고자 하였다. 로컬과 개발 서버로 분리하여 운영할 계획이며, 도메인 적용과 CI/CD, Swagger는 추후 도입 예정이다. (프로젝트가 끝난 다음에야 포스팅할지도..) 0. 시스템 흐름도 시스템 흐름은 위의 이미지와 같은데, Local에서 스프링부트 프로젝트를 생성하고 Docker Image를 생성한 후 이를 서버에 배포할 것이다. 1. Docker 설치 & Docker Hub 가입 각자 OS에 맞는 도커 설치법을 검색하여 로컬에 설치한다. Window 10 Education을 이용 중이므로 WSL2를 활용하여 로컬에 도커를 설치했다. (Docker Desktop 대신 intellij 플러그인을 사용해도 무관..

    JWT(JSON Web Token)

    JWT(JSON Web Token)란 인증에 필요한 정보들을 암호화시킨 JSON 토큰이다. JWT 토큰(Access Token)을 HTTP 헤더에 실어 서버가 클라이언트를 식별하는 방식으로 인증한다. JWT는 JSON 데이터를 Base64 URL-safe Encode 를 통해 인코딩하여 직렬화한 것이며, 토큰 내부에는 위변조 방지를 위해 개인키를 통한 전자서명도 들어있다. 따라서 사용자가 JWT 를 서버로 전송하면 서버는 서명을 검증하는 과정을 거치게 되며 검증이 완료되면 요청한 응답을 돌려준다. ❔ Base64 URL-safe Encode 일반적인 Base64 Encode 에서 URL 에서 오류없이 사용하도록 '+', '/' 를 각각 '-', '_' 로 표현한 것이다. 💡 JWT의 구조 JWT는 . 을..