Exception, Spring parsing,json

HakJun·2022년 2월 17일
2

SpringBoot_JPA_BlogProject

목록 보기
11/25

Validation


해당 예외가 들어왔을 때 처리하는 전용 class 를 만들기 위해 handler package에 GlobalExcepionHandler class 를 만들어 다음과 같이 작성했다.

@ControllerAdivice를 붙히면 모든 Exception이 발생했을 때 이 class로 오게되고, @ExceptionHandler(value = IllegalArgumentException)을 붙히면 해당 예외인 경우에 이 메소드가 실행된다.

@RestController란?

Spring MVC Controller에 @ResponseBody가 추가된 것입니다. 당연하게도 RestController의 주용도는 Json 형태로 객체 데이터를 반환하는 것입니다.

1.Client는 URI 형식으로 웹 서비스에 요청을 보낸다.
2.Mapping되는 Handler와 그 Type을 찾는 DispatcherServlet이 요청을 인터셉트한다.
3.RestController는 해당 요청을 처리하고 데이터를 반환한다.

DispatchServerlet이란?

가장 앞단에서 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러(Front Controller)라고 정의할 수 있습니다.

이것을 보다 자세히 설명하자면, 클라이언트로부터 어떠한 요청이 오면 Tomcat(톰캣)과 같은 서블릿 컨테이너가 요청을 받게 됩니다. 그리고 이 모든 요청을 먼저 프론트 컨트롤러인 디스패처 서블릿이 받게 됩니다. 그러면 디스패처 서블릿은 공통적인 작업을 먼저 처리한 후에 해당 요청을 처리해야 하는 세부 컨트롤러를 getBean()으로 가져오고, 컨트롤러에게 작업을 위임합니다.

Spring MVC란?

사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴이다.
소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 둔다.
간단하게 Model, View, Controller로 분리하여 개발하는 디자인 패턴이다.

스프링 기본 파싱전략과json통신

GET요청의 특징은 데이터가 KEY-VALUE형태이고 특징은 BODY로
데이터를 담아 보내지 않음.

POST, PUT, DELETE 요청은 데이터를 담아보내야 할 것이 많음

POST는 form태그에 메서드를 POST방식으로 보내면 된다.

form태그의 한계는 GET,POST 요청밖에 못함, PUT DELETE는 불가
그래서 Javascript로 요청을 해야함.
통일 : Javascript로 ajax요청 + 데이터는 json으로 통일하기
구분을 안해도 됨

ajax란?

Asynchronous Javascript And Xml(비동기식 자바스크립트와 xml)의 약자

자바스크립트를 통해서 서버에 데이터를 비동기 방식으로 요청하는 것이다.

비동기 방식이란?

비동기 방식은 웹페이지를 리로드하지 않고 데이터를 불러오는 방식이며 Ajax를 통해서 서버에 요청을 한 후 멈추어 있는 것이 아니라 그 프로그램은 계속 돌아간다는 의미를 내포하고 있다.

form-form태그 : POST, PUT, DELETE, UPDATE 모두 가능

SpringController는 key-value가 입력되면 자동으로 파싱하여
변수에 담아준다. key-value를 Object로 파싱하여 받아줄
수도 있는데, Setter가 있어야 작동한다.

POST 방식의 key-value(x-www.form-urlencoded)
ex)username2 = ssar
password2 = 1234

변수와 Setter name값이 다르다면 입력되지가 않음

변수중 하나만 POST 한다면 나머지 값들은 Setter함수로 null로 저장됨, 인자값이 더 많이 들어간다면 자동으로 저장되지가 않음

중복된 username이 안되게 처리를 해야함


unique = true이후 DB create -> update시 중복 username은 들어가지 않는 것을 볼 수 있었다.

key-value 아닌 값은 @RequestBody 를 붙혀서 사용해야함.

profile
백엔드 & 전공 공부

0개의 댓글