본문 바로가기
==6. 책 공부==/북스터디

[북스터디]스프링 프레임워크 첫걸음 3주차

by Dohi._. 2024. 10. 27.
728x90

목차

07장 요청 파라미터 취득하기

    • 요청파라미터 : 서버에 전송되는 값
      •  종류
        요청 파라미터 내용
        요청쿼리 스트링(qurey string)으로 보내지는 값
        ※HTTP 메서드 : GET으로 서버로 데이터 전송
        뷰에서 입력값 및 선택한 값이나 숨김 파라미터등에서 미리 뷰에서 입력해둔 값 등
        요청 본문(body)에 저장되어 보내지는값
        뷰에서 클릭한 버튼의 name 속성값 하나의 뷰에 버튼이 여러개 잇을 때 어느 버튼인지 반별할 수 있는 값
        URL path의 일부로 보내지는 값 링크 등으로 URL의 일부로 보내지는 값

요청파라미터 취득방법

  • @RequestParam사용 : 파라미터를 하나씩 취득
  • Form 클래스 이용 : Form 필드에 대해서  값을 저장한다 등등..

1. @RequestParam

@RequestParam 어노테이션은 URL 쿼리 파라미터나 폼 데이터를 메서드의 파라미터로 받아올 때 사용

@GetMapping("/example")
public String example(@RequestParam String name, @RequestParam int age) {
    return "Name: " + name + ", Age: " + age;
}

 

  • /example?name=John&age=25와 같은 요청이 들어오면, name 파라미터는 "John", age 파라미터는 25로 받음
  • @RequestParam(value="name", required=false, defaultValue="Unknown")처럼 required나 defaultValue 속성을 설정

2. @PathVariable

@PathVariable은 URL 경로의 일부를 변수로 받아올 때 사용

@GetMapping("/user/{userId}")
public String getUser(@PathVariable String userId) {
    return "User ID: " + userId;
}
  • /user/123와 같은 요청이 오면 userId는 "123"으로 받음
  • {} 안의 변수 이름과 메서드 파라미터의 이름이 일치해야 합니다. 다르다면 @PathVariable("경로변수명")으로 명시

3. @RequestBody

@RequestBody는 주로 JSON, XML과 같은 요청 본문(body) 데이터를 객체로 직접 변환해서 받을 때 사용

일반적으로 POST, PUT 요청에서 자주 사용

@PostMapping("/createUser")
public String createUser(@RequestBody User user) {
    return "User Created: " + user.getName();
}
  • 요청 본문에 JSON 데이터를 포함해서 {"name": "Alice", "age": 30}와 같은 형태로 보내면, User 객체로 자동으로 매핑
  • JSON 데이터를 객체로 변환하려면 클래스에 기본 생성자가 필요

4. HttpServletRequest

HttpServletRequest 객체를 통해 모든 요청 정보를 직접 접근 가능

주로 파라미터를 동적으로 접근하거나 헤더 정보 등을 조회할 때 사용

@GetMapping("/info")
public String getInfo(HttpServletRequest request) {
    String name = request.getParameter("name");
    String age = request.getParameter("age");
    return "Name: " + name + ", Age: " + age;
}
  • request.getParameter("name")처럼 파라미터 값을 직접 꺼낼 수 있음
  • 헤더 정보 (request.getHeader("header-name"))나 세션 정보 등도 접근 가능

5. @RequestMapping, @GetMapping, @PostMapping 등의 어노테이션에서 제공하는 params 속성

params 속성은 요청에 특정 파라미터가 있을 때만 해당 메서드로 매핑되도록 설정하는 기능

같은 URL이라도 파라미터에 따라 다른 메서드가 호출될 수 있어서 같은 뷰에 버튼이 다양하게 있을 때 사용 하기도 함

params 속성 간단 설명

  • 파라미터 존재: 특정 파라미터가 있을 때 매핑 (예: "paramName")
  • 파라미터 부재: 특정 파라미터가 없을 때 매핑 (예: "!paramName")
  • 값 일치: 파라미터가 특정 값과 일치할 때 매핑 (예: "paramName=value")
  • 값 불일치: 파라미터가 특정 값과 일치하지 않을 때 매핑 (예: "paramName!=value")
@GetMapping(value = "/example", params = "type=simple")
public String handleSimpleType() {
    return "Simple Type";
}

@GetMapping(value = "/example", params = "type=advanced")
public String handleAdvancedType() {
    return "Advanced Type";
}
  • /example?type=simple 요청은 handleSimpleType() 메서드를 호출
  • /example?type=advanced 요청은 handleAdvancedType() 메서드를 호출

요약

  • @RequestParam: 쿼리 파라미터, 폼 데이터에서 파라미터를 받아올 때 사용.
  • @PathVariable: URL 경로 변수 값을 받아올 때 사용.
  • @RequestBody: JSON 등의 요청 본문을 객체로 받아올 때 사용.
  • HttpServletRequest: 파라미터뿐만 아니라 헤더, 세션 정보 등 다양한 요청 정보를 직접 접근할 때 사용.

 

08장 유효성 검사 기능 알아보기

유효성 검사(validation)

입력 내용이 요건에 만족하는지 그 타당성을 확인하는 입력 체크를 말함

크게 두 개로 나뉜다.

  • 단일 항목 검사
    • 입력 항목 하나에 대해 설정하는 입력 체크  기능
  • 상관 항목 검사(서로 관련이 있는 항목을 함께 체크하는 방법)

 

단일 항목 검사 주요 어노테이션

어노테이션 기능설명 사용예
@NotNull null 값이 아닌 것만 가능 @NotNull
Integer no;
@NotEmpty 문자열이 null혹은 ""(공백)이 아닌것만 가능 @NotEmpty
String namel;
@NotBlank 문자열이 null 혹은 공백(스페이스 탭)이 아닌 것만 가능 @NotBlank
String name;
@Max 지정한 숫자 이하만 가능 @Max(100)
Integer a;
@Min 지정한 숫자 이상만 가능 @Min(10)
Integer a;
@Size 문자열이나 컬렉션이 지정한 범위크기 내인 경우만 가능  
@AssertTrue 값이 True인경우만 가능  
@A ssertFalse 값이 False인경우만가ㅡ능  
@DecimalMax 지정한 숫자 이하인 것만 가능(소수점이하)  
@DecimalMin 지정한 숫자 이상만 가능(소수점이하)  
@Digits 정수부와 소수부의 자릿수 검증  
@Future 미래 날짜인경우  
@Past 과거 날짜인경우  
@Vaild 중첩된 form을 검증  
@Length 문자열의 길이가 지정한 범위에 있는지  
@Email 문자열이 이메일형식인지  
@CreditCardNumber 문자열이 신용카드 번호 형식인지  
@URL 문자열이 URL형식인지  

 

 

728x90

댓글