스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 대시보드 - 인프런 | 강의 (inflearn.com)
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의
웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -
www.inflearn.com
요청 받기
1. PathVariable: @PathVariable
1
2
3
4
|
@GetMapping("/{userId}")
public String findUser(@PathVariable String userId) {
return "get userId: " + userId;
}
|
cs |
2. QueryParameter: @RequestParam
1
2
3
4
5
6
7
8
|
@GetMapping("/search")
public ResponseEntity<Message> searchCourses(@RequestParam String keyword,
@RequestParam String order,
Pageable pageable){
Page<CoursePreviewDto> result = courseService.searchCourses(keyword, order, pageable);
message.setData(result.getContent());
return new ResponseEntity<>(message, OK);
}
|
cs |
Body와 Parameter가 동일할 경우 @RequestParam 제거 가능
1
2
3
4
5
6
|
@ResponseBody
@RequestMapping("/request-param-v4")
public String requestParamV4(String username, int age) {
log.info("username={}, age={}", username, age);
return "ok";
}
|
cs |
3. Header: @RequestHeader, HttpServletRequest.getHeader()
1
2
3
4
5
6
7
|
@RequestMapping("/headers")
public String headers(@RequestHeader MultiValueMap<String, String> headerMap,
@RequestHeader("host") String host){
log.info("headerMap={}", headerMap);
log.info("header host={}", host);
return "ok";
}
|
cs |
1
2
3
4
5
6
|
@GetMapping("/user")
public ResponseEntity<Message> getUserProfile(HttpServletRequest request){
String jwtToken = request.getHeader("Authorization").replace("Bearer ", "");
User user = userService.getUserFromJWT(jwtToken);
return new ResponseEntity<>(message, message.getStatus());
}
|
cs |
4. Body: @RequestBody
1
2
3
4
5
6
7
|
@PostMapping("/user")
public Map<String, String> updateProfile(@RequestBody Map<String, String> req){
String nickname = req.get("nickname");
int height = Integer.parseInt(req.get("height"));
int weight = Integer.parseInt(req.get("weight"));
return message;
}
|
cs |
HttpServletRequest request
1. request.getParameter(): Query Parameter 조회
2. request.getHeader(): Header 조회
※ HttpServletRequest request.getParameter() == @RequestParam()
@Controller + return String 일 경우
return "~~~~"에 해당하는 View를 찾음.
String 자체를 return하고 싶다면
1. @ResponseBody를 붙임
2. @Controller를 @RestController로 변경
Body와 Parameter가 일치할 경우 @RequestParam 제거 가능
1
2
3
4
5
6
|
@ResponseBody
@RequestMapping("/request-param-v4")
public String requestParamV4(String username, int age) {
log.info("username={}, age={}", username, age);
return "ok";
}
|
cs |
@RequestParam 옵션
1. required = true / false
2. defaultValue = "~~"
ModelAttribute: 데이터 한 번에 받을 수 있음
1
2
3
4
5
6
7
8
9
10
11
12
|
@Data
public class HelloData {
private String username;
private int age;
}
@ResponseBody
@RequestMapping("/model-attribute-v1")
public String modelAttributeV1(@ModelAttribute HelloData helloData) {
log.info("username={}, age={}", helloData.getUsername(), helloData.getAge());
return "ok";
}
|
cs |
Body의 String 받기
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
|
@PostMapping("/request-body-string-v1")
public void requestBodyString(HttpServletRequest request, HttpServletResponse response) throws IOException {
ServletInputStream inputStream = request.getInputStream();
String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);
log.info("messageBody={}", messageBody);
response.getWriter().write("ok");
}
@PostMapping("/request-body-string-v2")
public void requestBodyStringV2(InputStream inputStream, Writer responseWriter) throws IOException {
String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);
log.info("messageBody={}", messageBody);
responseWriter.write("ok");
}
@PostMapping("/request-body-string-v3")
public HttpEntity<String> requestBodyStringV3(HttpEntity<String> httpEntity) throws IOException {
log.info("messageBody={}", httpEntity); // Http의 body를 String으로 변환해줌
return new HttpEntity<>("ok");
}
@ResponseBody
@PostMapping("/request-body-string-v4")
public String requestBodyStringV3(@RequestBody String messageBody) throws IOException {
log.info("messageBody={}", messageBody);
return "ok";
}
|
cs |
'오늘 배운 것' 카테고리의 다른 글
[알고리즘] 다익스트라, 세그먼트 트리 (0) | 2021.07.13 |
---|---|
[알고리즘] 위상정렬, 프림, 크루스칼 (0) | 2021.07.12 |
[스프링 MVC 2] 타임리프 - 스프링 통합과 폼, 메시지, 국제화 (0) | 2021.07.02 |
[스프링 MVC 2] 타임리프 - 기본 기능(2) (0) | 2021.07.01 |
[스프링 MVC 1, 2] 스프링 MVC - 기본 기능 (2), 타임리프 - 기본 기능 (0) | 2021.06.30 |