- [ 정리/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) 두 번째 요청 두 번째 재요청 시 캐시 유효시간을 검증하고 유효하다면 캐시에서 직접 조회해 브라우저에서 결과 로딩 ▶ 캐시 덕분에 유효시간 동안은 네트워크를 사용하지 않아도 됨 ..
- [ 참고/개발환경 및 오류 ][오류] Caused by: java.lang.IllegalStateException2023-11-05 01:26:07Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map '***' method Controller Mapping에 문제가 발생한 오류 @RequestMapping("/springmvc/v2/members") 나는 Mapping 이름이 중복되어 있었다..☹️
- [ 정리/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) 모르는 상태 코드가 나타나면? 클라이언트가 인식할 수 없는 상태 코드를 서버가 반환하면 클라이언트는 상위 상태코드로 해석해서 처리 새로운 상태 코드가 추가되어도 클라이..
- [ 정리/Spring ][Spring] 스프링 MVC 1편 3) 서블릿, JSP, MVC 패턴2023-11-02 22:37:51스프링 MVC 1편 백엔드 웹 개발 핵심 기술 Session 3 서블릿, JSP, MVC 패턴 1. 회원 관리 웹 애플리케이션 요구사항 1) 회원 도메인 모델 회원 정보 : 이름(username), 나이(age) 기능 요구사항 : 회원저장, 회원 목록 조회 2. 서블릿으로 회원 관리 웹 애플리케이션 만들기 1) MemberFormServlet 회원 등록 폼 단순하게 회원 정보를 입력할 수 있는 html form 만들어 응답 2) MemberSaveServlet 회원 저장 파라미터를 조회해 Member 객체를 만든다. Member 객체를 MemberRepository를 통해 저장 Member 객체를 사용해서 결과 화면용 html을 동적으로 만들어 응답 3) MemberListServlet 회원 목록 Mem..
- [ 정리/HTTP ][HTTP] HTTP 웹 기본 지식 5) HTTP 메서드 활용2023-11-02 09:32:46HTTP 웹 기본 지식 Session 5 HTTP 메서드 활용 1. 클라이언트에서 서버로 데이터 전송 1) 데이터 전달 방식 - 쿼리 파라미터를 통한 데이터 전송 GET, 주로 정렬 필터(검색어) - 메시지 바디를 통한 데이터 전송 POST, PUT, PATCH 회원 가입, 상품 주문, 리소스 등록, 리소스 변경 2) 클라이언트 서버로 데이터 전송 4가지 상황 정적 데이터 조회 : 이미지, 정적 텍스트 문서 동적 데이터 조회 : 주로 검색, 게시판 목록에서 정렬 필터(검색어) HTML Form을 통한 데이터 전송 : 회원 가입, 상품 주문, 데이터 변경 HTTP API를 통한 데이터 전송 : 회원가입, 상품 주문, 데이터 변경, 서버 to 서버, 앱 클라이언트, 웹 클라이언트(AJAX) 2-1) 정적 데..