Notice
Recent Posts
Recent Comments
Link
250x250
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- Next.js
- BACK-END
- 디자인 패턴
- 서버
- 자바
- SQL
- 코드테스트
- spring
- 알고리즘
- web
- java
- 프론트엔드
- JavaScript
- 오라클
- 스프링
- 데이터베이스
- 백엔드
- 코드 테스트
- jpa
- node.js
- oracle
- MySQL
- jsp
- 자바스크립트
- 스프링부트
- 쿼리
- 프런트엔드
- 프로그래머스
- 정리
- 미니정리
Archives
- Today
- Total
참치코더의 꿈 메모장
Spring / @RequestParam, @ModelAttribute 사용법 정리 (코드 위주) 본문
728x90

|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
// Http 요청 파라미터 - @RequestParam
// 스프링이 제공하는 @RequestParam을 사용하면 요청 파라미터를 매우 편리하게 사용할 수 있다.
// 방법 1. @ResponseBody // View 조회를 무시하고, Http message body에 직접 해당 내용 입력
@RequestMapping("/request")
public String requestParam(
@RequestParam("username") String memberName, // 파라미터 이름으로 바인딩
@RequestParam("age") int memberAge)
{
log.info("username={}, age={}", memberName, memberAge);
return "ok";
}
// 방법 2.
@ResponseBody
@RequestMapping("/request")
public String requestParam(
@RequestParam String username, // Http 파라미터 이름이 변수 이름과 같으면 @RequestParam("username") 생략 가능
@RequestParam int age
){
log.info("username={}, age={}", username, age);
return "ok";
}
// 방법 3.
@ResponseBody
@RequestMapping("/request")
public String requestParam(String username, int age) { // String, int, Integer 등의 단순 타입이면 @RequestParam 도 생략 가능
log.info("username={}, age={}", username, age);
return "ok";
}
// @RequestParam 애노테이션을 생략하면 스프링MVC는 내부에서 required=false를 적용한다.
// 파라미터 필수 여부
@ResponseBody
@RequestMapping("/request")
public String requestParamRequired(
@RequestParam(required = true) String username, // 파라미터 필수 여부, 없으면 400에러 발생, 기본값이 true
@RequestParam(required = false) Integer age
){
log.info("username={}, age={}", username, age);
return "ok";
}
// 기본 값 적용
@ResponseBody
@RequestMapping("/request")
public String requestParamDefault(
@RequestParam(required = true, defaultValue = "guest") String username, //defaultValue로 기본 값 적용
@RequestParam(required = false, defaultValue = "-1") int age ){ // defaultValue는 빈 문자의 경우에도 설정한 기본 값이 적용된다.
log.info("username={}, age={}", username, age);
return "ok";
}
// 파라미터를 Map으로 조회하기(전체 조회) - requestParamMap
@ResponseBody
@RequestMapping("/request-param-map")
public String requestParamMap(@RequestParam Map<String, Object> paramMap){
log.info("username={}, age={}", paramMap.get("username"), paramMap.get("age"));
return "ok"; }
// HTTP 요청 파라미터 - @ModelAttribute
/*
1. MemberDTO 객체를 생성한다.
2. 요청 파라미터의 이름으로 MemberDTO 객체의 프로퍼티를 찾고, setter 호출후 파라미터의 값을 바인딩 한다.
3. 파라미너틔 이름이 username 이면 setUsername()메서드를 찾아서 호출하면서 값을 입력한다.
*/
// 방법 1.
@ResponseBody
@RequestMapping("/model")
public String modelAttribute(@ModelAttrubute MemberDTO member){ // MemberDTO객체 생성 & 요청 파라미터의 값도 전부 대입
log.info("username={}, age={}", member.getUsername(), member.getAge());
return "ok";
}
// 방법 2.
@ResponseBody
@RequestMapping("/model")
public String modelAttribute(MemberDTO member){ // MemberDTO객체 생성 & 요청 파라미터의 값도 전부 대입
log.info("username={}, age={}", member.getUsername(), member.getAge());
return "ok";
}
// @ModelAttribute는 생략할 수 있다.
// @RequestParam도 생략 할 수 있다.
// String, int, Integer 같은 단순 타입 = @RequestParam
// 나머지 = @MapAttribute (argument resolver로 지정해둔 타입 외)
|
cs |
728x90
'Spring' 카테고리의 다른 글
| Spring / HTTP 요청 메시지(단순 텍스트, JSON) 데이터 스프링 전달 및 응답 방법 정리 (0) | 2025.09.15 |
|---|---|
| Spring / @Data, @Builder, @Builder.default, ModelMapper 정리 (1) | 2025.09.14 |
| Spring / 스프링 로깅, 로그 라이브러리 사용법 (0) | 2025.09.12 |
| Spring / JPA Entity생성 및 Repository 설정 미니 정리(코드 위주) (0) | 2025.09.09 |
| Spring / MVC 패턴 - 요즘 사용하는 방식 (0) | 2025.09.09 |
Comments