[JAVA] 개념 정리 4

NaSC·2022년 12월 11일
0

JAVA 기본개념

목록 보기
4/6

1. Controller & RestController

  • RestController .. 액션메소드 실행절차
  1. 웹브라우저가 서버에 요청(HTTP Request)을 전달한다.
    이 요청에는 요청 대상을 가르키는 URL이 담겨있다.
    (URL : http://localhost:8088/first/test3)
  2. 웹브라우저로부터 서버에 전달된 요청을 Spring Web MVC 엔진이 받는다.
    스프링 엔진은 요청된 URL과 일치하는 컨트롤러 액션 메소드를 찾아서 호출한다.
    (FirstController 클래스의 test3()액션 메소드 호출)
  3. Firstcontroller의 test3() 액션 메소드는 JAVA 객체를 리턴한다. (Product 객체 리턴)
  4. 리턴된 JAVA객체는, Spring Web MVC 엔진에 의해서 JSON 형태의 문자열로 변경된다.
    ( {”name”:”맥주”, “unitCost”:2000, “quantity”:120} )
  5. JSON 형태의 문자열이 웹브라우저에 전송된다.
    이 전송은 최초 웹브라우저의 요청(http request) 에 대한 응답 (http response) 이다.
  6. 웹 서버로부터 전송된 JSON 형태의 문자열이 웹브라우저에 표시된다.
  • Controller.. 액션메소드 실행절차
  1. 웹브라우저가 서버에 요청(HTTP Request)을 전달한다.
    이 요청에는 요청 대상을 가르키는 URL이 담겨있다.
  2. 웹브라우저로부터 서버에 전달된 요청을 Spring Web MVC 엔진이 받는다.
    스프링 엔진은 요청된 URL과 일치하는 컨트롤러 액션 메소드를 찾아서 호출한다.
  3. 컨트롤러의 액션메소드는 데이터를 Model 객체에 넣는다.
  4. 컨트롤러의 액션메소드는 뷰의 이름을 리턴한다.
  5. 그 이름의 뷰가 실행
  6. 뷰는 Model 객체에서 데이터를 꺼내서 출력하고 , HTML태그들도 출력한다.
  7. 뷰가 출력한 HTML 태그들이 웹브라우저에 전송된다.
    이 전송은 최초 웹브라우저의 요청 (http request)에 대한 응답(http response)이다.
  8. 웹 서버로부터 전송된 HTML 태그들이 웹브라우저에 표시된다.
  • RestController vs Controller

    • RestController의 액션메소드의 리턴값은 데이터이다. 그 데이터 그대로 웹브라우저에 전송된다.
      ( 리턴하는것이 String이면 그 문자열이 그대로, 리턴하는것이 배열이나 java객체면 json형태로 변환되어 웹브라우저에 그대로 전송 )
    • Controller의 액션메소드의 리턴값은 view의 이름이다. 액션메소드가 리턴한 후 그 이름의 뷰가 실행된다. 뷰의 실행결과 출력이 웹브라우저에 전송된다.
  • REST API

    • 백엔드개발에서는 GET POST PUT DELETE 요청 방식을 구분해서 사용하는게 보통이다.
      RESTAPI를 개발할때 @RestController 컨트롤러를 구현한다. 이방식은 view를 구현하지 않는다.

2. RequestParam

사용자가 전달하는 값을 1:1로 매핑해주는 어노테이션 , 보통 파라미터 값을 전달할 때 사용

1) 파라미터 이름 지정하고 받기

@Controller
public class request_mapping {

    @RequestMapping("/request_mapping")
    public String visit(@RequestParam(name = "name") String name,
                        @RequestParam(name = "age") Integer age,
                        Model model) {
        model.addAttribute("name", name);
        model.addAttribute("age", age);
        return "home";
    }
}

2) 파라미터 이름 생략

@Controller
public class request_mapping {

    @RequestMapping("/request_mapping")
    public String visit(@RequestParam String name,
                        @RequestParam Integer age,
                        Model model) {
        model.addAttribute("name", name);
        model.addAttribute("age", age);
        return "home";
    }
}

3) 어노테이션 생략

@Controller
public class request_mapping {

    @RequestMapping("/request_mapping")
    public String visit(String name,
                        Integer age,
                        Model model) {
        model.addAttribute("name", name);
        model.addAttribute("age", age);
        return "home";
    }
}
  • name : 파라미터 이름지정
  • required : 해당 파라미터가 필수요소인지? true가 default
  • defaultvalue : default값 지정

3. Http method

  • GET : 서버의 데이터 조회

  • POST : 서버에 데이터 삽입 ( 보통 삽입, 수정, 삭제 요청을 구별하지않고 POST로 요청한다고함 )

  • PUT : 서버에 데이터 수정

  • DELETE : 서버에 데이터 삭제

  • GET, POST, PUT, DELETE가 대표적

HEAD: 서버 리소스의 헤더(메타 데이터의 취득)

OPTIONS: 리소스가 지원하고 있는 메소드의 취득

PATCH: 리소스의 일부분을 수정

CONNECT: 프록시 동작의 터널 접속을 변경

4. Http status code

  • 1xx(정보) : 요청을 받았으며 프로세스를 계속 진행합니다.
  • 2xx(성공) : 요청을 성공적으로 받았으며 인식했고 수용하였습니다.
  • 3xx(리다이렉션) : 요청 완료를 위해 추가 작업 조치가 필요합니다.
  • 4xx(클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없습니다.
  • 5xx(서버 오류) : 서버가 명백히 유효한 요청에 대한 충족을 실패했습니다.

4, 5로 시작하는 코드는 정상적인 상황이 아니기 때문에 사이트 관리자가 즉시 알아야 하는 정보

참고 : https://www.whatap.io/ko/blog/40/

5. URL 인코딩/디코딩

1) 인터넷을 통해 전송할 수 있는 문자는 오로지 ASCII 문자이기 때문에 인코딩해줘야함 .

변환하는 규칙은 UTF-8 을 따른다. (한글문자 1개 : 3바이트)

따라서 '피그'는 6바이트로, '브라더'는 9바이트로 인코딩 된 모습을 볼 수 있다.

2) &는 아스키코드지만 문자 자체로 의미를 전달하고싶으므로 %26으로 인코딩했다.

3) 공백문자는 허용되지않으므로 공백 문자는 '%20' 혹은 '+'로 인코딩된다.

profile
데이터엔지니어 😘

0개의 댓글