- [ 정리/Java ][자바] 아스키코드2023-11-13 04:20:56대문자 A~Z 65~90 소문자 a~z 97~122 0~9 48~57
- [ 정리/Spring ][Spring] 스프링 DB 1편 2) 커넥션 풀과 데이터소스 이해2023-11-12 09:21:59스프링 DB 1편 데이터 접근 핵심 원리 Session 2 커넥션 풀과 데이터소스 이해 1. 커넥션 풀 이해 1) 데이터베이스 커넥션 획득 과정 1. 애플리케이션 로직은 DB 드라이버를 통해 커넥션을 조회 2. DB 드라이버는 DB와 TCP/IP 커넥션을 연결, 이 과정에서 3-way-handshake 같은 TCP/IP 연결을 위한 네트워크 동작 발생 3. DB 드라이버는 커넥션이 연결되면 ID, PW와 기타 부가 정보를 DB에 전달 4. DB는 ID, PW로 내부 인증을 완료하고 내부에 DB 세션 생성 5. DB는 커넥션 생성이 완료되었다고 응답을 보냄 6. DB 드라이버는 커넥션 객체를 생성해 클라이언트에 반환 ▶ 커넥션을 획득하는 과정이 복잡하고 시간이 많이 소모, DB는 물론이고 애플리케이션 서버..
- [ 정리/Spring ][Spring] 스프링 DB 1편 1) JDBC 이해2023-11-11 09:09:51스프링 DB 1편 데이터 접근 핵심 원리 Session 1 JDBC 이해 1. 프로젝트 생성 1) 프로젝트 생성 https://start.spring.io/ 스프링 부트 3.x 버전부턴 자바 17 이상을 사용 2) 프로젝트 설정 build.gradle에 추가 //테스트에서 lombok 사용 testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' 2. H2 데이터베이스 설정 1) H2 데이터 베이스 설치 https://www.h2database.com/html/main.html 스프링 부트 버전에 맞춰서 다운로드 3. JDBC 이해 1) 애플리케이션 서버와 DB 애플리케이션을 개발할 때 중요한 ..
- [ 정리/Spring ][Spring] 스프링 MVC 1편 7) 스프링 MVC 웹 페이지 만들기(2)2023-11-10 09:22:15스프링 MVC 1편 백엔드 웹 개발 핵심 기술 Session 7 스프링 MVC 웹 페이지 만들기 7. 상품 등록 폼 1) 속성 변경 th:action th:action 상품 등록 폼의 URL과 실제 상품 등록 처리하는 URL을 똑같이 맞추고 HTTP 메서드로 두 기능 구분, 하나의 URL로 등록 폼과 등록 처리를 깔끔하게 처리 가능 상품 등록 폼 Get - /basic/items/add 상품 등록 처리 POST - /basic/items/add 8. 상품 등록 처리 - @ModelAttribute 1) @ModelAttribute @ModelAttribute 이용해 한번에 처리 @PostMapping("/add") public String addItemV2(@ModelAttribute("item") It..
- [ 정리/Spring ][Spring] 스프링 MVC 1편 7) 스프링 MVC 웹 페이지 만들기(1)2023-11-09 09:31:54스프링 MVC 1편 백엔드 웹 개발 핵심 기술 Session 7 스프링 MVC 웹 페이지 만들기 1. 프로젝트 생성 1) 프로젝트 생성 https://start.spring.io/ 스프링 부트 3.x 버전부턴 자바 17 이상을 사용 2. 요구사항 분석 1) 상품 도메인 상품 ID, 상품명, 가격, 수량 2) 상품 관리 기능 상품 목록, 상품 상세, 상품 등록, 상품 수정 3) 서비스 제공 흐름 디자이너 : 요구사항에 맞도록 디자인하고, 디자인 결과물을 웹 퍼블리셔에게 넘김 웹 퍼블리셔 : 디자이너에게 받은 디자인을 기반으로 HTML, CSS를 만들어 개발자에게 제공 백엔드 개발자 : 디자이너, 웹 퍼블리셔를 통해 HTML 화면이 나오기 전까지 시스템을 설계, 핵심 비즈니스 모델 개발하다가 HTML이 나오..
- [ 정리/Spring ][Spring] 스프링 MVC 1편 6) 스프링 MVC 기본 기능(2)2023-11-08 09:43:37스프링 MVC 1편 백엔드 웹 개발 핵심 기술 Session 6 스프링 MVC 기본 기능 8. HTTP 요청 파라미터 - @ModelAttribute 1) @ModelAttribute 요청 파라미터를 받아서 필요한 객체를 만들고 객체에 값을 넣어주어야 한다 스프링 mvc는 이 과정을 자동화해주는 @ModelAttribute 기능을 제공한다. 2) HelloData @Data public class HelloData { private String username; private int age; } 롬복 @Data 사용하면 @Getter, @Setter, @ToStirng, @EqualsAndHashCode, @RequiredArgsConstructor를 자동으로 적용 3) modelAttributeV1 p..
- [ 정리/Spring ][Spring] 스프링 MVC 1편 6) 스프링 MVC 기본 기능(1)2023-11-07 09:23:12스프링 MVC 1편 백엔드 웹 개발 핵심 기술 Session 6 스프링 MVC 기본 기능 1. 프로젝트 생성 1) 프로젝트 생성 스프링 부트 스타터 사이트에서 생성 https://start.spring.io/ Packaing - Jar 선택 Dependencies - Lombok, Spring Web, Tyymeleaf 추가 이전 포스팅 참고해서 세팅 ▶ Spring 프로젝트 생성 2. 로깅 간단히 알아보기 1) 로깅 라이브러리 실무에서는 System.out.println() 같은 시스템 콘솔을 사용해 출력하지 않고 로그 라이브러리를 사용해 로그 출력 스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리가 함께 포함 스프링 부트 로깅 라이브러리는 기본으로 SLF4J, Logback을 사용한다. ..
- [ 정리/Spring ][Spring] 스프링 MVC 1편 5) 스프링 MVC 구조이해2023-11-06 09:46:14스프링 MVC 1편 백엔드 웹 개발 핵심 기술 Session 5 스프링 MVC 구조이해 1. 스프링 MVC 전체 구조 1) 스프링 MVC 구조 2) DispatcherServlet 구조 살펴보기 스프링 MVC도 프론트 컨트롤러 패턴으로 구현되어 있다. 스프링 MVC의 프론트 컨트롤러가 DispatcherServlet 스프링 MVC의 핵심이다. 3) DispatcherServlet 서블릿 등록 DispatcherServlet도 부모 클래스에서 HttpServlet을 상속받아 사용, 서블릿으로 동작 스프링 부트는 DispatcherServlet을 서블릿으로 자동 등록하면서 모든 경로에 대하여 매핑 → 더 자세한 경로가 우선순위가 높음, 그래서 기존에 등록한 서블릿도 함께 동작 4) 요청 흐름 서블릿 호출되면..
- [ 정리/HTTP ][HTTP] HTTP 웹 기본 지식 8) HTTP 헤더 2 - 캐시와 조건부 요청2023-11-05 09:29:15HTTP 웹 기본 지식 Session 8 HTTP 헤더 2 - 캐시와 조건부 요청 1. 캐시 기본 동작 1) 캐시가 없을 때 ▶ 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드한다. ▶ 네트워크는 비싸고 느림, 브라우저 로딩 속도도 느림 → 느린 사용자 경험 첫 요청에서 1.1m 용량의 응답을 받게 됨 똑같은 요청을 재요청했을 때 1.1m 용량의 응답을 다시 받게됨 2) 캐시 적용 요청이 들어오면 1.1m 용량의 응답을 보내면서 캐시 유효시간을 지정 브라우저 캐시에 60초간 유효한 상태로 응답결과 저장 2-1) 두 번째 요청 두 번째 재요청 시 캐시 유효시간을 검증하고 유효하다면 캐시에서 직접 조회해 브라우저에서 결과 로딩 ▶ 캐시 덕분에 유효시간 동안은 네트워크를 사용하지 않아도 됨 ..
- [ 정리/HTTP ][HTTP] HTTP 웹 기본 지식 7) HTTP 헤더1 - 일반 헤더2023-11-04 09:59:06HTTP 웹 기본 지식 Session 7 HTTP 헤더 1 - 일반 헤더 1. HTTP 헤더 개요 1) HTTP 헤더 2) 용도 HTTP 전송에 필요한 모든 부가정보 예) 메시지 바디 내용, 크기, 압축, 인증 등 표준 헤더 필드 많음, 필요시 임의의 헤더 추가 가능 3) 분류 - RFC2616 폐기됨 General 헤더 : 메시지 전체에 적용되는 정보 Connection: close Request 헤더 : 요청 정보 User-Agent: Mozilla/5.0 Response 헤더 : 응답 정보 Server: Apache Entity 헤더 : 엔티티 바디 정보 Content-Type: text/html, Content-Length: 3423 message body : 메시지 본문은 엔티티 본문을 전달하는..
- [ 정리/Spring ][Spring] 스프링 MVC 1편 4) MVC 프레임워크 만들기2023-11-03 10:53:43스프링 MVC 1편 백엔드 웹 개발 핵심 기술 Session 4 MVC 프레임워크 만들기 1. 프론트 컨트롤러 패턴 소개 1) 프론트 컨트롤러 패턴 소개 공통을 하나에 모으고 이 프론트 컨트롤러를 통해 A, B, C 호출 결정 2) 프론트 컨트롤러 패턴 특징 프론트 컨트롤러 서블릿 하나로 클라이언트 요청받음 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출 공통 처리가 가능하고 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨 3) 스프링 웹 MVC와 프론트 컨트롤러 패턴 스프링 웹 MVC의 핵심도 프론트 컨트롤러 DispatcherServlet이 프론트 컨트롤러 패턴으로 구현되어 있음 2. 프론트 컨트롤러 도입 - v1 1) v1 구조 클라이언트가 HTTP 요청을 하면 프론트 ..
- [ 정리/HTTP ][HTTP] HTTP 웹 기본 지식 6) HTTP 상태코드2023-11-03 09:48:43HTTP 웹 기본 지식 Session 6 HTTP 상태코드 1. HTTP 상태코드 소개 1) 상태코드 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 1xx Infromational : 요청이 수신되어 처리 중, 잘 사용하지 않음 2xx Successful : 요청 정상 처리 3xx Redirection : 요청을 완료하려면 추가 행동이 필요 4xx Client Error : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음 5xx Server Error : 서버 오류, 서버가 정상 요청을 처리하지 못함 2) 모르는 상태 코드가 나타나면? 클라이언트가 인식할 수 없는 상태 코드를 서버가 반환하면 클라이언트는 상위 상태코드로 해석해서 처리 새로운 상태 코드가 추가되어도 클라이..