08_Spring_240402(화)_56일차(0) - Spring Boot - 복수 파라미터 제출 - @RequestParam, @ModelAttribute

soowagger·2024년 4월 2일

8_Spring

목록 보기
3/38

3. @RequestParam 여러개 파라미터

	/* 3. @RequestParam 여러개 파라미터 
	 * 
	 * String[]
	 * List<자료형>
	 * Map<String, Object>
	 *
	 */
	
	@PostMapping("test3")
	public String paramTest3(
			@RequestParam(value="color", required=false) String[] colorArr,
			@RequestParam(value="fruit", required=false) List<String> fruitList, 
			@RequestParam Map<String, Object> paramMap) {
		
		log.debug("colorArr : " + Arrays.toString(colorArr));
		log.debug("fruitList : " + fruitList);
		
		// @RequstParam Map<String, Object>
		// -> 제출된 모든 파라미터가 Map에 저장된다.
		// --> 단, key(name속성값)이 중복되면, 처음들어온 값 하나만 저장된다.
		// ---> 같은 name속성 파라미터 String[], List로 저장 X
		
		
		
		log.debug("paramMap : " + paramMap);
		
		return "redirect:/param/main";
	}

param-main.html

	<h3>
		3. @RequestParam 어노테이션을 이용
		- 여러 개(복수) 파라미터 컨트롤러에서 얻어오는 방법
	</h3>
	
	<form action="/param/test3" method="post">
		색상 :
		Red <input type="checkbox" name="color" value="Red">
		Green <input type="checkbox" name="color" value="Green">
		Blue <input type="checkbox" name="color" value="Blue">
		
		<br><br>
		
		색상 :
		Apple <input type="checkbox" name="fruit" value="Apple">
		Banana <input type="checkbox" name="fruit" value="Banana">
		Orange <input type="checkbox" name="fruit" value="Orange">
		
		<br><br>
		
		상품명 : <input type="text" name="productName"> <br>
		유통기한 : <input type="date" name="expirationDate"> <br>
		
		<br><br>
		
		<button>제출하기</button>

	</form>

4. @ModelAttribute를 이용한 파라미터 얻어오기

	/* 4. @ModelAttribute를 이용한 파라미터 얻어오기 */
	
	// @ModelAtrribute
	// - DTO(또는 VO)와 같이 사용하는 어노테이션
	
	// 전달받은 파라미터의 name 속성값이
	// 같이 사용되는 DTO의 필드명과 같으면
	// 자동으로 setter를 호출해서 필드에 값을 세팅
	
	
	// *** @ModelAttribute를 이용해 값이 필드에 세팅된 객체를
	// "커맨드 객체"라고 부른다 ***
	
	// *** @ModelAttribute 사용 시 주의사항 ***
	// - DTO에 기본생성자, setter가 필수로 존재해야 한!
	
	// *** @ModelAttribute 어노테이션은 생략이 가능하다 ***
	
	@PostMapping("test4")
	public String paramTest4(/*@ModelAttribute*/ MemberDTO inputMember) {
		
		log.debug("inputMember : " + inputMember.toString() );
		
		
		
		return "redirect:/param/main";
	}

param-main.html

	<h3>4. @ModelAtrribue를 이용한 파라미터 얻어오기</h3>
	
	<form action="/param/test4" method="POST">
		ID : <input type="text" name="memberId"> <br>
		PW : <input type="password" name="memberPw"> <br>
		NAME : <input type="text" name="memberName"> <br>
		AGE : <input type="number" name="memberAge"> <br>
		
	<button>제출하기</button>
		
	</form>
package edu.kh.demo.model.dto;

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;


// Lombok : 자주 사용하는 코드를 컴파일 시 자동완성 해주는 라이브러리
// - DTO(기본생성자, getter/setter, toString) + Log

@Getter
@Setter
@NoArgsConstructor
@ToString
public class MemberDTO {

	private String memberId;
	private String memberPw;
	private String memberName;
	private int memberAge;
}

profile

0개의 댓글