본문 바로가기

국비과정

20231012 _[88일차]_01. 기업 교육(2일차)

자바 버전 11로 다시 받는다.

 

 

https://adoptium.net/temurin/releases/?os=windows&arch=x64 

 

Latest Releases | Adoptium

 

adoptium.net

 

JRE => 자바 실행만 할수 있는 환경

JDK => 자바 개발까지 가능한 환경

 

cmd에서 자바 환경변수가 잘 잡혀있는지 확인

> java -version

 


롬복 다운로드 받자.

https://projectlombok.org/download

 

Download

 

projectlombok.org

다운로드 받아서 c 드라이브로 옮겨준다.

cmd에서 설치

> java -jar lombok.jar

 

이렇게 뜬다. 설치하기.


.msi 파일로 받으면 알아서 환경변수 잡아준다고 한다.

java를 zip파일로 받았기 때문에 환경변수는 따로 설정해줘야 한다.

zip 풀어서 아래파일을 c드라이브의 아래 폴더로 이동시켜줬다.

 

Http 요청에 메세지를 담아 보낼때

get방식인 경우 query-parameter를 사용한다. ( 메세지 body와는 다름)  

=> 도메인 / member ? page = 1

아니면 path-variable ( 경로자체에 자원을 명시해준다.)

=> 도메인 / member / 1  

글작성같이 붙일 내용이 많은 경우에는 post방식으로 요청을 보낸다. (  path-variable 필요x, 메세지body 필요 )

수정 => put ( 메세지body 필요)

삭제 => delete  ( path-variable 필요, 메세지body는 필요x)

 

( put이나 delete를 지원하지 않는 서버가 있어서 수정/삭제에 post를 사용하는편 )

 

 

파싱이 편리해서? JSON을 많이 사용한다.

 


workspace에 study 폴더생성해주고

maven => pom.xml 로 의존성관리 

gradle => build.gradle 로 의존성관리 (요즘 많이 쓴다.)

정확한 차이점은 찾아보기.......

 

다운로드 받은 실습파일 압축풀어서 이름변경하고 study 폴더에 넣어준다.

import로 프로젝트 생성해줬다.

 

다시 zip 파일 자체를 import 해주고 다시 utf-8로 잡아서 한글깨진 부분 잡아줬다.

 


이부분 다시보기 


HTTP 헤더(HTTP Header)는 HTTP 요청과 응답 메시지에서 메타 정보와 다양한 속성을 전달하는 데 사용되는 중요한 부분입니다. HTTP 헤더는 메시지의 본문 데이터와는 별도로 메시지의 속성, 설정 및 메타데이터를 설명하며, 요청 및 응답의 처리 및 해석을 돕습니다. 다음은 HTTP 헤더의 주요 기능과 몇 가지 흔히 사용되는 헤더 예시입니다:

HTTP 헤더의 기능:

메시지 속성 지정: Content-Type 헤더를 사용하여 메시지 본문의 데이터 유형을 지정합니다. 예를 들어, JSON, XML, HTML, 이미지 등.

인증 및 보안: Authorization 헤더를 사용하여 사용자의 인증 정보를 전달합니다. 이를 통해 서버는 요청을 인증하고 권한 부여할 수 있습니다.

캐싱 지시: Cache-Control 헤더를 사용하여 응답 캐싱 방법을 제어합니다. 이를 통해 브라우저 및 프록시 서버는 응답을 캐시하고 재사용할 수 있습니다.

언어 및 지역 설정: Accept-Language 헤더는 클라이언트 언어 설정을 지정하며, 서버는 이를 기반으로 언어별 콘텐츠를 제공할 수 있습니다.

리다이렉션 및 요청 메서드: Location 헤더는 리다이렉션된 리소스의 위치를 지정하며, Allow 헤더는 지원되는 HTTP 요청 메서드 목록을 제공합니다.

HTTP 헤더 예시:

Request Headers (요청 헤더):

Host: 요청을 보내는 호스트(웹 서버)의 도메인 이름 또는 IP 주소.
User-Agent: 클라이언트 소프트웨어(브라우저) 정보.
Accept: 클라이언트가 지원하는 미디어 유형 및 우선 순위.
Authorization: 인증 토큰 또는 자격 증명 정보.
Response Headers (응답 헤더):

Content-Type: 응답 메시지의 데이터 유형 및 문자 인코딩.
HTTP/1.1 200 OK: 응답 상태 코드 및 메시지.
Location: 리다이렉션된 리소스의 위치.
Cache-Control: 응답 캐싱 지시.
HTTP 헤더는 요청 및 응답 처리, 보안, 캐싱, 언어 설정, 인증 및 다른 여러 측면에서 중요한 역할을 합니다. 웹 브라우저, 웹 서버, API 클라이언트 및 서버 간의 통신에서 이러한 헤더를 효과적으로 사용함으로써 웹 서비스 및 애플리케이션을 보다 효율적으로 관리하고 향상시킬 수 있습니다.


프로젝트에서 java Build Path 
라이브러리 추가해주자.

 

 

 

아래처럼 잡히면 되는건가보다.


path-variable 에 대해서..

/repos/ {owner} / ~~

경로에 자원자체를 넣어버린거, 예를 들어

/ member / 1 => 이 회원을 조회하겠다 ( 그래서 unique 한 값이 들어간다) 

=> group의 상하위 개념이 확실하게 보여진다.

반면에

/ member ? id = 1  (query parameter) 는 id=1이라는 조건으로 검색한거다.

 

두 방식의 느낌이 다름!

 

 

[ MemberController.java ]

path-variable 어노테이션 아래처럼

repository 파일이 두개인데 

하나는 interface 껍데기고 다른 하나에 실제기능을 구현해줬다.

@primary => 데이터관리 주체

inertface를 호출할 때 우선순위를 구분지어 주는게 @primary

 

의존성주입을 하지 않고 new객체로 생성해준 이유,,?

 

 


mariadb연결해보기

TODO로 검색해서 작성코드 찾아서 해보기

 


스프링자체에 있는 유효성검사 어노테이션 찾아보기 (화면에서도 서버에서도 필요)__ 이건 나중에?


문제가 발생하는 코드라인에서 마우스 우클릭 => Toggle Breakpoint 걸어놓고 디버깅

 

 

보통 컨트롤러에서는 요청값에 대한 유효값 검사, 서비스호출

서비스에 로직작성

 


 

redirect : 새로고침을 하면 클라이언트가 다시 요청을 보내도록 

foward : 서버가 내부 자체적으로 처리

 

일반적으로 화면에 띄우는 경우에는 model로, 

 클라이언트 요청에 대해 redirect 된 페이지로 보여줄 때는 RedirectAttribute 사용.

 

 

 

[MemberService]

데이터타입이 optional인 경우 객체를 한번 더 감싸기 때문에 내부의 객체가 null값이여도 껍데기 내부에 빈 객체가 존재하는걸로 인식해서 null로 인식되지 않는다.

 

 

아이디가 중복되는경우 conflict 오류라고 명시해주기 때문에 왜 오류가 발생했는지 알 수 있다. 

 


* ResponseEntity : 이 클래스는 Spring Framework에서 제공되며, HTTP 응답을 나타내는 클래스. 이 클래스는 HTTP 상태 코드, 응답 데이터, 헤더 등을 포함한다.