녕의 학습 기록

[Spring MVC 1] 스프링 MVC-기능 (1) 본문

Dev/Spring

[Spring MVC 1] 스프링 MVC-기능 (1)

kjyyjk 2023. 2. 1. 19:29

 학습 내용 

스프링 MVC의 기본 기능


이번엔 JSP를 사용하지 않기 때문에 프로젝트 생성 시 Jar를 선택해주었다.

Jar : 항상 내장 서버 사용, webapp 경로 사용x ----> 내장 서버 사용에 최적화

 

* 로깅

 

//로그 선언
private Logger log = LoggerFactory.getLogger(getClass());
//치환된다
log.deug("data={}",data);

 

@Slf4j

@Slf4j 애노테이션을 사용하면 위의 코드 없이 편리하게 사용 가능하다
로그 레벨 설정

 

장점으로는 로그를 사용하면 로그를 상황에 맞게 설정으로 조절할 수 있고,

( ex 개발 서버에는 모든 로그 출력, 운영 서버에는 출력하지 않는 로그)

 

System.out 방식은 콘솔에 출력하는 것이 전부였지만 로그는 파일이나 네트워크 등 별도의 위치에 남길 수 있다.

 

* 요청 매핑

 

로그 찍혔다

@RestController

기존 @Controller는 반환값을 뷰 이름으로 인식하고, 뷰 리졸버를 통해 렌더링까지 했었다.

@RestController는 반환 값을 HTTP 메시지 바디에 바로 입력 !

그렇기에 실행 결과로 ok라는 메세지를 확인 가능하다.

 

 

GET 메서드에만 매핑된다.

//PathVariable

@GetMapping("/mapping/{userId}")
public String mappingPath(@PathVariable("userId") String data){
	log.info("mappinPath userId = {}", data);
    return "ok";
}

@PathVariable은 URL 경로를 템플릿화{ } 하여, 매칭되는 부분을 편리하게 조회할 수 있는 기능이다.

 

위의 URL에서는 {uesrId} 를 템플릿화, 이를 String 타입의 data 변수에 매칭시켰다.

 

위에서는 변수명을 data로 지었기 때문에 @PathVariable 괄호 안에 매칭해야하는 요소를 넣어주었지만,

 

변수명을 같게 지으면 아래와 같이 더 편리하게 사용 가능하다.

public String mappingPath(@PathVariable String userId){

 

 

다중 PathVariable
요청 URL /         kjy , 321 부분이 PathVariable 된다
로그 확인 완료

 

 

 

특정 파라미터 조건 매핑 / 특정 header 조건 매핑 ...등

//value 에 맞는 URL이 들어오면서, mode=debug라는 파라미터가 있어야 매핑된다.
//  /mapping-header?mode=debug 처럼
@GetMapping(value="/mapping-header", params="mode=debug")

 

미디어 타입 조건 매핑

* consume - HTTP 요청의 Content-Type 헤더를 기반으로 매핑한다

* produce - HTTP 요청의 Accept 헤더를 기반으로 매핑, 이때 produces는 응답하는 미디어 타입이 된다.

                   (결국은 요청의 Accept 헤더의 미디어 타입과 응답하는 미디어 타입이 맞아야 하기 때문에)

 

 

* 요청 매핑 - API 예제

 

회원 목록조회  / 추가 / 조회 / 수정 / 삭제 기능

 

이처럼 @PathVariable 방식(URL 경로 템플릿화)도 많이 쓰이고 쿼리 파라미터 방식도 많이 쓰인다.

 


 다음 학습 내용 

 

스프링 MVC - HTTP 요청 조회 방법

 

 

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의

웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -

www.inflearn.com