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 | 문자열의 길이가 지정한 범위에 있는지 | |
문자열이 이메일형식인지 | ||
@CreditCardNumber | 문자열이 신용카드 번호 형식인지 | |
@URL | 문자열이 URL형식인지 |
728x90
'==6. 책 공부== > 북스터디' 카테고리의 다른 글
[북스터디] Clean Code (0) | 2024.11.02 |
---|---|
[북스터디]스프링 프레임워크 첫걸음 2주차 (0) | 2024.10.27 |
[북스터디]스프링 프레임워크 첫걸음 1주차 (1) | 2024.10.20 |
[북스터디]스프링 프레임워크 첫걸음 목차 (0) | 2024.10.20 |
댓글