해당 예외가 들어왔을 때 처리하는 전용 class 를 만들기 위해 handler package에 GlobalExcepionHandler class 를 만들어 다음과 같이 작성했다.
@ControllerAdivice를 붙히면 모든 Exception이 발생했을 때 이 class로 오게되고, @ExceptionHandler(value = IllegalArgumentException)을 붙히면 해당 예외인 경우에 이 메소드가 실행된다.
Spring MVC Controller에 @ResponseBody가 추가된 것입니다. 당연하게도 RestController의 주용도는 Json 형태로 객체 데이터를 반환하는 것입니다.
1.Client는 URI 형식으로 웹 서비스에 요청을 보낸다.
2.Mapping되는 Handler와 그 Type을 찾는 DispatcherServlet이 요청을 인터셉트한다.
3.RestController는 해당 요청을 처리하고 데이터를 반환한다.
가장 앞단에서 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러(Front Controller)라고 정의할 수 있습니다.
이것을 보다 자세히 설명하자면, 클라이언트로부터 어떠한 요청이 오면 Tomcat(톰캣)과 같은 서블릿 컨테이너가 요청을 받게 됩니다. 그리고 이 모든 요청을 먼저 프론트 컨트롤러인 디스패처 서블릿이 받게 됩니다. 그러면 디스패처 서블릿은 공통적인 작업을 먼저 처리한 후에 해당 요청을 처리해야 하는 세부 컨트롤러를 getBean()으로 가져오고, 컨트롤러에게 작업을 위임합니다.
사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴이다.
소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 둔다.
간단하게 Model, View, Controller로 분리하여 개발하는 디자인 패턴이다.
GET요청의 특징은 데이터가 KEY-VALUE형태이고 특징은 BODY로
데이터를 담아 보내지 않음.
POST, PUT, DELETE 요청은 데이터를 담아보내야 할 것이 많음
POST는 form태그에 메서드를 POST방식으로 보내면 된다.
form태그의 한계는 GET,POST 요청밖에 못함, PUT DELETE는 불가
그래서 Javascript로 요청을 해야함.
통일 : Javascript로 ajax요청 + 데이터는 json으로 통일하기
구분을 안해도 됨
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 를 붙혀서 사용해야함.