일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- HTML
- group by
- 과정평가형
- sql developer
- alias
- CRUD
- tomcat
- Bootstrap
- HTTP Status 500
- 모조칼럼
- 답변형 게시판
- HTTP Status 404
- 부트스트랩
- github
- ||
- jQuery
- 이클립스
- Oracle DB
- Oracle SQL
- rownum
- SQL
- 한글 인코딩
- distinct
- oracle
- JavaScript
- 제약조건
- JSP
- 성적프로그램
- git
- Java
Archives
초급의 끄적거림
[어노테이션] @RequestMapping / @RequestParam 본문
@RequestMapping
- 처리할 요청 URL을 지정한다
- 실제 요청 URL은 class의 @RequestMapping값과 메서드의 @RequestMapping값의 조합으로 지정됨
@RequestMapping(value="/article/form",method="RequestMethod.GET")
@RequestMapping(value="/article/write",method="RequestMethod.POST")
@RequestParam
- 단일 HTTP 요청 파라미터의 값을 메소드 파라미터에 넣어주는 어노테이션
- 가져올 요청 파라미터의 이름을 @RequestParam 어노테애션의 기본 값으로 지정해주면 됨
- 요청 파라미터의 값은 메소드 파라미터의 타입에 따라 적절히 변환 됨
- 해당 파라미터가 반드시 존재해야하며, 없으면 HTTP 400 - Bad Request 발생
- 파라미터를 필수가 아니라 선택적으로 제공하게 하려면 required 엘리먼트를 false로 설정할 것
public String method1(@RequestParam("id") int id) { ... }
public String method2(@RequestParam("id") int id,
@RequestParam("name") String name,
@RequestParam("file") MultipartFile file) { ... }
public String method3(@RequestParam Map<String, String> params) { ... }
public String method4(
@RequestParam(value="id", required=false, defaultValue="-1") int id) { ... }
public String method5(@RequestParam int id) { ... }
출처: https://springsource.tistory.com/13 [Rednics Blog]
- method1() :: 이 메소드에서 선언은 id 요청 파라미터를 int 타입으로 변환해서 메소드의 id 파라미터에 넣어줌
- method2() :: @RequestParam은 이상의 파라미터에 적용할 수 있음, 스프링의 내장 변환기가 다룰수 있는 모든 타입을 지원함
- method3() :: @RequestParam에 파라미터 이름을 지정하지 않고 Map<String, String> 으로 선언하여 파라미터를 담은 맵으로 받을 수 있고, 이 때 파라미터의 이름은 맵의 키에, 값은 맵의 값에 담겨 전달
- method4() :: @RequestParam을 사용했다면 해당 파라미터가 반드시 있어야 하지만 선택적으로 하고싶다면 required 엘리먼트를 false로 설정. 요청 파라미터가 존재하지 않을 때의 default값도 설정할 수 있다. 해당 메소드는 required와 defaultValue 엘리먼트를 설정한 예
- method5() :: 메소드 파라미터의 이름과 요청 파라미터의 이름이 일치하기 때문에@RequestParam의 이름 엘리먼트를 생략한 예
- String, int 와 같은 단순 타입인 경우에는 @RequestParam을 아예 생략할 수도 있는데 이 때는 메소드 파라미터와 같은 이름의 요청 파라미터 값을 받음. 하지만 파라미터의 개수가 많고 종류가 다양해지면 코드를 이해하는데 불편할 수 있기 때문에 명시적으로 @RequestParam을 부여해주는 것을 권장한다.
@RequestParam을 이용하여 form 데이터를 Controller로 받기
- Controller에서 @RequestParam 어노테이션을 이용하면 Http 요청의 데이터를 메소드 파라미터로 받을 수 있음.
- jsp의 html 태그에 name으로 지정한 값으로 매칭되는 방식
- 이 외의 파라미터 맵핑 방식 :: @RequestHeader, @RequestBody 등
예시
- input 태그의 name속성을 payment_participant_list로 지정하고 Controller에서 값을 넘겨받을 파라미터를 @RequestParam 어노테이션으로 지정해줘서 사용하는 방법
<form class="modal-content" th:action="@{'/meetings/' + ${meeting.id} + '/payment'}" method="post">
...
<input th:each="participant : ${payment_participant_list}" type="checkbox" name="payment_participant_list" th:value="${participant.ssoId}" th:text="${participant.name}" checked="checked"/>
@PostMapping(value = "/{id}/payment/{paymentId}/update")
public String updatePayment(@PathVariable int id,@PathVariable int paymentId, Payment payment, User payer, @RequestParam List<User> payment_participant_list) {
System.out.println(payment_participant_list);
}
'Framework > Spring' 카테고리의 다른 글
[Spring] 오류 'mvc:annotation-driven' 요소에 대한 선언을 찾을 수 없습니다. (0) | 2021.04.14 |
---|---|
[Spring] Static Resources 매핑 (0) | 2020.11.18 |
[Spring] Tomcat version 8.5 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5, 6, and 7 Web modules (0) | 2020.04.26 |
[Spring] 애플리케이션 계층 / 단일 책임 원칙 (0) | 2020.04.21 |
[Spring] project configuration is not up-to-date with pom.xml (0) | 2020.04.12 |
Comments