2024/10 8

젠킨스 서버 , 프론트 서버 , 백엔드 서버 3개 서버 구조

서버사이드 랜더링 = 타임리프, JSP클라이언트 사이드 랜더링 = 리액트우선, 정적 컨텐츠란, HTML css js 파일처럼 항상 똑같은 내용을 불러오는 파일을 말한다.정적 = 동일한 요청이면 동일한 응답을 한다. (html 껍데기 내용은 항상 같음)이때 자바스크립트에서 백엔드 서버에 ajax, axios fetch 같은 요청을 하면 백엔드 서버에 게시글 데이터를 동적으로 받아온다. 서버에 존재하는 게시글 데이터는 변할 수 있으므로 동적 컨텐츠라 부른다.동적 = 동일한 요청이여도 다른 응답을 할 수 있다.  이러한 데이터를 동적 컨텐츠(DB에서 json 형태로 데이터만 받아오는 것)라고 한다. 이제부터는 HTML css js 같은 정적 컨텐츠를 받아오는 것과 서버에서 DB를 거쳐서 json 데이터를 받아..

카테고리 없음 2024.10.31

Day 77 - Homework, React 비동기 통신

데이터 읽기, 쓰기 웹 스토리지 HTML5에서 추가된 기술로 로컬스토리지와 세션스토리지로 구분된다. 특징 - 웹 스토리지는 Key와 Value 형태로 이루어졌다. - 웹 스토리지는 클라이언트에 대한 정보를 저장한다. - 웹 스토리지는 로컬에만 정보를 저장하고 쿠키는 서버와 로컬에 정보를 저장한다. (쿠키는 서버에 저장된다기보단, 클라이언트와 서버 간의 통신에 이용된다는 의미이다.) 종류 로컬스토리지 (localStorage) - 클라이언트에 대한 정보를 영구적으로 저장 세션스토리지 (sessionStorage) - 세션 종료 시(브라우저 닫을 경우) 클라이언트에 대한 정보 삭제 장점 - 서버에 불필요하게 데이터를 저장하지 않는다. (백엔드에 절대로 전송되지 않는다.) - 저장 가능한 데이터의 용량이 크다..

카테고리 없음 2024.10.25

TasteMasters API 문서

데이터만 처리하는 경우에는 /api/*로 시작하고JSP 페이지를 요청하는 경우에는 /page/*로 정합시다.위의 규칙을 만드는 사람이 마음대로 정하기 나름회원 가입 JSP 페이지(현식)URL : /page/member/joinMethod : GETDescription : 회원 가입 JSP 페이지를 로드합니다.Request Body :Response Code :Response Body : 회원 가입 JSP 콘텐츠로그인 JSP 페이지(재영)URL : /page/member/loginMethod : GETDescription : 로그인 JSP 페이지를 로드합니다. Request Body :Response Code :Response Body : 로그인 JSP 콘텐츠로그인 요청 (현식)URL : /api/memb..

카테고리 없음 2024.10.13

서버에 이미지 저장되는 방식

우선,가상 폴더(경로)와 실제 폴더(경로)가 무엇일까? 가상 폴더는 외부에 노출해도 되는 폴더 경로이다. 실제 파일이 저장되는 위치와 다르다. 프로젝트에서 API를 설계할 때, /page/index로 하는 것도 일종의 가상 경로이다.실제 index.html 파일의 경로가 아니다. 가상 폴더의 위치에는 파일이 저장되지 않고, 실제(realPath) 폴더 경로에 저장이 된다. 즉, 가상 폴더에는 이미지 파일이 존재하지 않으며, 실제 폴더 경로에 이미지가 존재한다. 왜 이런 방식을 쓸까? 이미지가 있는 폴더를 직접적으로 노출하면 위험하니 보안상의 이유이다.jsp , html 파일의 위치를 노출하지 않고, 서블릿을 통해 API 요청으로 불러오도록 하는 것과 동일한 이유 이미지를 요청하는 클라이언트는 실제 위치를..

카테고리 없음 2024.10.11

DAO 인터페이스와 Mybatis 매핑 과정

0. SpringConfig에서 DataSource , SqlSessionFactory , SqlSession 필요한 설정을 먼저 해준다. ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★수정 ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ 1. @MapperScan() 안에 패키지를 스캔하면서 @Mapper 어노테이션을 찾는다. 수정 후 -> @MapperScan 이랑 @Mapper는 하나의 흐름이 아니라 각각 독립된 다른 방법임 @MapperScan으로 패키지를 전체를 한번에 읽거나 or @Mapper가 붙은 거를 각각 전부 찾거나 or XML로 설정해주거나 3가지 방법이 존재한다. ① XML 기반 applicationContext.xml에 ② @Mapper 기반 @Mapper public in..

카테고리 없음 2024.10.10

스프링MVC - DispatcherServlet이 HTTP 요청을 처리하는 과정

DispatcherServlet는 비유적으로 설명하자면 학교 행정실(중앙 처리 방식)과 같다고 할 수 있다. 학생 →  학교 행정실(중심)에 문의를 하면, 학교 행정실(중심) → 교수님에게 문의를 하고,교수님 → 학교 행정실(중심) 에게 답변을 통보하고다시 학교 행정실(중심) → 학생들에게 결과를 통보한다. 즉, 가장 중심에 DispatcherServlet이 있고 DispatcherServlet이(View, ViewResolver, Controller, HandlerMapping)와 각각 상호 작용하는 방식으로 동작한다..! ViewResolver와 View 는직접적으로 상호 작용하는 것이 아니다.  반드시 DispatcherServlet를 거쳐 가야만 한다.어렵게 생각하지말고 DispatcherServ..

카테고리 없음 2024.10.08

Spring AOP 실행 흐름

AOP란? 메소드마다 시작 전/후로 공통적으로 중복해서 들어가는 코드를 따로 분리하자는 것!! 예를 들어, 어떤 사용자가 무엇을 했는지 서버에 로그를 남기기, DB 연결과 해제(getConnection, close()), 메소드 시작과 종료까지 걸리는 실행 시간 측정 등등 LoggingAdvice는 시작 전과 후로 공통된 로직[로그 남기기]을 남기는 클래스로 쉽게 이해할 수 있을 것이다. 오늘 수업 중 가장 이해하기 난해한 프록시 객체에 대해서.. 프록시 객체는 비유적으로 생각해서 대리인, 비서(프록시) 라고 보면 된다. 회장(핵심 로직 = MessageBeanImpl)님을 만나기 위해서는 우선적으로 비서를 거쳐가야 할 것이다! 비서는 그 손님이 회장과 만나기 위해 적절한 절차(사전 작업)가 필요한지 판..

카테고리 없음 2024.10.04

Spring Bean에 대한 이해

들어가기 앞서.. 추상적이다 vs 구체적이다의 차이점이 뭘까? 추상적이다는 구현에 대한 세부 사항을 감추고 기능에 대한 명시를 통해서 이해하는 것이고 구체적이다는 위에 대한 디테일한 구현에 대한 세부적인 로직을 말하는 것이다. 예를 들어, 커피 머신을 생각해보자. 추상적 = 커피 뽑기 버튼(이 버튼을 누르면 믹스커피가 뽑힌다.) 구체적 = 뒷단인 기계 안에서 일어나는 모든 연산들(무슨 커피인지, 설탕은 얼만큼인지, 물의 온도는 몇도인지,결제는 어떻게 되는지..) API 문서도 서버에서 제공하는 기능을 추상화를 하는 것과 같습니다. 추상화를 왜 하는 걸까요? 그걸 갖다 쓰는 사람이 쉽게 쓸 수 있게 복잡성을 낮추려고요. 커피를 뽑아 먹는 사람이 기계 내부 구현을 알 필요가 있을까요..? /api/user/..

카테고리 없음 2024.10.02