250x250
Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Open Source
- 문서
- Tomcat
- myBatis
- 설정
- MySQL
- IntelliJ
- Python
- JDBC
- SpringBoot
- maven
- Source
- error
- PostgreSQL
- Eclipse
- AJAX
- git
- oracle
- ubuntu
- spring
- MSSQL
- JavaScript
- Docker
- Thymeleaf
- 오픈소스
- STS
- jpa
- Spring Boot
- Core Java
- Exception
Archives
- Today
- Total
헤르메스 LIFE
[Spring] Controller Parameters 본문
728x90
HttpServletRequest
@PostMapping("/receive")
public String age(HttpServletRequest request) {
String a = request.getParameter("a");
String b = request.getParameter("b");
return "result";
}
@RequestBody
1. @RequestBody애노테이션은 HTTP Request body를 읽고 HttpMessageConverter를 통해서 deserialized시켜 Handler 메소드의 특정 인자 타입의 객체로 변환하기 위한 애노테이션이다. MVC Config의 Message Converters 옵션을 사용함으로써 message conversion을 설정 및 customizing할 수 있다. javax의 @valid, spring의 @validated 애노테이션을 사용함으로써 유효성 검사를 할 수 있다. |
@PostMapping("/receive")
public String age(@RequestBody Person person) {
System.out.println("통신 성공");
System.out.println(">>> " + person);
return "result";
}
@PostMapping("/receive")
public String age(@RequestBody Map<String,String> map) {
System.out.println("통신 성공");
System.out.println(">>> " + map.get("name"));
System.out.println(">>> " + map.get("age"));
return "result";
}
@RequestParam
1. HTTP Request 파라미터를 Handler메소드의 파라미터 타입에 전달받을 때 사용하는 애노테이션이다. 2. Handler 메소드의 파라미터 타입이 Simple Type이고, 지원하는 인자 타입이 아닌 경우 @RequestParam으로 먼저 resolve되고 이후에 @ModelAttribute로 resolve된다. 3. @RequestParam이 붙여진 인자의 타입이 String이 아닌 경우 Type Conversion이 자동으로 적용된다. (사용자 정의 가능) 컨트롤러에서 @RequestMapping 을 지정한 메서드의 경우 메서드 인자에 @RequestParam 을 지정해 변수의 값을 메서드 인자로 할당 할 수 있다. |
/*
* 모든 요청 파라미터를 담은 맵으로 받을 수 있습니다.
*/
@RequestMapping(value = "/join", method = RequestMethod.POST)
public String userJoin(@RequestParam Map<String, String> param) {
System.out.println("param : " + param);
return "index";
}
@RequestMapping(value = "/join", method = RequestMethod.POST)
public String userJoin(@RequestParam MultiValueMap<String, String> param) {
...
}
@RequestMapping(value = "/join", method = RequestMethod.POST)
public String userJoin(@RequestParam(value = "nonValue", required = false) String nonValue) {
System.out.println("nonValue : " + nonValue);
return "index";
}
/**
* nonValue 의 Mapping되는 값이 없으면 HTTP 400 - Bad Request 오류를 발생합니다.
* 오류를 발생하지 않기위해서는 defaultValue 를 넣어야 합니다.
*/
@RequestMapping(value = "/join", method = RequestMethod.POST)
public String userJoin(@RequestParam("nonValue") String nonValue) {
System.out.println("nonValue : " + nonValue);
return "index";
}
@RequestMapping(value = "/join", method = RequestMethod.POST)
public String userJoin(@RequestParam(value = "nonValue", defaultValue = "디폴트값입니다") String nonValue) {
System.out.println("nonValue : " + nonValue);
return "index";
}
@RequestBody | @RequestParam | |
객체생성 | 가능 | 불가능 |
각 변수별 데이터 저장 | 불가능 | 가능 |
@PathVariable
@PathVariable 은 메서드 인자에 사용되어 URI 템플릿 변수의 값을 메서드 인자로 할당하는데 사용된다. |
@GetMapping("/user/{userName}")
public String user(@PathVariable String userName){
System.out.println(userName);
return "index";
}
@GetMapping("/user/{age}/{name}")
public String user(@PathVariable String age, @PathVariable String name) {
System.out.println("나이는 " + age);
System.out.println("이름은 " + name);
return "index";
}
@GetMapping("/{name}")
public String user(@PathVariable Map<String,String> map) {
System.out.println(map);
return "index";
}
@GetMapping("/user/{age:\\d+}{name:\\D+}")
public String user(@PathVariable("age") String age, @PathVariable("name") String name) {
System.out.println("나이는 " + age);
System.out.println("이름은 " + name);
return "index";
}
728x90
'Spring Framework' 카테고리의 다른 글
[LogBack] LogBack 설정 (0) | 2021.04.03 |
---|---|
[Spring] MessageSource 사용법 (0) | 2021.04.02 |
[Properties] Java 개발 시 사용하게 되는 Properties 사용법 (0) | 2021.01.17 |
[Spring] Log4J 사용 시 쿼리 로그가 두 번 찍히는 경우 (0) | 2021.01.14 |
[Spring Boot] DataSource를 이용한 Multi Database Connection 샘플 (0) | 2021.01.11 |